My experience with Ubuntu

Let me talk about my first experience with Ubuntu. But before that I had to state that my previous experience with Linux was somewhat limited. I did play a bit with Linux at around 2003. I also have couple of OpenWRT routers that are Linux based. I was able to do quite a lot with these routers.

Anyway, back to Ubuntu. We had quite old server that was running Ubuntu 16.04.5 LTS and I have to install exactly the same version and necessary software. At the beginning I couldn’t find 16.04.5, but I was able to find 16.04.1 and I decided to install it and then later upgrade it to 16.04.5.

Firstly, I accidently install regular Ubuntu with desktop etc. To my surprise it didn’t find network drivers and desktop experience was very slow. This machine has Intel I219 network card and Intel HD 620. I believe that both quite old and I expected that Ubuntu will have drivers for them. But to be honest I declined offer to download everything latest immediately after update because I needed exactly the same version of on old server. Interestingly enough Ubuntu was able to find wireless drivers and I was able to connect to network and internet.

Then I did realize that I need server edition. So, I downloaded server edition and installed it. During installation it did complain that it wasn’t able to find any network drivers. Anyway, I did continue installation and soon enough I had Ubuntu 16.04.1 on that computer. Next task is to install network driver.

If I had the same problem with Windows, I will download network drivers on my flash drive on another computer and then install it from flash drive. But after spending quite some time I did realize that it is not possible to download driver in binary form. Apparently, Linux way is to download source code, compile and then install. After I downloaded and copied source to that machine, I found that make package is not installed on that machine. And to install that package I need internet. Bummer.

At that moment I know that driver my network card called e1000e. To my surprise Ubuntu has this driver but when I attempted to start it, I got error message symbol is not resolved or something like that. Looks like it was incorrectly compiled or perhaps missing some dependencies.

Then I did realize that last step of installer provided choice to install like OpenSSH server, mail server etc. and one of the choices was “Manually install packages”. And then my though was that installation definitely have packages, I just need to install them from CD. So, I did restarted installation, put check in “Manually install packages” but unfortunately it didn’t change anything. I still wasn’t able to select which packages to install after installation. After a lot of searching internet I finally found that it is possible to treat USB flash drive that I installed Ubuntu from as source of packages. Most articles explain how to do it for CD or DVD, but this method doesn’t work with USB. Finally I found way and finally I was able to install make and build-essential package. Great! Finally, I was able to build network driver and install it. Little bit of playing with configuration and finally I have a network.

Ok, time to upgrade to 16.04.5 from internet. Upgrade was simple and smooth except that now I lost network again. Oops. Well, my thought was that perhaps kernel changed, and I need recompile driver again. No problem. But when I attempted to compile driver, I found that now kernel headers are missing. I still have kernel headers for 16.04.1 but not for 16.04.5. And I cannot install them from USB flash drive because it has 16.04.1 header files. Damn.

At this moment I know that I should also install kernel headers of specific version when I do upgrade, or perhaps provide different switch like dist-upgrade to apt-get. But by that time, I actually found 16.04.5 image, so I did reinstall 16.04.5. It wasn’t exact version I wanted but kernel was I think 131 while I needed 132, so I decided that it was acceptable.

Again in 16.04.5 I found driver e1000e and this time it didn’t complain and doesn’t work either. But after installing packages and recompiling network driver everything works fine.

I found that it is pity that by default Linux does not configure network by default. Most configurations use DHCP anyway and it will be way easier. But because there is no autoconfiguration I had to change file /etc/network/interface. Thanks god, that by default Ubuntu has nano editor because editing configuration files in vim is huge pain.I had to add following lines:

auto en0
iface en0 inet dhcp

And everything started working fine. Then I did install many packages as on server. Some of them were in own repositories and quite old one. And somewhere between network adapter changed its name to em1. So, I lost network again. And by that time, I moved that PC to server rack, so I had to go to server room and play with computer there. Renamed en0 to em1 in /etc/network/interface and everything is working again.

As conclusion it was quite interesting experience. I really like conception of packages. You need to install python with all its dependencies? No problem, one command line and you are done. You can remove it on one command as well. What is annoying that it is not possible to have binary driver. I don’t know what is reason behind, but it could be nice to be able to download binary version. Perhaps there is other way to compile it somewhere and then copy it. Anyway, it was challenging but I did overcome all challenges and now that server is working and doing its job.