Update (11/29/08): Fedora Core 10 on a Lenovo ThinkPad T61

More than a year after I installed Fedora 7 on my ThinkPad T61, I decided to upgrate it to the latest Fedora. That was a great decision. Fedora has been improved a lot. You don't need Tux-on-Ice kernel to do suspend any more. Now T61 suspends and hybernates flawlessly. Also the internal microphone works fine now.

First, upgrade using the Fedora Core 10 DVD. You will need at least 1GB extra space in the / partition.

Problems and their solutions:


Fedora Core 7 on a Lenovo ThinkPad T61


My laptop configuration:

Lenovo ThinkPad T61
System Processor: Intel Core 2 Duo T7500 (2.2GHz 800MHz 4MBL2)
Operating System: Windows XP Professional
Display Panel: 15.4 WSXGA+ TFT  (1680x1050 native resolution)
System graphics: Intel GMA X3100 GM965 (Integrated Intel Graphics Media Accelerator)
Total memory: 2 GB PC2-5300 DDR2 SDRAM 667MHz SODIMM Memory (2 DIMM)
Hard Drive: 160GB Hard Disk Drive, 5400rpm (HITACHI HTS541616J9SA00)
Optical device: DVD Recordable 8x Max Dual Layer, Ultrabay Slim (MATSHITA DVD-RAM UJ-852)
Audio device: Intel Corporation 82801H (ICH8 Family)
Ethernet controller: Intel Corporation 82566MM Gigabit Network Connection 
Wireless card: Intel PRO/Wireless 3945ABG
Battery: 6 cell Li-Ion Battery

General comments: It has a far more solid construction than my old Dell Latitude D600, which had one latch broken few months after I bought it. If you don't use 3D graphics frequently and you are not interested in 3D games, then the X3100 is a nice video card. Running glxgears, it gives a decent 1200 FPS on my high resolution screen. Also the NVIDIA video card may drain your battery faster and, as I heard, may require the fan to run continuously.

Currently, everything I need works fine. I haven't tested modem, firewire, PCMCIA, and DVD-RW (but I have tested DVD-RAM).

Note: My installation instructions are based on the excellent web pages:

I am writing this document as a service to the Linux community. Please email me only if you want to make improvements/corrections to this document. I do not have time to answer any questions.


Installation of Fedora Core 7 (FC7)

I first downloaded FC7 DVD ISO file (F-7-i386-DVD.iso) from a mirror site and burned it onto a DVD. Then, I downloaded the most recent version and burned it onto a CD the SystemRescueCd.

Pre-installation

On XP Windows, I selected from main menu All Programs -> ThinkVantage -> Create Recovery Media, and I created 1 CD and 1 DVD to be used for rescue in case something goes wrong. This took me about 30 minutes. Then I defragmented the disk by selecting All Programs -> System -> Defragment from main menu. This also takes long time but it makes sure that the partition manager will not corrupt the Windows XP. Then I rebooted with the SystemRescueCd in, which booted the CD. The SystemRescueCd used was based on 2.6.22 Linux kernel, which recognized both the CD and the SATA disk. After the SystemRescueCd boots, I pushed enter to boot Linux. Then I executed startx to get X windows. Then on a Terminal, I executed gparted. On gparted, I saw that there are two partitions: /dav/sda1 (the Windows XP partition) and a 6GB partition /dev/sda2, which is the Thinkpad rescue and recovery partition. I selected /dev/sda1 and chose resize on the menu. On resize, I clicked on the right end of the partition image and slided it to the left to make the partition smaller. I left 40GB for XP. There was no need to create any new partitions at that point. I saved the gparted updates, removed the SystemRescueCd from the DVD drive, and rebooted to enter XP Windows. Then XP Windows did a disk recovery to cope with the new partition size, but everyrhing turned out to be OK.

Installation

Unfortunately, the linux DVD driver for T61 (Adaptec aacraid driver) is faulty for kernel 2.6.21 (used by FC7) but OK for kernel 2.6.22. Although T61 can boot on the FC7 DVD, it cannot install the packages from it (if you have a different CD/DVD drive, it would probably work). So I had to do the installation through FTP (skip the next section if you are able to install from the DVD).

Installation through FTP

