Difference between revisions of "Installing Debian Lenny on a ThinkPad T60"
(→setting up the trash) |
(→setting up the trash) |
||
Line 487: | Line 487: | ||
#load bits and pieces | #load bits and pieces | ||
if [ -d /etc/bashrc.d ]; then | if [ -d /etc/bashrc.d ]; then | ||
− | for rc in /etc/bashrc.d/ | + | for rc in /etc/bashrc.d/*; do |
. $rc | . $rc | ||
done | done |
Revision as of 05:39, 10 January 2008
Contents
- 1 Debian Lenny on a T60 6371-6NU
Debian Lenny on a T60 6371-6NU
You might also want to check out Debian Etch on a Thinkpad T60 HowTo and Installing_Debian_Lenny_on_a_ThinkPad_T61.
In case you can't decode the Thinkpad model number above, here are the specs (I've left out modem, infrared, cardbus since I haven't ever used them):
Processor | Intel Core 2 Duo (Merom) 1.83GHz |
Graphics Adaptor | Intel Graphics Media Accelerator 950 |
Display | 15.4" TFT display with 1200x800 resolution (widescreen) |
RAM | 1 GB PC2-5300 (upgraded to 2GB) |
Harddisk | 120GB 5400 RPM Hitatchi HTS54161 |
Audio | AD1981HD HD Audio 1.0 controller |
Ethernet | 82573L Gigabit Ethernet Controller |
Optical | LG-Hitatchi HL-DT-ST DVDRAM GSA-4083N Dual Layer DVD+/-RW |
Wireless | Atheros AR5418 |
Biometric | STMicroelectronics Fingerprint Reader |
I'm going to do everything in Linux (i.e. assume that you already have a running linux version running somewhere else).
Installation
These are instructions for getting the most customised, minimal base Debian system running. As such, you can probably go with your gut and ignore some of these steps for example using the "expert" install mode or deselecting all but the base system packages.
- First of all, get the "businesscard" cd image for amd64 if you want to run 64 bit or i386 if you want 32 bit. Note however that going 64 bit no longer means you have to forgoe proprietary software like flash or java. See this article on the "debian adminstration" blog. If you do however go 64 bit you won't be able to use proprietary 32 bit modules in your kernel. Most notably, ndiswrapper won't work with 32-bit windows drivers.
- Burn the cd image to a cd with the command
cdrecord -v debian-testing-amd64-businesscard.iso
You may find that you need to add dev=/dev/cdrom (or whatever your burning device is) to the above command. - Now stick in the newly burned disc and reboot.
- At the "boot:" prompt type "expert (you could also just hit enter, but you won't get as much control over what's about to be installed on your computer).
- Go through the install menu using my answers as outlined below as a guide. You will obviously want to tailor things to your specific situation:
- Choose Language
- Choose Language:
English - Choose a locale:
en_CA (stick with ascii for the default since UTF screws up some terminals) - Choose other locales to be supported:
en_CA.UTF-8
en_GB.UTF-8
en_GB
en_GB.ISO-8859-15
en_US.UTF-8
en_US
en_US.ISO_8859_15
- Choose Language:
- Select a Keyboard layout
- Type of Keyboard:
PC-Style - Keymap to use:
American English
- Type of Keyboard:
- Detect and mount CD-ROM
- Modules to load:
<none> (deselect usb-storage, its not needed unless your using a external USB CD drive to read the install disc)
- Modules to load:
- Load installer components from CD:
- Installer components to load:
<none>
- Installer components to load:
- Detect network hardware
- Modules to load:
<none>(I don't imagine you'd need usb-storage here either unless you were using a USB networking device)
- Modules to load:
- Configure the network
- Auto-configure DHCP:
yes - Hostname:
<omitted> - Domain Name:
<omitted>
- Auto-configure DHCP:
- Choose a mirror of the Debian archive
- Protocol for file downloads:
ftp (might be a tiny bit faster than http, though the latter is less likely not to work if you're behind a draconian firewall. http is also slightly easier because you get a list of available mirrors whereas with ftp, you have to know the address already) - Debian archive mirror hostname:
mirrors.kernel.org - Debian archive mirror directory:
/debian - FTP proxy information:
<blank> (unless you're behind one of the draconian firewalls mentioned above, in which case figure out the proxy to use from your network administrator.) - Debian version to install:
testing
- Protocol for file downloads:
- Configure the clock
- Set the clock using NTP?:
yes - NTP Server to use:
ntp.ubc.ca (though the default provided or any other you prefer should work just as well.) - Select your timezone:
Pacific
- Set the clock using NTP?:
- Detect disks
- Modules to load:
<none> (again not necessary unless you want to install onto a USB drive)
- Modules to load:
- Partition Disks
- Partition Method:
manual - This depends largely on personal preference, and needs, but here's how I set up the disks:
200MB EXT3 /boot
1.0GB swap
15GB XFS /
2GB XFS /var
All remaining disk space XFS /home
I use XFS because this tends to be faster than ext3. Reiserfs is also a good alternative but takes a little longer to mount at bootup. Grub has some problems reading XFS, so I use ext3 for the /boot partition. If you're keeping your windows partition, just leave it alone, we'll get to that in a bit. Once you're done setting things up select "Finish partitioning and write changes to disk. - Write chages to disk?:
yes
- Partition Method:
- Install the base system
- Kernel to install:
linux-image-2.6.22-3-amd64 (or whatever newer one is available by the time you read this).
- Kernel to install:
- Setup users and passwords
- Enable shadow passwords:
yes (duh) - Allow login as root:
yes (unless you're really paranoid) - Root password:
<omitted> - Create a normal user account now?:
yes - Full Name:
<omitted> - Username for your account:
<omitted> - Password:
<omitted>
- Enable shadow passwords:
- Configured the package manager
- Use non-free packages:
yes (unless you have some restrictions ideological or otherwise) - Services to use:
security updates
volatile updates
- Use non-free packages:
- Select and install software
- Participate in package usage survey?:
yes (why not help make Debian even better?) - Choose software to install:
Go with the default Desktop environment, Laptop and Standard System. You could get away with none of these and deal with packages later, but its just easier to let the Debian maintainers do most of the thinking for you.
- Participate in package usage survey?:
- Install GRUB boot loader on hard disk
- Install GRUB 2:
no (for some reason it doesn't work) - Device for bootloader installation:
/dev/sda (unless you have some other bootloader you want to use to chain to GRUB). - Grub password:
<omitted> (don't make this your root password as it ends up in your menu.lst file as plaintext).
- Install GRUB 2:
- Skip LILO (unless you like pain)
- Debconf priority:
- Prompt at or above:
critical (I want to be able to automate updates) - Finish the installation
- Prompt at or above:
- Finish th einstallation
The First Boot: getting the ball rolling
You should boot up to a commandline login prompt (X-Windows hasn't been installed yet). Log in as root. It's now time to install the packages necessary to get things running. You'll find that thanks to the business card installation, you have an up to date system (i.e., aptitude update&& aptitude dist-upgrade won't find any packages needing upgrade. So lets get on with installing all the packages necessary to get things looking a little more like home.
First of all, there are a few things even in the base system that you probably won't need so get rid of them:
aptitude purge nano pcmciautils tasksel tasksel-data vim-common vim-tiny
Of course, you'll want to keep pcmciautils if you plan on using antiquated pcmcia cards. Similarly you may want to keep vim and/or nano if you use those editors. If on the other hand, you're like me, you don't and you'll then want to
aptitutde install emacs
Now if you're like me and you're craving a windowed multitasking work environment before you go any further, you can just do
aptitude install xorg gdm <your favourite window manager (e.g. gnome or openbox)>
Now do a
/etc/init.d/gdm start
And you should get a login screen.
Now do a
df -h
You'll find that the entire operating system including window manager is well under 2.0 Gigs. It's even under 1.0 Gigs if you're using a lightweight window manager like openbox or blackbox. Take your 15GB and shove it Vista!
Xorg.conf
Ah, the infamous xorg.conf. Luckily, since your running Debian lenny on an Intel integrated graphics chip, editing xorg.conf isn't strictly necessary. Intel has gone to a lot of trouble to make this as painless as possible. God help you if on the other hand, you got a model with an ATI X1300 or ATI X1400 graphics card. I made a few modifications to the automatically generated xorg.conf that might be of interest.
Horizontal edge scrolling
Edge scrolling has to be my favourite pointing device feature ever, thus I find it rather annoying that it is only half enabled by default. In particular you'll find that though vertical scrolling works like a charm, horizontal scrolling along the bottom of the touchpad doesn't work. Additionally, I find that the default threshold edge distance to initiate scrolling is a little on the large side for my slender fingers. I also find that the corner button emulation tends to be accidentally activated while using edge scrolling so I disable it. Thus, I have updated the relevant input device section to make use of some of the options documented on the Synaptics Touchpad page
Xinerama
There is also the issue of using dual monitors. You'll be surprised to find that it "just works" if you have an external monitor plugged in. Well, it kind of "just works" if you like having the displays that is. If, on the other hand you want to expand your desktop, you can either do the configuration on the fly with XRandR, or make it permanent by making the appropriate modifications to xorg.conf
Configuring the package manager
The best thing about Debian is the package manager. Thus, you want to make sure it's configured optimally to get the best use out of it before you go any further. Once you're logged in, you can edit the /etc/apt/sources.list file so that it can find more packages than the default. Below is my sources.list file.
# testing - lenny deb ftp://mirrors.kernel.org/debian/ lenny main contrib non-free deb-src ftp://mirrors.kernel.org/debian/ lenny main contrib non-free # stable - etch deb ftp://mirrors.kernel.org/debian/ etch main contrib non-free deb-src ftp://mirrors.kernel.org/debian/ etch main contrib non-free # unstable - sid deb ftp://mirrors.kernel.org/debian/ sid main contrib non-free deb-src ftp://mirrors.kernel.org/debian/ sid main contrib non-free # experimental deb ftp://mirrors.kernel.org/debian/ experimental main contrib non-free deb-src ftp://mirrors.kernel.org/debian/ experimental main contrib non-free # security updates deb http://security.debian.org/ lenny/updates main contrib non-free deb-src http://security.debian.org/ lenny/updates main contrib non-free
You'll notice that I've also included entries for etch and sid in addition to experimental. If you use a different mirror than mirrors.kernel.org, you'll want to make sure that it hosts the experimental branch. This is where we'll find the package for the fingerprint reader. I include stable and unstable for completeness in case there are packages I want that that are only available in unstable, or if I want to revert to a version of a package in stable. Note that the order you specify the branches in the sources.list file makes no difference, thus in order to maintain priority for lenny packages (over sid or experimental which in general have newer packages), I also have an /etc/apt/preferences file with pin priorties:
Package: * Pin: release o=Debian,a=stable Pin-Priority: 300 Package: * Pin: release o=Debian,a=testing Pin-Priority: 600 Package: * Pin: release o=Debian,a=unstable Pin-Priority: 200 Package: * Pin: release o=Debian,a=experimental Pin-Priority: 100
Basically this is saying that unless I specify otherwise, "testing" (lenny) packages are to be preferred over "stable" (etch) over "unstable" (sid) over "experimental". A lower Pin-Priority means lower precedence. If you want to override this precedence, you can either use the aptitude gui and select a specific version to install or add the flag -t <target branch> to your aptitude install <package> command. If you do this in such a way as to select a package that has a newer, higher priority alternative available, it will be upgraded next time you do an aptitude upgrade unless you pin that particular package version (see the relevant section of the apt howto).
Now that we have that sorted out we should do an
aptitude update
If by some chance you get an annoying message like
W: GPG error: <servername> <branch> Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 07DC563D1F41B907 W: You may want to run apt-get update to correct these problems
(especially annoying because it happens when you run apt-get update as well), the solution is to run the following command:
gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 07DC563D1F41B907 && apt-key add /root/.gnupg/pubring.gpg && aptitude update
where you of course replace "07DC563D1F41B907" with what ever public key you get in the orginal GPG error message. Now of course, the reason this is happening is to ensure your security. You don't want to be downloading packages from unknown or forged sources, so don't just go verifying keys willy nilly without thinking about why you might be getting such a message. In particular, if the message appears even though you haven't recently changed your mirror, something fishy might be going on.
Installing Packages
You might notice that even once you have your favourite window manager running, you're still missing quite a bit in terms of software beyond the basic operating system.
Essentials
Here are a few highly recommended packages:
acpi-support | the tools you need to setup the running of scripts in response to acpi events such as Fn-_ key combinations. |
apt-file | allows you to search file names in uninstalled pacakges |
aterm | a lightweight terminal |
cabextract | extract files from windows installation executables |
colordiff | like your old friend diff for identifying dissimilarities between files, but easier on the eyes |
cpufrequtils | init scripts to setup cpu frequency scaling at boot |
cupsys | cups print server (you'll need it if you want to print) |
dash | a light weight bash-like-shell (use it for your init scripts or anything else you want to speed up) |
deborphan | find unused packages |
defoma | Debian font manager - makes activating fonts easier |
emacs-goodies-el | like it says, nice addons for emacs |
flashplugin-nonfree | yep, it works on 64 bit |
gimp | Opensource gui image editor rivalling Photoshop in power, quality and comprehensiveness. |
gv | Ghost View for viewing .ps documents |
hdapsd | Daemon to stop the disk if the accelerometer detects shocks. |
iceweasel | Rebranded Firefox web browser |
imagemagick | Command line image editor and conversion utilities unrivalled in batch processing power. |
laptop-mode-tools | Reduce power consumption by reducing hard disk use while on battery |
less | command line text reader with backscrolling |
libpam-thinkfinger | used to get the finger print reader running |
libtrash | Universal trash can diverts file removal from any program using libc6 so deleted files wind up in ~/Trash |
localepurge | Clean up documentation in unused languages. |
menu | Manage system-wide menus |
msttcorefonts | Microsoft fonts |
ntfsprogs | mount your windows ntfs partition read/write |
ntp | daemon to regularly syncronise system clock with network time servers |
ntpdate | used to do one-off on-demand syncrhonisation with network time servers |
openoffice.org | open source productivity software |
prelink | optimises share libraries for better program load performance |
sleepd | automated sleep daemon |
mlocate | periodically indexes the file system for fast searching |
smartmontools | monitor harddisk health |
sysv-rc-conf | ncurses gui to activate and deactivate init scripts |
ttf-bitstream-vera | bitstream vera true type fonts |
ttf-dejavu | dejavu truetype fonts |
ttf-freefont | free truetype fonts |
unrar | extractor for the archive format popular among hackers |
unzip | extractor for the winzip archive format |
wpagui | gui for the wireless wpa supplicant |
wpasupplicant | the wpa supplicant backend |
xfsdump | for backing up mounted xfs filesystems |
xpdf | for viewing pdf files |
To install all of the above:
aptitude install acpi-support apt-file aterm cabextract colordiff cpufrequtils cupsys dash defoma deborphan emacs emacs-goodies-el flashplugin-nonfree gdm gimp gv hdapsd iceweasel imagemagick laptop-mode-tools less libpam-thinkfinger libtrash localepurge menu msttcorefonts ntfsprogs ntp ntpdate openoffice.org prelink sleepd mlocate smartmontools sysv-rc-conf ttf-bitstream-vera ttf-dejavu ttf-freefont unrar unzip wpagui wpasupplicant xfsdump xorg xpdf
Recommended
Then there are a few package I like that you may also want to check out depending on your preferences/habits.
alsamixergui | nice mixer app |
arping | like ping, but gives you mac address if its available |
bc | arbitrary precision command line calculator (good for scripting) |
bmon | command line network bandwidth monitor |
css-mode | css syntax for emacs |
devilspie | Watches for new xwindows matching configured parameters and acts on them. Very powerful. |
dmz-cursor-theme | Make your cursors a little easier on the eyes |
equivs | for making "ghost" packages to satisfy dependences for example when you compile something from source |
ftnchek | check Fortran syntax |
gawk | extended version of awk |
genisoimage | create cdrom ISO's before burning them. |
gkrellm | performance monitoring gui |
gkrelltop | plugin for above showing top resource consuming processes |
gkrellmwireless | plugin for above showing wireless signal strength |
gparted | graphical partition manager |
gphotofs | for mounting digital cameras |
grip | excellent cd ripping functionality using cdparanoia backend |
gsl-bin | binary files for powerful scientific computing library |
gsl-ref-html | documentation for powerful scientific computing library |
gtkguitune | guitar tuner gui with oscilloscope-like interface |
hdaps-utils | for reading and visualising the accelerometer output |
html-helper-mode | enhanced emacs html syntax |
ibritish | british flavour of ispell |
id3v2 | id3v2 (and v1) mp3 tag reader and editor |
k3b | powerful cd/dvd burning gui |
lastfm | preference based internet radio and social networking |
libgsl0-dev | powerful scientific computing library headers for compiling your own code |
lsdvd | view the contents of a video dvd |
lshw | show comprehensive list of system hardware and specifications |
lsof | display currently open files (good for figuring out what the hell is going on) |
mp3gain | losslessly normalise mp3's |
mp3rename | rename mp3's based on id3 tags |
mutt | powerful terminal-based email client |
myspell-en-gb | british myspell (used by open office) |
nfs-common | for mounting nfs drives |
nmap | for probing open ports locally and remotely |
nxml-mode | xml syntax for emacs |
obconf | configuration gui for openbox |
offlineimap | sync imap folder so you have a local copy accesible when no internet is available |
openbox | versatile lightweight window manager |
openssh-server | allows remote login |
pbzip2 | make full use of the dual core when bzipping things. |
post-el | emacs email syntax intended for use with mutt |
powertop | see what's causing your processor to wake up and use more battery power |
pypanel | lightweight configurable panel |
qiv | quick image viewer good for slide shows |
rsync | efficient remote and local copying. Copies only differences and ssh for secure communication |
samba | windows file server/client software |
screen | powerful detachable/reattachable terminal interface |
smbfs | allows mounting of windows shares |
sox | command line audio recording and playing utilities |
sshfs | allows mount of remote trees on ssh server machines with no special remote configuration |
sux | su that passes proper Xauthority |
sysstat | command line system monitoring |
udftools | tools dealing with the filesystem common in optical media |
unclutter | hide of mouse cursor when its not being used. |
unison | keep local and remote filesystems in sync using the rsync protocol and ssh |
urlview | open urls in mutt with your favourite browser |
wbritish-huge | large british words list |
whois | detailed domain querying command |
wmctrl | control window manager from the command line |
wodim | command line cd buring (successor to cdrecord) |
xclip | command line x clipboard tool feed standard input into clipboard, extract clipboard to standard output. |
xmms | x multimedia system winamp-like mp3/media player |
xmms-cdread | read cd's via the digital link rather than rely on that annoying analogue cable |
xmms-crossfade | for gapless playback |
xmms-shell | for command line control of xmms |
xmms-skins | skins for xmms |
xosview | performance monitor gui (key feature is the irq monitor) |
xscreensaver | locks the screen after inactivity |
To install all of the above:
aptitude install alsamixergui apt-file arping bc bmon colordiff css-mode deborphan devilspie dmz-cursor-theme equivs freeglut3 ftnchek gawk genisoimage gkrellm gkrelltop gkrellmwireless gparted gphotofs grip gsl-bin gsl-ref-html gtkguitune hdaps-utils html-helper-mode ibritish id3v2 k3b lastfm libformsgl1 libgsl0-dev lsdvd lshw lsof mkisofs mp3gain mp3rename mutt myspell-en-gb nfs-common nmap nxml-mode obconf offlineimap openbox openssh-server pbzip2 post-el powertop pypanel qiv rsync samba screen smbfs sox sshfs sux sysstat udftools unclutter unison urlview wbritish-huge whois wmctrl wodim xclip xmms xmms-cdread xmms-crossfade xmms-shell xmms-skins xosview xscreensaver
A few /etc configurations
default terminal
Right now, the system wide default for the terminal is gnome terminal. This is second only to Konsole in bloat. If you want to keep things streamlined, change the systemwide default to aterm (which you downloaded above).
ln -sf /usr/bin/aterm /etc/alternatives/x-terminal-emulator ln -sf /usr/share/man/man1/aterm.1.gz /etc/alternatives/x-terminal-emulator.1.gz
bash completion
It's also nice to have more extended bash completion enabled. This will give you such niceties as completion of man at if you hit tab, or give you suggestions as to what you can ifup. Trust me, if you're going to be using the command line, you're going to want to open up /etc/bash.bashrc and uncomment the lines
# enable bash completion in interactive shells #if [ -f /etc/bash_completion ]; then # . /etc/bash_completion #fi
setting up the trash
Unfortunately, unlike most other Debian packages, libtrash doesn't start working right after it's installed. You have to enable it. For starters, create the file /etc/bashrc.d/libtrash.bash and put the following in it:
# This sets the preloaded library for libtrash, which moves deleted files # to a user's trash directory LIBTRASH=/usr/lib/libtrash.so # Only for regular users! if [ `id -u` -ge 500 ] ; then LIBTRASH_LOADED=NO for L in $LD_PRELOAD;do if [ "$L" == "$LIBTRASH" ] ; then LIBTRASH_LOADED=YES fi done if [ "$LIBTRASH_LOADED" == "NO" ] && [ -f $LIBTRASH ]; then export LD_PRELOAD="$LIBTRASH $LD_PRELOAD" fi fi unset LIBTRASH_LOADED unset OTHER_LOADED # Some useful aliases alias hardrm="TRASH_OFF=YES rm" alias trash_on="export TRASH_OFF=NO" alias trash_off="export TRASH_OFF=YES"
Now go into /etc/bash.bashrc and add the lines
#load bits and pieces if [ -d /etc/bashrc.d ]; then for rc in /etc/bashrc.d/*; do . $rc done fi
Build your own kernel (the Debian way)
Wireless with madwifi
I had the brilliant idea of getting the 11n capable ThinkPad_11a/b/g/n wireless adaptor which is really just an Atheros AR5418. In retrospect, I should have gone with a more sensible choice like the Intel Pro which is directly supported in the mainline kernel. I think it's fair to say that Atheros is the ATI of wireless cards in terms of Linux support. It works, but you'll pull your hair out in the process. Since the AR5418 is so new, the latest release of madwifi doesn't even support this card. However the latest subversion snapshot does (though of course only up to 11g).
As you've probably noticed I'm going with a 64 bit system. Thus the more stable ndiswrapper won't work because the windows driver supplied by Lenovo is 32bit only. But don't go thinking that going 32 bit and using ndiswrapper will get you 11n. It won't.
That said, to install the latest snapshot of madwifi, you first need to install subversion.
aptitude install subversion
If you skipped the kernel compilation step above and are using a stock Debian kernel, you will also need to install your kernel headers.
aptitude install linux-headers-`uname -r`
Where "`uname -r`" is of course evaluated by the shell the currently running kernel version.
Now follow the howto. Note the note at the end about changing the name of the device to wlan0. This was written by me, so it's fair to assume that you'll encounter the same thing using Debian.
wpa_supplicant
wpa_gui is quite a powerful applications that lets you interact with a running wpa_supplicant in an intuitive way. It allows you to scan and connect to available networks as well as save and delete preferred networks. By default however wpa_gui has to be run as root because only root has permissions to affect wpa_supplicant. To remedy this, ensure that your wpa_supplicant.conf has the global settings
ctrl_interface_group=netdev update_config=1
near the top of the file. "netdev" is the name of the group which is allowed access to the wpa_supplicant interface and update_config allows you to save changes to your preferred networks. You now need to add yourself to the netdev group so you can run wpa_gui.
adduser <you> netdev
You'll be added to the group after completely logging out and logging back in. The only minor annoyance is that wpa_gui is still located in /usr/sbin which is not in your default path. As such, you might want to create a symbolic link to it in /usr/bin/
ln -s /usr/sbin/wpa_gui /usr/bin/
If you want maximum control over how various wireless networks are setup, you can of course edit wpa_supplicant.conf directly. You can get a comprehensive list of examples by typing the command
zless /usr/share/doc/wpasupplicant/examples/README.wpa_supplicant.conf.gz
Don't bother however putting any comments in the wpa_supplicant.conf file since these will be erased if you have the update_config=1 parameter set as described above.