Installing Ubuntu Breezy on a Dell Inspiron 6400
Hardware
- Intel Centrino Duo T2400 (Pentium M dual core) 1.83 GHz
- 15.4 inch WXGA LCD (display resolution: 1280x800 @ 60Hz)
- 256 MB ATI Radeon Mobility X1400 HyperMemory
- 1GB Shared Dual Channel DDR2 SDRAM at 533MHz, 2 DIMM
- 8x internal DVD+/-RW drive
- 80 GB SATA hard drive
- Broadcom 440x 10/100 ethernet card
- Intel Pro/Wireless 3945ABG (802.11a/b/g wireless card)
- Ricoh Secure Digital/MMC card reader
- Firewire port (IEEE 1394)
- 1 PCMCIA slot (supported by yenta_socket)
- Conexant HDA D110 MDC V.92 modem (winmodem)
- Synaptics PS/2 touchpad
Works
- Running with both CPUs detected (not out-of-the-box; after
kernel recompile)
- 2D and 3D acceleration and 1280x800 resolution (using ATI
8.25.18
display drivers)
- Wireless (not out-of-the-box)
- Ricoh SD card reader (not out-of-the-box; after kernel
recompile with vanilla 2.6.17-rc1)
- Sound
- USB
- Synaptics touchpad
Not Tested
- DVD/CD burning (probably fine after installing cdrdao)
- PCMCIA
- Firewire
- Conexant winmodem
- Suspend-to-disk (hibernate) / Suspend-to-RAM (sleep)
Note: For
details on others' experiences with suspend-to-disk and 3D acceleration
with Intel 945GM graphics, see here.
For Chris DeJong's experiences with getting Ubuntu Dapper working with
the Inspiron 6400, see here.
Base Installation
I pre-partitioned my hard drive for a dual-boot setup with Windows
prior to installing Ubuntu Breezy. The base installation was mostly
straightforward, with a few gotchas:
- Remembering to select "manually edit partition table" at
that point in the install; fortunately, Ubuntu doesn't commit partition
table changes right away
- A few times during package installation, Ubuntu would throw
stack traces onto my screen:
- APM BIOS was not found (it shouldn't be; like most modern
laptops, this is now ACPI), but the packages continued installing even
when I couldn't see the installation progress bar
- NTFS-fs error; packages continued to install and after
installation I was able to mount NTFS read-only without
problems
- Configuring xserver-xorg. Ubuntu automatically detects the
ATI card and selects "ati" as the driver; then it attempts to start the
X server but the X server won't start.
The solution is to edit the relevant section of /etc/X11/xorg.conf:
Section "Device"
Identifier "ATI Technologies, Inc. ATI Default Card"
#Driver "ati"
Driver "vesa"
BusID "PCI:1:0:0"
EndSection
and
change "ati" to "vesa".
Getting the dual core CPUs recognized, the wireless card, and
the Ricoh SD card reader working
The sdhci driver for the Ricoh SD Card Reader has been merged in the
main kernel tree starting with 2.6.17-rc1, so that is the kernel
version that I used for everything.
References:
For compiling kernels --
http://newbiedoc.sourceforge.net/system/kernel-pkg.html
http://www.falkotimme.com/howtos/debian_kernel2.6_compile/
For Ricoh SD card reader --
http://mmc.drzeus.cx/wiki/Linux/Drivers/sdhci
http://www.disgruntledgoat.com/content/useful/gentoo_on_inspiron630m.php#cardreader
For Intel(R) Pro/Wireless 3945ABG wireless card --
http://ipw3945.sourceforge.net/
http://ipw3945.sourceforge.net/INSTALL
http://www.ubuntuforums.org/showthread.php?t=140085
http://www.ubuntuforums.org/showthread.php?t=144820
Getting the wireless card firmware recognized --
http://www.openthought.org/blosxom.cgi/2006/02/13
Stage I: Compile and install latest kernel with patches
Downloaded kernel source (2.6.16 only,
not any of the subreleases such as 2.6.16.5; thanks to Sebastian Ortiz
for pointing this out) and prepatch (2.6.17-rc1) from
kernel.org.
Move the source and prepatch to /usr/src and unpack them:
sudo mv linux-2.6.16.tar.bz2 /usr/src
sudo mv patch-2.6.17-rc1.bz2 /usr/src
cd /usr/src
sudo bunzip2 patch-2.6.17-rc1.bz2
sudo tar -xvjf linux-2.6.16.tar.bz2
sudo ln -s linux-2.6.16 linux
Patch the kernel 2.6.16 with the prepatch 2.6.17-rc1:
sudo cp patch-2.6.17-rc1 linux/
cd linux/
sudo patch -p1 < patch-2.6.17-rc1
Copy existing kernel configuration to /usr/src/linux:
cd /usr/src/linux
sudo cp /boot/config-2.6.12-10-386 .config
(or whatever working .config file from previous 2.6.x kernel; mine
is here if you want
to use that)
Install ncurses development package (required for the next step 'make
menuconfig'):
sudo apt-get install libncurses5-dev
Run 'make menuconfig' to set up kernel from .config file
sudo make menuconfig
You can check/change the kernel configuration here --
- I set ext3 file system support to compiled-in:
File systems ->
<*> Ext3 journalling file system support
[*] Ext3 extended attributes
[*] Ext3 POSIX Access Control Lists
[*] Ext3 Security Labels
- Optimize kernel for Pentium M CPU:
Processor type and features ->
Processor family ->
Pentium M
- Enable multiple processors (CPUs):
Processor type and features ->
[*] Symmetric multi-processing support
(8) Maximum number of CPUs (2-255) (NEW)
[ ] SMT (Hyperthreading) scheduler support (NEW)
[*] Multi-core scheduler support (NEW)
- Both MMC support and Secure Digital Host Controller
interface support as compiled-in. This needs
to be compiled-in, I tried it with just modules and it detects the
drive but doesn't create a block device!
Device drivers ->
MMD/SD Card support ->
<*> MMC support
[*] MMC debugging
<*> MMC block device driver
<*> Secure Digital Host Controller Interface support (EXPERIMENTAL)
<*> Winbond W83L51xD SD/MMC Card Interface support
- All SATA drivers as modules:
Device drivers ->
SCSI device support ->
SCSI low-level drivers ->
<M> Serial ATA (SATA) support
<M> AHCI SATA support
<M> ServerWorks Frodo / Apple K2 SATA support
<M> Intel PIIX/ICH SATA support
[etc.]
- Enable iptables modules (needed these to work
with Shorewall firewall):
Networking ->
Networking options ->
Network packet filtering (replaces ipchains) ->
Core netfilter configuration ->
<M> Netfilter netlink interface
<M> [and everything else in this section]
<M> Netfilter Xtables support (required for ip_tables)
<M> [and everything else in this section]
IP: Netfilter configuration ->
<M> IP tables support (required for filtering/masq/NAT)
<M> [everything up to, but not including, ARP tables support]
- Ensure that Wireless LAN drivers (non-hamradio) and
firmware hotplug capability are compiled-in:
Device Drivers ->
Network device support ->
Wireless LAN (non-hamradio) ->
[*] Wireless LAN drivers (non-hamradio)
Generic Driver Options ->
<*> Userspace firmware loading support
- Enable WEP and WPA support provided by the Linux kernel:
Cryptographic options ->
<M> AES cipher algorithms
<M> AES cipher algorithms (i586)
<M> ARC4 cipher algorithm
<M> Michael MIC keyed digest algorithm
Library routines ->
<*> CRC32 functions
and save the new .config.
Install kernel-package to get the program (make-kpkg) that compiles
kernels into a Debian package:
sudo apt-get install kernel-package
Install fakeroot so that you can build a .deb package as a normal user:
sudo apt-get install fakeroot
Install initrd-tools to get initrd.img (required for proper booting of
kernel):
sudo apt-get install initrd-tools
Actually build the kernel as a .deb package:
(automates and replaces the sequence "make dep; make clean; make
bzImage; make modules"):
sudo make-kpkg --append-to-version=.20060414 --revision=ricoh01 kernel_image
(I have the --append-to-version as the date that I built the kernel)
Install kernel:
cd ..
sudo dpkg -i kernel-image-2.6.17-rc1.20060414_ricoh01_i386.deb
Create ramdisk for kernel (otherwise the kernel panics and will not
boot):
cd /boot/
sudo mkinitrd -o /boot/initrd.img-2.6.17-rc1.20060414 2.6.17-rc1.20060414
Edit /boot/grub/menu.lst (the entries for the new kernel):
title Ubuntu, kernel 2.6.17-rc1.20060414
root (hd0,1)
kernel /boot/vmlinuz-2.6.17-rc1.20060414 root=/dev/sda2 ro quiet splash
initrd /boot/initrd.img-2.6.17-rc1.20060414
savedefault
boot
title Ubuntu, kernel 2.6.17-rc1.20060414 (recovery mode)
root (hd0,1)
kernel /boot/vmlinuz-2.6.17-rc1.20060414 root=/dev/sda2 ro single
initrd /boot/initrd.img-2.6.17-rc1.20060414
boot
Reboot (and select the new kernel when booting back in!):
sudo shutdown -r now
Note: The
kernel version and configuration I used throws a devfs-related error
very early in the
boot process:
mount: unknown filesystem type: devfs
I haven't noticed any problems using this
configuration, and I believe that devfs is being superseded by udev in
recent 2.6 kernels.
Patrick Brochu notes the following on getting rid of the
error:
I reinstalled, from scratch, but did not take any of the
kernel
updates from the ubuntu update manager. I simply installed 2.6.17-rc3
from kernel.org
and I don't see the message anymore. I can only guess that the devfs
error comes from one of these updates.
As well, with self-compiled kernels, you lose the Ubuntu
splashscreen on boot.
Stage II: Checking whether both processors are recognized
Post-reboot... to check on whether both processors are recognized, run
the following:
sudo cat /proc/cpuinfo
This should give two entries, one for each processor:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 14
model name : Genuine Intel(R) CPU T2400 @ 1.83GHz
[...]
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 14
model name : Genuine Intel(R) CPU T2400 @ 1.83GHz
[...]
Stage III: Dealing with EVMS -- "device-mapper: error adding
target to table" on bootup
Edit the section "sysfs_devices" in the file /etc/evms.conf:
sysfs_devices {
include = [ * ]
exclude = [ sda* ] <== ADDED sda* to exclude list
}
Stage IV: Getting the Ricoh Card Reader to work
Look at the output of dmesg to determine whether the Card Reader has
been detected:
dmesg | grep sdhci
Insert a card into the card reader. The output of dmesg should indicate
where the block device is for the card reader:
[17179782.012000] MMC: starting cmd 10 arg 00000200 flags 00000015
[17179782.012000] sdhci [sdhci_send_command()]: Sending cmd (10)
[17179782.012000] sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
[17179782.012000] sdhci [sdhci_finish_command()]: Ending cmd (10)
[17179782.012000] sdhci [sdhci_tasklet_finish()]: Ending request, cmd (10)
[17179782.012000] MMC: req done (10): 0: 00000900 00000000 00000000 00000000
[17179782.012000] mmcblk0: mmc0:104f S008B 6640KiB
[17179782.012000] mmcblk0:<7>MMC: starting cmd 12 arg 00000000 flags 00000035
My card reader has been assigned block device /dev/mmcblk0p1:
(check with 'ls /dev/mmc*')
Mount the SD card (I created a directory called 'temp' in my home
directory):
sudo mount -t vfat /dev/mmcblk0p1 temp/
To unmount:
sudo umount temp/
I created a directory called /media/sdcard as a permanent mount point
for the SD card reader:
sudo mkdir /media/sdcard
and created an appropriate entry in /etc/fstab:
/dev/mmcblk0p1 /media/sdcard vfat user,noauto 0 0
Stage V: Getting the Wireless Card to work
Note: In
order to get the wireless card to work, I used the ieee80211 subsystem
included with the kernel,
rather than downloading the ieee80211
subsystem tarball as others have done. When I used the
ieee80211 subsystem tarball, it compiles but the ipw3945d daemon does
not load:
./load
No modules unloaded.
WARNING: Error inserting
ieee80211_crypt
(/lib/modules/2.6.17-rc3.20060504/net/ieee80211/ieee80211_crypt.ko):
Invalid module format
FATAL: Error inserting
ieee80211
(/lib/modules/2.6.17-rc3.20060504/net/ieee80211/ieee80211.ko):
Invalid
module format
insmod: error inserting
'./ipw3945.ko': -1 Invalid module format
Load failed. ipw3945d -
regulatory daemon
Copyright (C) 2005-2006
Intel Corporation. All rights reserved. version: 1.7.18
2006-05-07 03:23:46:
ERROR: opening /sys/bus/pci/drivers/ipw3945: No
such file or directory (2)
2006-05-07 03:23:46:
ERROR: Could not find Intel PRO/Wireless 3945ABG
Network Connection
Lucas Aimaretto has reported the same issue (using kernel version
2.6.17-rc3) and that it is resolved by using the ieee80211 subsystem
included with the kernel.
Installing the Driver, Regulatory Daemon, and Firmware
Download the ipw3945 driver from (contains driver, regulatory daemon,
and firmware):
http://downloadfinder.intel.com/scripts-df-external/detail_desc.aspx?ProductID=2259&DwnldID=10315&agr=Y
Unpack the ipw3945 driver tarball (contains driver, firmware, and
daemon):
sudo tar -xvzf ipw3945-linux-1.0.0.tgz
cd intel-ipw3945-1.0.0/
Unpack and install the ipw3945 driver itself:
sudo tar -xvzf ipw3945-1.0.0.tgz
cd ipw3945-1.0.0/
chmod 755 remove-old
sudo ./remove-old
make IEEE80211_INC=/lib/modules/2.6.17-rc1.20060414/build/include/
sudo make install
Unpack and install the firmware:
cd ..
sudo tar -xvzf ipw3945-ucode-1.13.tgz
cd ipw3945-ucode-1.13/
sudo cp ipw3945.ucode /lib/hotplug/firmware
(Getting udev to recognize the firmware)
Create the file /etc/udev/rules.d/999_firmware.rules and put in the
following:
ACTION=="add", SUBSYSTEM=="firmware", RUN+="/sbin/udev_run_hotplugd"
Then run 'sudo /etc/init.d/udev restart'
Unpack and install the regulatory daemon:
cd ..
sudo tar -xvzf ipw3945d-1.7.18.tgz
cd ipw3945d-1.7.18/
sudo cp x86/ipw3945d /sbin/
Test whether the driver worked:
cd ../ipw3945-1.0.0/
sudo ./load debug=0
(look at the eth1 interface and available access points)
iwconfig eth1
iwlist eth1 scan
Update (May 6, 2006) -- Loading the Wireless Card at Boot
Time:
Patrick Brochu wrote to me about getting the wireless card loaded at
boot time. Here's what he had to say:
I can get the wireless card to come up at boot by creating
/etc/modprobe.d/ipw3945 with the following in it:
install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet
remove ipw3945 /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945
Enabling Native Resolution and 3D acceleration with the ATI
Radeon Mobility X1400
(Updated May 24, 2006 to
include information on 3D acceleration: driver version 8.25.18 works
with my 2.6.17-rc1 kernel)
Note: If you have already installed some version of the
ATI
Radeon graphics drivers from the ATI web site, to uninstall the old ATI
drivers, run:
sudo /usr/share/fglrx/fglrx-uninstall.sh
Downloaded the ATI 8.25.18
display drivers from their Linux x86 Notebooks with ATI Graphics driver
page:
https://support.ati.com/ics/support/default.asp?deptID=894
--> Drivers and Software --> Linux Display Drivers and
Software --> Notebooks with ATI Graphics
Installer file:
ati-driver-installer-8.25.18-x86.run
Make the installer file executable and run installer as root:
chmod a+x ati-driver-installer-8.25.18-x86.run
sudo ./ati-driver-installer-8.25.18-x86.run
(GUI loads: answered prompts)
- Install Driver 8.25.18 on X.Org 6.8.x
- Automatic Install
The log file is stored at /usr/share/fglrx
Make backup copy of existing xorg.conf:
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
Create file /etc/ld.so.conf (this should already exist... but it didn't
on my computer so I created it. The /usr/X11R6/lib directory is the one
added to get the ATI radeon driver configuration
library recognized):
/lib
/lib64
/usr/lib
/usr/lib64
/lib/tls
/usr/lib/i486
/usr/lib/i586
/usr/lib/i686
/lib/tls/i686
/usr/lib/i686/cmov
/lib/tls/i686/cmov
/usr/X11R6/lib
/usr/local/lib
Create the necessary links and cache to shared libraries:
sudo ldconfig -v
Run the ATI graphics driver configuration program:
sudo aticonfig --initial --input=/etc/X11/xorg.conf
Reboot the computer / restart X.
Update: Re-enabling scrolling with the Synaptics Touchpad
After installing the ATI graphics driver, I discovered that the
Synaptics Touchpad scrolling function no longer worked. Here's what I
had to do to re-enable it.
Reference: http://www.redhat.com/archives/fedora-list/2004-November/msg02639.html
Load the evdev module:
sudo modprobe evdev
Add "evdev" (without quotes) to /etc/modules
Edit the "ServerLayout" section of /etc/X11/xorg.conf:
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "aticonfig Screen 0" 0 0
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Synaptics Touchpad" "AlwaysCore"
EndSection
After restarting X, the touchpad scrolling worked.
Notes on
Suspend-to-Disk (hibernate) and 3D acceleration
(with Intel 945GM graphics):
From Werner Lemberg:
- Suspend-to-disk is working under SuSE 10.0 with kernel
2.6.17-rc3; /proc/acpi/sleep is required for
this. The CONFIG_X86_PC option must
not be set in the kernel, otherwise the CONFIG_ACPI_SLEEP_PROC_SLEEP
doesn't appear. His .config file is here.
- 3D acceleration is working with the Intel
945GM graphic chip, with 1680x1050 resolution, using the following:
- His xorg.conf file is here
(configured without mousepad scrolling function).
From Andy Parkins:
- Getting the
backlight to light up again when
opening the lid
The LCD backlight correctly switches off when the lid is closed.
However, there seems to be a fault either in the Linux driver or
the video card BIOS that prevent the backlight from being switched back
on when the lid is opened again. The solution is to use ACPI to force
the light back on.
Two scripts:
/etc/acpi/events/lidswitch
/etc/acpi/lidswitch.sh
This requires the vbetool package to be installed first.
- Suspend to
disk
I didn't really want to patch and compile my own kernel to get suspend2
support, so I tried the built in support in the kernel. The problem is
the video BIOS patch applied by 915resolution is lost when the machine
powers down, so when it powers back up again the video mode that the X
server was in no longer exists. The solution is again an ACPI script:
/etc/acpi/events/sleepbtn
This requires that an "resume=/dev/sdaX" option
was passed to the
kernel at boot time.
- Other Kernel
Parameters
The frame buffer can be activated and set to a more appropriate size
than the default by adding the following to the kernel command line:
video=intelfb:mtrr,noaccel vga=0x834
Last updated July 6,
2006.
Jennifer Tsai
jennifer (dot) tsai (at) utoronto (dot) ca