I connected the T61 to another Linux box through a router. I put the DVD iso file on the linux box. I enabled ftp by changing the firewall to allow FTP (Security Level Configuration: Firewall Options: trusted services: FTP) and did:
yum install proftpd
service proftpd start
mkdir FC7
mount -o loop F-7-i386-DVD.iso FC7
Then I ftp'ed on the linux box from another PC to see if it was OK. Then I booted the iso DVD on T61 and, when it complained that it cannot install FC7 from DVD, I chose non-anonymous ftp on my linux box.

Package Installation

When asked, I chose "create custom layout" for my FC7 partitions to use the disk druid to create my partitions manually. On disk druid, I added a 100MB /boot partition, a 2GB swap partition (needed also for hibernation), a 10GB / partition, while the rest was left to my /home partition. When asked for packages, I chose:
Office and Productivity - yes
Software Development - yes
Web server - no
I selected both Gnome and KDE desktops. For Firewall settings, I enabled firewall allowing SSH only, but I disabled SELinux. I setted-up the NIC ethernet network to be DHCP. I also created my user account.


Post-installation

After I booted FC7 for the first time, I logged-in as a root using Gnome (the default desktop), and tested the ethernet network. It was OK (otherwise, you should bring the network up using System -> Administration -> Network on the Gnome menu). FC7 used my native resolution 1680x1050 but Gnome (and KDE) put the panels on screen as if the screen had smaller size. Then I setted up yum, and updated the system:

echo 'XXXX ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
rpm -ihv http://rpm.livna.org/livna-release-7.rpm
yum update
where XXXX is my user account. Although, the last command updated 415 packages (downloaded 900MB) and took about one hour, you should not skip this step. I fixed the screen problem by editing the /etc/X11/xorg.conf file. I added:
Section "Monitor"
Identifier "TVOutput"
Option "Disable" "true"
EndSection
and then added the following in the Device Section
Option "monitor-TV" "TVOutput"
Please see my xorg.conf file. Then I rebooted into the latest kernel (2.6.22.7) installed by yum.

Hibernation

Hibernation dumps the memory content into the swap partition and then shuts down. In contrast to suspend in RAM, it doesn't consume any power during hibernation. The best and easiest way to get suspend to disk is to install the suspend2 kernel, from Software Suspend on Linux (Tux on Ice). Just do the following as root:
cd /etc/yum.repos.d/
wget http://mhensler.de/swsusp/download/suspend2.repo
yum install kernel-suspend2
Then reboot. When the grub menu comes (the boot screen), select to boot into your new kernel (should have the word tuxonice on the grub title). Then you can hibernate the laptop by just executing the command
sudo /usr/sbin/hibernate.
Note that, instead of this command, it is better to use a script file to bring-down/up the network before/after hibernation. Here is my script. If you use encrypted partitions, you should also bring them down/up before/after hibernation (in the script file), otherwise all your passwords will be dumped to the disk as is! For the same reason, you should close all SSH connections. Hibernation works perfectly for me. I never shutdown the laptop anymore; I just hibernate it.

Update (11/19/07): With kernel 2.6.23.1-21_1.cubbi_tuxonice.fc7 I have never had any crash/reboot for weeks, although I hibernate T61 many times every day.

Suspend

After you install Tux on Ice, you do: yum update pm-utils. You can enable suspend to RAM by adding the lines:
      <match key="system.hardware.version" string="ThinkPad T61">
        <merge key="power_management.quirk.s3_bios" type="bool">true</merge>
      </match>
to the file /usr/share/hal/fdi/information/10freedesktop/20-video-quirk-pm-lenovo.fdi. You need also to add the lines:
        <match key="/org/freedesktop/Hal/devices/computer:system.hardware.version" string="ThinkPad T61">
          <merge key="laptop_panel.brightness_in_hardware" type="bool">true</merge>
        </match>
to the file 10-laptop-panel-hardware.fdi in the same directory to enable brightness adjustment. Then edit the file /boot/grub/crub.conf and add the option acpi_sleep=s3_bios to the kernel parameter. For example, my kernel line is:
kernel /vmlinuz-2.6.22.7-85_1.cubbi_tuxonice.fc7 ro root=LABEL=/ rhgb quiet acpi_sleep=s3_bios
Then you reboot and you try pm-suspend as root (or you can use my my script). Here is my grub.conf (you should use your own kernel number shown in uname -a).

Wireless network

