Installing Debian 3.1 on a Sony Vaio B3XP Laptop

Note: I wrote this in late 2005. I still use the same laptop, but the HDD died and after a simple replacement, I put ubuntu 7.10 on it. The install was so simple it's not worth documenting - after eight years of having to coax Linux to work, for the first time everything just worked. Including the wireless card.

For the Impatient

It works; my B3XP now runs both Debian 3.1 and Windows XP. You might like to read the warning at the very end of the page though.

In More Detail

Here are some notes I made while installing Debian on my laptop. I was helped by the previous experience of Andreas Freise, but having a similar thing described by a different person might be useful. Also, that page recommends hacks for a couple of things where editing a config file is more appropriate (i.e. easier and The One True Way).

First Installation

The Vaio came preinstalled with Microsoft Windows on a 28GB partition, an empty 40GB NTFS partition, and a 9GB ‘recovery’ partition.

I wrote a Debian 3.1 stable (‘sarge’) netinst CD, and rebooted with it in the drive. All relevant hardware was detected, and the installation went without a hitch. I removed the empty NTFS partition, then updated /etc/fstab to mount the XP partition read-only, and the new FAT32 partition for sharing data between the operating systems:


/dev/hda2    /mnt/xp        ntfs    ro,user,auto,umask=0222    0    0
/dev/hda7    /mnt/shared    vfat    user,auto,umask=0000    0    0

Update the kernel

I updated the Linux kernel from 2.4 (the default in Debian 3.1) to 2.6, because battery status notification, USB mouse hotplugging and sound are much easier to get working with the newer kernel. This is as simple as:

aptitude install kernel-image-2.6-686

A new option of booting into the 2.6 kernel is automatically added to the grub boot loader, and the ability to boot into 2.4 remains. This is all that’s required to get hotplugging to work.

Video modes

By default, the XServer cannot give you a 1400×1050 display, because the BIOS doesn’t disclose that it is available. Luckily, it is easy to patch the BIOS (in memory only – not a permanent change) to get things working:

aptitude install 855resolution
855resolution -l

And you will have a list of the ‘disclosed’ resolutions. Choose one you won’t be using, and overwrite it:

855resolution 3c 1400 1050

Then restart the XServer (log out and in again), and you should have a wonderfully clear display. Make the change permanent by editing /etc/default/855resolution; a template version was installed by aptitude earlier. Here’s mine:

# 855resolution default
#
# find free modes by  /usr/sbin/855resolution -l
# and set it to MODE
#
# This is the mode you're replacing
# (i.e. pick one you're not using!)
MODE=3c
#
# and set resolutions for the mode.
#
XRESO=1400
YRESO=1050

Then, edit XF86Config-4.
Simply adding new modes to XF86Config-4 and allowing X to calculate
the refresh rate didn’t work; it tried to run at 75Hz, but the screen
will only handle 60Hz, so it flickered. Restricting the refresh rate
lead to X thinking that the 1400×1050 resolution wasn’t valid, so X
failed to start. In the end, I added the video mode explicitly.

Section "Device" 
    Identifier    "Generic Video Card" 
    Driver        "i810" 
EndSection

Section "Monitor" 
    Identifier    "LCD" 
    HorizSync    31.5-90
    VertRefresh    59-75
    Option        "DPMS" 

    # 1400x1050 @ 60Hz, 65.8 kHz hsync
    Modeline "1400x1050"  129   1400 1464 1656 1960
        1050 1051 1054 1100 +HSync +VSync

EndSection

Section "Screen" 
    Identifier    "Default Screen" 
    Device        "Generic Video Card" 
    Monitor        "LCD" 
    DefaultDepth    24
    SubSection "Display" 
        Depth        16
        Modes        "1400x1050" 
    EndSubSection
    SubSection "Display" 
        Depth        24
        Modes        "1400x1050" 
    EndSubSection
    SubSection "Display" 
        Depth        32
        Modes        "1400x1050" 
    EndSubSection
EndSection

Fonts

With the high resolution, the default desktop had tiny text, so I changed the DPI settings to make everything more legible. This is accessible through _Applications->Desktop Preferences->Font->Details->Resolution_. 118DPI works for me.

I also installed all the TrueType fonts from the MS Windows partition, which helps when displaying Word documents and websites which expect particular MS fonts. Since X Windows can handle .ttf files directly, it’s simply a case of copying the files across:

cp /mnt/xp/WINDOWS/Fonts/*.ttf /mnt/xp/WINDOWS/Fonts/*.TTF ~/.fonts

Sound

The default sound server of the 2.6 kernel is ALSA, which works
perfectly after a couple of minor tweaks. Firstly, you need to stop
the amplifier powering down:

amixer set 'External Amplifier' mute
alsactl store

The second command makes the configuration change permanent.

You may be wondering why muting an amplifier enables sound, rather than disabling it. It seems that the name was changed from ‘External Amplifier Power Down’, so I guess the ‘mute’ actually translates to a FALSE, meaning the amp doesn’t power down.

There are well documented issues with playing more than one sound at a time under Linux. There are ways around it, but one sound it good enough for me. However, in order to achieve one sound at a time (!), you must ensure everything else is silent. This means disabling the system sounds: Applications->Desktop Preferences->Sound, and uncheck “Enable sound server startup”.

Power Management

aptitude install acpi acpid – you can now add a battery status icon
to your panel, and it will work.

aptitude install laptop-mode-tools which extends your battery life by caching writes to disk.

aptitude remove exim4 – not sure why a mailserver is included in the default workstation setup.

A Brief Word of Warning

Do not hibernate when dual-booting.

I had a few problems with disappearing files when hibernating from Windows, then booting into Linux. I added some new files to the shared (FAT32) drive, then shut down and started Windows again. Of course, the hibernation file in Windows has no idea about what has changed, and I assume it was at this point that the files were lost. I immediately booted back into Linux, but the files had been wiped (though happily, I’d checked some in to a non-local revision control system). It’s my own fault, because if I’d thought about it, I should have known it would be dangerous, but I’ve not seen it mentioned anywhere; perhaps you can learn from my mistake. I’m suprised that I can’t find any other discussion of this problem.