Tuesday, November 15, 2011

Gentoo on Lenovo T520

My new laptop is finally here. Lenovo T520 came with Windows 7, and if you ask me that's a bad choice for laptop with these specs. Neither the video (Intel HD), nor the 500GB HDD were made to be used by gamers where Windows is undisputed leader.

So I made up my mind to made a switch and chose Gentoo Linux since I needed better git, ruby and java support, but besides all I wanted to be in control on what's happening with the hardware and software on my system :) From previous installations I found out that Ubuntu does not support odd or older hardware without kernel recompile. On the other hand the software packages in the most popular Linux distro are not the most stable thing (especially Gnome UI stuff).

Since I had enough experience with Gentoo from setting up my development server and the surveillance system machine  I decided that I'll just stick with this source based distro with rolling updates. It is also used by several cloud computing companies, so it looks it's here to stay.

I've done the basic setup almost exactly as recommended in the Gentoo Handbook. The concrete settings are detailed below.

make.conf

I used "native" architecture for GCC which leaves the optimization decision in the compiler. Since T520 has 4 cores the numer of compile/processing threads is set to 5. To speed up the emerge the download is made on background with "parallel-fetch" feature.

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j5"
FEATURES="parallel-fetch -test"
USE="mmx sse sse2 sse3 3dnow 3dnowext \
     dvd dvdr cdr vcd cdda \
     usb wifi laptop ieee1394 \
     lm_sensors \
     bash-completion symlink \
     ftp \
     bzip2 zip unzip 7zip rar \
     jpeg svg jpeg2k png gif mng \
     ffmpeg xvid x264 theora \
     truetype gd \
     mp3 faac faad amr \
     java javascript xml ruby python \
     sqlite \
     ssl sni \
     unicode \
     daemon threads \
     X xvfb dbus hal \
     gtk gnome gdu extras device-mapper policykit cairo \
     -kde -qt3 -qt4 \
     -ipv6"
GENTOO_MIRRORS="http://mirrors.ludost.net/gentoo/ ftp://mirrors.ludost.net/gentoo/ http://distfiles.gentoo.bg/ http://ftp.gentoo.bg/ "
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
ACCEPT_LICENSE="dlj-1.1 Oracle-BCLA-JavaSE skype-eula"
INPUT_DEVICES="evdev synaptics mouse keyboard"
VIDEO_CARDS="intel vesa"
LINGUAS="bg en"


I'm a Gnome user, so the flags are set to disable QT and KDE. The IPv6 is of no use to me currently so I disabled it as well.

I'm Java developer so I accepted Oracle's JDK 1.5 and 1.6 licences to enable installation of the software. Since Oracle changed the 1.6 licence and download pages it is no longer possible to install Java automatically. Fortunately emerge provides quite good hints when you have to download a package manually.

Next I inserted my hardware configuration for X - keyboard, synaptic, external mouse, and Intel HD video card.

Language configuration can also be added in make.conf to enable localization of console, X and Gnome/KDE.

Linux Kernel Configuration

I used the Gentoo's 3.0.6 kernel (gentoo-sources) with this configuration.

LAN setup

In /etc/conf.d/net you can use ifplugd to make the annoying delay on start-up go away, when there is no cable plugged (in the end this is a laptop):
ifplugd_eth0="dhcp"
Of course you will have to install ifplugd as described in the handbook.

Wireless network

The kernel configuration includes drivers for the wireless network on T520. This however is not enough to get it working.

I found out that the network is Intel Centrino Advanced-N and followed Google to this Gentoo Forum Post. The post provides quite good guide on how to identify and emerge the right driver and firmware for your wireless chip.

Gnome 

As a pleasant surprise Gnome provided me with working functional keys out of the box. From changing video output through back-light to sleep buttons everything worked as expected.


Not working 

Currently I don't know how to get the card reader to work.

No comments:

id_rsa.pub: invalid format, error in libcrypto

After I upgraded my Linux and got Python 3.10 by default, it turned out that Ansible 2.9 will no longer run and is unsupported together with...