No problem here. I did:
modprobe iwl3945
iwlist scan
The last commands lists the local wireless networks. Then I selected System -> Administration -> Network from the main menu, and I deactivated eth0 (I also edit it to make it not attempt to activate on startup), Then I did:
service NetworkManager restart
service NetworkManagerDispatcher restart
modprobe -r iwl3945
modprobe iwl3945
This creates a new applet on the Gnome panel for network management. I clicked on the applet to see the available wireless networks and connected to mine. Finally, I enabled these two services using System -> Administration -> Server Settings -> Services. You can get more details on the current status of the network manager by executing nm-tool.

Miscellaneous

Here are some multimedia packages installed from repositories.
yum -y install xmms xmms-mp3 xmms-faad2 gstreamer-plugins-ugly gstreamer-plugins-bad libmad libid3tag grip
rpm -ihv http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
yum -y install AdobeReader_enu flash-plugin
yum -y install xine xine-lib xine-skins xine-lib-extras-nonfree libdvdcss
yum -y install mplayer mplayer-gui mplayer-skins mplayer-fonts mplayerplug-in lame
yum -y install videolan-client
yum -y install yumex kdegames xfig gv gnuplot kile latex2html tetex-xdvi
yum -y install thunderbird screen dvdauthor ffmpeg avidemux SDL_mixer gftp
You may also need to setup the keys for ThinkPad
yum -y install tpb
although this didn't do anything for me. I just used the Gnome way for changing buttons for sound: I went to System -> Preferences -> Personal -> Keyboard Shortcuts and set the sound buttons. To run Xine when a DVD movie is inserted in the drive, I selected System -> Preferences -> Hardware -> Removable Drives and Media -> (Multimedia -> set it to xine). The LCD brightness is adjusted using a gnome applet and the frequency scaling is done using the gnome applet, called CPU frequency monitor.

I downloaded and installed Acrobat Reader. I downloaded Real Player and installed it using

rpm -Uiv RealPlayer10GOLD.rpm
To play DVD video using Xine you need to install the codecs:
mkdir /usr/local/lib/win32
wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2
gtar xjvf essential-20061022.tar.bz2
mv essential-20061022/* /usr/local/lib/win32/
ln -s /usr/local/lib/win32 /usr/lib
To use Sun's Java, I downloaded jdk-6u2-linux-i586-rpm.bin and did
yum -y install compat-libstdc++-33
chmod +x jdk-6u2-linux-i586-rpm.bin
./jdk-6u2-linux-i586-rpm.bin 
ln -s /usr/java/jdk1.6.0_02/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugins
/usr/sbin/alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_02/bin/java 1601
/usr/sbin/alternatives --install /usr/bin/javac javac /usr/java/jdk1.6.0_02/bin/javac 1601

Secure VNC viewer

Here is a tutorial how to setup a secure VNC connection from your laptop to your office workstation. If you haven't used VNC before, you should try it. It's far faster than ssh -X connections if you want lots of X graphics, because it's based on framebuffers instead of X events. On your office workstation you do (as user):
vncserver
for the first time to create a VNC password and to setup directories. Then you edit the file .vnc/xstartup so that it has only the lines:
#!/bin/sh
unset SESSION_MANAGER
startkde &
This starts KDE. If you want Gnome, you put gnome-session instead of startkde. Note that you cannot use the same window manager for the same user twice. Then kill the vncserver
vncserver -kill :1
and start it again:
vncserver -geometry 1680x1050
so that it creates a full screen for the T61. On T61, every time you want to connect, you do:
vncviewer -via your.workstation.com localhost:1 -Fullscreen
where your.workstation.com is the IP address of your workstation. It will ask for your account password (for ssh) and then your VNC password (on a popup window). You exit by hitting F8 and selecting exit.

If you want to do the same thing from Microsoft Windows, you need to download VNC and PUTTY. On PUTTY, you create a new SSH session to your.workstation.com (port 22) and add to the SSH Tunnels the following tunnel. Source port 5901 and Destination your.workstation.com:5901. Push Add and go back to Sessions to give a name to the connection and save it. Then you Open it and connect to your.workstation.com. Then you start VNC and you use the server localhost:1

Encrypting a partition

Here is another tutorial on how to encrypt a partition using LUKS (which allows changing and having multiple passwords). It is based on Encrypted Device Using LUKS. Say you want to encrypt an empty partition /dev/sda99. You first need to think of a strong password at least 20 chars long. You do the following for the first time (Note: this will destroy all data in /dev/sda99):
dd if=/dev/urandom of=/dev/sda99
mkdir /mnt/cr
modprobe aes
cryptsetup -v -y -c aes-cbc-essiv:sha256 -h sha512 -s 256 luksFormat /dev/sda99
cryptsetup luksOpen /dev/sda99 cr
mkfs.ext2 /dev/mapper/cr
when asked by cryptsetup, you say YES (in uppercase). The dd command fills the disk with random data. It takes about 15 mins per GB for an external USB disk. Every time you want to open the partition, you execute the script:
cryptsetup luksOpen /dev/sda99 cr
mount -t ext2 /dev/mapper/cr /mnt/cr
and everytime you want to close it, you execute the script:
umount /mnt/cr
cryptsetup luksClose cr
If you don't have any partition available, you can create a large file using dd and then bind a loop device to this file using losetup. Then use the loop device as a partition (read the losetup manual).

Note: you should never hibernate while encrypted partitions are mounted, except if your swap partition is encrypted too. (I heard that tuxonice can encrypt the memory content when it dumps it to the swap, but I haven't tried it.)

Nice tricks to know

Install xlockmore using yum and use xlock in your hibernate and suspend script files for better security. Alternatively: use gnome-screensaver-command -l, if gnome-screensaver is running,

If you want to have multiple user sessions on the same machine, you can use

gdmflexiserver
which throws you to the gdm login session without logging you out. Then you can login as a different user and then later you go back to your old session (by executing gdmflexiserver again).

If you want to dump a real-time radio stream to an MP3 file to listen on your iPod, you can use the VLC media player. You first store your radio station in the VLC playlist, you select from the File menu the Wizard, and then select Transcode/Save to file.

If you want to use a remote file system through ssh, you can use sshfs, instead of nfs.

Consider using azureus as a bittorrent client (which can be installed using yum). You need to allow a TCP/UDP port in your firewall settings within some range, as described by azureus.

Sound

Need to fix the sound. The snd-hda-intel driver for the Intel sound card is faulty. I read that they fixed it in the 2.6.22.10 kernel, which will probably be available shortly. If you can't wait, you can patch and recompile the kernel source by following the links on the top of this page.

Update (10/31/07): I installed the new suspend2 kernel 2.6.23.1-10_1.cubbi_tuxonice.fc7 using:

yum update kernel-tuxonice
which fixed the problem (after reboot). Don't forget to enable sound by selecting System -> Preferences -> Personal -> Volume Control, and by unmuting PCM on Playback and enabling speaker and headphone on Switches (you may want to mute microphone to eliminate noise). Also you may have to enable sound by executing alsamixer.

Update (11/05/07): Microphone doesn't work although it makes noises.

External Monitor

Update (01/11/08): To connect a VGA external monitor or a projector to display a copy of the LCD screen do as root:

xrandr --output LVDS --auto --output VGA --auto --output TMDS-1 --auto
For this to work, your /etc/X11/xorg.conf file should have:
Section "Monitor"
        Identifier  "TVOutput"
        Option      "Ignore" "true"
EndSection
If the projector supports the LCD resolution (1600x1050), the copy will be exact. Otherwise it will display the upper left part of the LCD screen. To return back to LCD only:
xrandr --output LVDS --auto --output VGA --off --output TMDS-1 --off
Note that if you do fullscreen on acroread or ooffice, it uses the LCD native resolution. If you want to change the resolution, you do for example:
xrandr -s 1024x768
You can see the available LCD and VGA resolutions using xrandr -q.

Problems

A major problem is that the hal deamon doesn't recognize the battery very well. If you remove the battery when computer is on and then you put it back, the gnome PM applet doesn't show the battery present (doesn't display the remaining charging time). If you do lshal and see the BAT0 entry, it says battery.present = false, while the file /proc/acpi/battery/BAT0/state says that it's present. One needs to do '/etc/init.d/haldaemon restart' everytime hal does this. I hope they fix this in a future kernel.

I couldn't set up my Dell Laser Printer 1720 because there wasn't any way to set it up as a generic PCL 6 printer. CUPS selection didn't work. So I had to copy my old /etc/cups/printers.conf files and now it works. I don't know why the removed the generic PCL option from the CUPS druid.


Last modified: 05/10/10 by Leonidas Fegaras