Debian Migration

Field notes


How easy is it to convert one GNU/Linux distribution to the other? Is it at all possible on a live system?

Well, it is possible. It has been done. There are ways. It is tricky. It maybe dangerous. No I do not guarantee it will work for you. It may actually not work big time, causing your system to not boot. Worse yet, if you are doing it remotely, the system may loose network connection.

YOU HAVE BEEN WARNED. If you still want to do it — read on.

0. What is Debian?

To quote the web site [1]:

“Debian is a free operating system (OS) for your computer. An operating system is the set of basic programs and utilities that make your computer run. At the core of an operating system is the kernel. The kernel is the most fundamental program on the computer, does all the basic housekeeping and lets you start other programs. Debian is kernel independent. It currently uses the Linux kernel but work is in progress to provide Debian for other kernels, using the Hurd.”

For the purpose of this little paper, I am refering to Debian GNU/Linux distribution.

OTOH, if you are looking at this, you’re likely to know what Debian is anyway. And you sure do know what Linux is. If neither of the latter is true, you probably are wasting your time, then.

1.Why converting?

Why would one want to change a distro? There may be several reasons:

  • You don’t like what the previous admin has done and how he has done it. On top of that, he installed a distribution X, which you are not as familiar if as Y.
  • You installed the X because it was the only CD lying around at the time. You don’t like what you’ve done and want to change it.
  • You have a weekend to kill.

My case is more or less #2: there was no Debian CD around and the network connection was way too slow to try and performa network install. There was, however, an A-Bit [2] Gentus Linux [3] CD. So, for the lack of a better choice, it was installed.

Gentus is, in essence, a Red Hat with a few A-Bit specific add-ons. They are good for you if you are running an A-Bit mobo, especially a notorious BP6 [4]. They are useless if your machine is an oldish AMD, basically put together from whatever was left around.

Actually, it does not really matter whether you want to convert a Red Hat, SuSE, Mandrake or Slackware to Debian. General outline will be the same. Converting a package-based distribution is a bit easier, since the cleaning stage is simplified.

My experience is somewhat extreme: I was doing it remotely, without physical access to the machine. It would certainly be easier if you’re sitting next to it. But, hey, if you’ve got physical access to the machine you may as well just install another distribution anew!

There are a few obvious dangers of remote installation: you may loose connection, your converted installation may not be as well secured as the old one and can be compromised as you have to be online, you may not want to reboot the machine — it may not come back online.

So, as I said before: you have been WARNED. This is YOUR DECISION.

2. Game plan

There are 4 stages to the process: preparation, clean-up, installation and post-installation clean-up:

  1. Preparation
    1. Get the list of installed RPMs on your current system
    2. Analyse it and sort into 3 groups:
      • things that must stay
      • things that will go
      • things you are not so sure about
    3. Backup your system configs (/etc) as well as any other data you’re afraid to loose
    4. Get dpkg binary
    5. Get Debian base system .debs
  2. Clean-up
    1. Remove all packages in 2.b
    2. Try removing 2.c, if any 2.a depend on them, leave them
  3. Installation
    1. Install dpkg
    2. Install Debian base
    3. apt-get the remaining parts of the system
  4. Post-installation clean-up
    1. Remove remaining Red Hat cruft

If all went well, you may be able to reboot now. However, if you have customized the kernel before, you may want to check your /etc/lilo.conf before doing so. Alternatively, you may want to rebuild your kernel and modules, and then restart.

In any case, I would recommend to have somebody next to the machine when you try rebooting, just so that they could at least tell you what sort of boot messages were flashing, in case the machine does not come back alive.

3. The process

3.1. Preparation

Before converting your system, you need to get try and slim down the existing installation as much as possible. This will make the post-installation clean-up much easier, as well as save you a few file location and versioning problems both during and after installation.

Unfortunately, despite the FHS [5], different distros hava bit of a different view as to what goes where. While you can expect that there will be certain things in certain places (like system-wide configs in /etc), the exact structure may differ. For example, while both Debian and Red Hat use SysV-style inits, the structure is different: Debian places links to /etc/init.d/* into /etc/rc[123456S].d, while Redhat uses separate /etc/rc.d heirearchy under which all runlevel-dependant directories reside.

However, before removing anything with something like (herin after `#’ is a root prompt, `$’ is a regular user prompt, and `>’ is a continuation prompt):

       # rm -rf /

consider looking through the RPM list and removing anything that is not in Base installation.

Get the list with

       $ rpm -qia > rpm_all_list.txt

or, if you want to be a little more sophisticated:

       $ for i in `rpm -qa`\
> do\
> rpm -qi $i\
> echo "<<< divider >>>"
> done > rpm_all_list.txt

Go through through this list, put together a list of what you are sure you don’t need, what you think you don’t need, what you think you must have.

In my case I ended up with some 150 packages, but it was more than I really needed.

Before going any further and to save ourselves nerve tissue, let us back up all important config files. A simple

       # tar cvzf ~/etc.tar.gz /etc

will work just fine.

Once this is done, it is time to get all the new stuff that we will be installing. Debian installation will be done in two steps: we will first install the base system manually, then we install all the missing components with apt/dselect.

First, let us get The Tool. Create a separate directory in your $HOME where all the preparatory work would go. Fetch the dpkg binary [6] from Debian ftp site and set it aside.

Next, download the Debian base system [7]. Set it aside for a little while. The base system will sufficient to allow you to have your machine running and accessing the network, which is how we will be installing the rest of the system. But before, we need to do a little bit of cleaning.

3.2. Clean-up

Removing is easy:

       # rpm -e <package name>

The good thing is that it will obviously check the dependencies and tell you if you’re breaking something. You can force it to ignore all dependencies:

       # rpm -e --nodeps <package name>

but I would not recommend it unless you absolutely certain what you are doing.

Start with the obvious: X, emacs, ppp (unless this is how your box is hooked up with the rest of the world), *-devel, databases (except for libgdbm and possibly libdb2), mail clients (pine, elm, mutt, but leave mailx just in case), MTA (sendmail, qmail, smail, postfix — whatever you have), docs, apache, Red Hat user guides, instalation manual, etc.

Then move onto development tools: yacc, flex, bison, bc, gcc/eggcs, cpp, etc. Remove man and man pages, groff/troff/nroff, kernel headers, kernel source, etc., etc., etc.

Then move onto less obvious stuff. See if removing a package breaks your base system, i.e. if it affects the list of packages included into the base system. If it does not — go ahead and remove it.

In general, the following things should pretty much stay:

  • libc (dpkg depends on libc6/glibc2 and libstc++2, but it is linked statically, it will work even without libc, but other things won’t)
  • shell (whichever you like best, but there must be sh, whether itself or a symlink to bash)
  • basic GNU tools: grep, sed, tar, gzip, find, [mg]awk, file, etc.
  • working kernel and kernel modules
  • a simple editor (vi/nvi/vim/elvis/ae)
  • ??

In my case, I shrank the installation more then twice in terms of package count and about 40% volume-wise. YMMV. Needless to say, all of the above will be performed as root (unless you had sudoi setup on your system and you left it on).

Do keep in mind that if you are accessing the box from afar, it would make total sense to leave telnet, ftp, ssh working, unless you want to suddenly loose it.

3.3. Installation

Time to install The Tool:

       # cd /
# tar xzf ~/dpkg_<version>_i386.nondebbin.tar.gz

Check if it is working:

       # dpkg --help
...
<long output>
...

Before installing anything else, check to make sure that you have /var/lib/dpkg/status file and it contains the entry about dpkg. If it does not, add the following:

        new debian package, version 2.0.
size 713548 bytes: control archive= 4120 bytes.
683 bytes, 18 lines control
5510 bytes, 234 lines * postinst #!/bin/sh
2423 bytes, 86 lines * preinst #!/bin/sh
442 bytes, 20 lines * prerm #!/bin/sh
Package: dpkg
Version: <version>
Architecture: i386
Essential: yes
Pre-Depends: libc6 (>= 2.1.2), libncurses5, libstdc++2.10
Replaces: dpkg-doc-ja
Installed-Size: 1821
Maintainer: Wichert Akkerman <wakkerma@debian.org>
Description: Package maintenance system for Debian
This package contains the programs which handle the installation and
removal of packages on your system.
.
The primary interface for the dpkg suite is the `dselect' program;
a more low-level and less user-friendly interface is available in
the form of the `dpkg' command.
.
In order to unpack and build Debian source packages you will need to
install the developers' package `dpkg-dev' as well as this one.

Keep it exactly the same, only provide the proper version information.

This is a quick-fix approach, it is not perfect and dpkg will complain about a few things (it would not know what files it owns, etc.), but we will rectify it once we install an updated dpkg from the base.

Now you are ready to start installing your base system. We should start with the .debs that are not dependant on any other package and then gradually move up the dependency ladder.

This quick perl script (provided you kept perl 🙂 will help you:

        #!/usr/bin/perl -w
# dpkg_dep.pl
# A quick way to check .deb dependencies
# Usage: dpkg -I | dpkg_dep.pl

$package = "";
@depends = [];
$firstline = 1;

while ( <> ) {
if ( $firstline ) {
$firstline = 0; # skip the first line
next;
}
if ( /^\sPackage\:\s(\w+)$/ && !$depends ) {
$package = $1;
} elsif ( /^\sDepends\:\s(\w.*)$/ || /^\sPre\-Depends\:\s(\w.*)$/ && $package) {
@depends = split(/\,\s/, $1);
#shift(@depends);
print $package . ": ";
foreach (@depends) {
print;
print " ";
}
print "\n";
$package = "";
@depends = [];
} elsif ( /^\snew\sdebian\spackage/ && ($package && !$depends)) {
print "Package $package has no dependencies...\n";
$package = "";
}
}

Save it, chmod u+x, and run it as follows:

      # cd <wherever your base .debs are>
# dpkg -I `ls *.deb` | dpkg_dep.pl

You can obviously filter the output any way you like.

To cut the long story short, the following packages are not dependant on anything else:

  • ldso
  • mbr
  • ncurses-base

ldso is also the only prerequisite for libc6, which is, in turn is a prerequisite for the new dpkg (along with libstc++).

To install a package do:

      # dpkg -i <package_file.deb>

For example, at the time of this writing, the following packages depended solely on libc6:

  • bsdutils
  • debianutils
  • diff
  • e2fsprogs: libc6 (>= 2.1.2)
  • fdflush: libc6 (>= 2.1.2)
  • fileutils: libc6 (>= 2.1.2)
  • findutils: libc6 (>= 2.1.2)
  • grep: libc6 (>= 2.1.2)
  • … many other

You then should start climibing the dependency ladder from one package to the other. However, once you install ldso, libc6, ncurses-base, libncurses5 and libstc++ (in that order), you can install an updated dpkg. Do so.

After that, continue installing packages that are only libc6 dependant — you’ll cover most of the base. Once those are done, you can try and install remaining in one gulp: just list them all on dpkg command line. A good idea is to create a subdir in your base directory, say `installed’, to which you could move a package once it was successfully installed and configured. In this case to install all remaining packages you could just

      # dpkg -i `ls *.deb`

It’s likely that not everything went perfectly fine. In particular, I had a problem with Red Hat’s install-info program: it was in the beginning of my path, while the version installed by dpkg was not. A few things failed to configure this way untill I removed the conflicting install-info.

To check whether you have packages that failed to install or configure you can issue the following command:

      # dpkg -C

It will list packages that are not configured or fully installed. After that you can do

      # dpkg --configure <package>

or

      # dpkg --configure --pending

to configure all unconfigured packages.

Once all of the base packages are safely and happily installed, we can move onto the next phase: bringing our Debian system up to speed, or rather to the same type of configuration as your older installation.

Remember that RPM list we had? Well, we can use it a bit more now — it is a fair basis for identifying what packages you need to install on your new Debian system. Obviously, you don’t have to repeat the same config (it may have been installed as a default set if you were in a very big rush, why installing all the unnecessary crap?).

In my case I pretty much new what I needed on top of the base:

  • perl (all of it)
  • python
  • MTA (I prefer postfix [8] for its security)
  • a decent editor
  • mutt
  • fetchmail (in case I need to fetch mail from other hosts)

At a later time I will get a few more things, especially kernel related (kernel-package, kernel-source*, gcc, libc6-dev, ncurses-dev, bin86, etc.

  • see a README in /usr/share/doc/kernel-package, after you installed it.) to be able to re-compile the kernel. But that’s later, when I have a trusted guy nest to the box to see if it works at all.

One other thing I would highly recommend installing right there and then is cruft. cruft uses dpkg file database and searches your file system for things that are not regestered by dpkg. Aside from /home /usr/local and/or /opt hierarchies, all other files should be present in dpkg files database. Things that aren’t are cruft. This will help you with the next stage.

3.4. Post-installation clean-up

If you installed cruft — so much easier for you. Otherwise it may be a long and tedious process (but you can scriptify it, I guess). What you basically need is to remove any remaining binaries, config files and other cruft remaining after the previous installation. You could perform some additional removals while installing base Debian (e.g. do rpm -e sed before doing dpkg -i sed<version>.deb), but once you installed it — removing an RPM will likely remove some (or all) of your Debian-installed files as well.

So, at this stage plain rm is your better friend. With cruft, get the list of “alien” files (but do read the README before to see how some of the hierarchies could be exluded) and rm them (if your’re very brave, you could just pipe cruft to rm -rf, but I would not do that).

If you don’t have cruft installed, you can do something like this:

      #!/bin/sh
cd /
for i in `find / *`
do
p = (dpkg -S $i | grep "not found")
echo $p
done

Yeah, this one is very lame, more over it is VERY slow. You’re better off getting cruft and using that instead.

This should more or less clean up your installation. Be careful — you can erase something vital by accident. To be on a safe side, run debsums after this to check if all md5 sums on the registered files are Okay.

4. Aftermath

So, now your box is in a good shape, working as before. Your users may have noticed a little interruption in a few services (mail, ftp, http, probably telnet), but other than that nothing is different for them.

For you, however, there remains the task of actually making sure that all the config options you had before are the same as they are now. You’d need to to check and update a few things in /etc — but that should not be news for you, right?

What you’ve gotten for your self now, is a distribution that will be much easier to manage remotely (at least in terms of security updates, new software installations, etc.).

5. Links, thanks, etc.

References

  1. Debian GNU/Linux web site: http://www.debian.org/
  2. A-Bit: http://www.abit.com.tw/
  3. A-Bit Gentus Linux web site: http://www.gentus.com/
  4. A-Bit BP6 forum: http://www.bp6.com/
  5. Filesystem Hierarchy Standard (FHS) http://www.pathname.com/fhs/
  6. dpkg for non-debian distributions: http://ftp.debian.org/project/experimental/ look for dpkg_*_i386.nondebbin.tar.gz, the latest version.
  7. Debian GNU/Linux base system:http://ftp.debian.org/dists/stable/main/binary-i386/base/
  8. Postfix home page: http://www.postfix.org/

Thanks & hellos

This document was converted from a plain ASCII file with txt2html. Thanks, Seth! There was a bit of .txt2html.dict tweaking and it was then “massaged” a bit to fit the toll.

Debian GNU/Linux on a Toshiba Portégé 7200CT

This page details my experience of installing, configuring and running GNU/Linux system (Debian 2.2 `Potato’) on a Toshiba Portégé 7200CT laptop.

  1. Latest news
  2. Hardware
  3. Installation
    1. Game plan
    2. Base system
    3. Adding more meat
  4. Configuration
    1. Kernel modules
    2. Sound
    3. Modem
    4. X-Windows
  5. Impression

Latest news

Wednesday, January 3, 2001 5:28 PM

Even better news than before! Thanks to Chris, I’ve gotten X 4.0.2 up and running withoutframebuffer.

Needless to say it is WAY faster. Besides, it now works in a docking station as well.

From: christopher [christopher@staerkel.de]
Sent: Thursday, December 28, 2000 12:50 AM
Subject: x on portege

hi andrei!

Try the videodriver for the trident cyberblade that is included in
the 4.02 release of xfree86. it's much nicer than the framebuffer
thing.

greetinx

chris

For those interested, here‘s the current XF86Config-4.Friday, 13, October, 2000 at 16:59:35

Another nice resource on Portege setup with Red Hat/Slackware/SuSE experiences (origianlly by Piete Brooks, a number of contributions from other people as well. Portege 7140, 7200, 7220 CT/CTe). Modem and XFree86-4 info. Links et al.Sunday, 17, September, 2000 at 17:57:56

An addition to what’s been mentioned below: in fact all 1024×768 modes work: 0x305, 0x316, 0x318. Strangely, X will only work with 0x318 if you specify default color depth as 32, not 24.

Unfortunately, after I recompiled the kernel (2.4.0-test5 at the moment), 0x317 no longer worked (or rather there seems to be something wrong with brightness). Had to switch to 0x318, which I, frankly, do not mind to much anywaySaturday, 16, September, 2000 at 17:48:01

Thanks to the site mentioned below, I was finally able to get X up and running on the Portege. Of course it is slow, but as long as you don’t enable opaque moving/resizings it is OK. I also had satisfied (a bit) my curiosity about KDE2 — this thing kicks ASS! A lot nicer than the previous release and is fairly light for my current set up.>/p>

A word of caution: if you like me set /etc/lilo.conf to vga=ask, do bear in mind that what folks are mentioning in framebuffer setup here is a decimal notation. When LILO prompts you for video mode you need to input hexadecimal, Hence, 791 (dec) becomes 317 (hex).

Just FYI, other VESA modes are (taken from Framebuffer-HOWTO):

Colors 640x400 640x480 800x600 1024x768 1280x1024 1600x1200
--------+-----------------------------------------------------
4 bits | ? ? 0x302 ? ? ?
8 bits | 0x300 0x301 0x303 0x305 0x307 0x31C
15 bits | ? 0x310 0x313 0x316 0x319 0x31D
16 bits | ? 0x311 0x314 0x317 0x31A 0x31E
24 bits | ? 0x312 0x315 0x318 0x31B 0x31F
32 bits | ? ? ? ? ? ?

September, 13 ThursdayThis is a must see resource for everybody with alternative OS on a Toshiba! I am really glad I found it. Google rules.August, 25 FridayA second attempt at X: this time 3.3.6. Same result.August, 20 SundayEven though the card is not listed as supported by X, tried to configure X (4.0.1, had to compile it). Not much luck, but maybe if I could get hold of proper timings…

Hardware

This machine is practically the most you can get in the 7200CT series: 600MHz Pentium III CPU, 320Mb RAM 1, 12Gb hard drive, Trident CyberBlade e4 with 4Mb VRAM, 2 PCMCIA slots, internal 56K WinModem, ESS sound crad with a single speaker, USB, AcuPoint, 13.1″ TFT Display, SVGA port, external floppy and port replicator. It is very light: under 5lbs.

The machine looks very nice, but as somebody rightly put — it is not a magneseum alloy body (actually, just the top pannel), that makes this baby so thin and light. If you happened to take just a laptop with you — you’re gonna be left without a floppy, without a CD-ROM drive, without being able to connect a parallel port printer, as well as any other parallel or serial device. All of these come as either an external device, or in a docking station.

I am lucky: I have the dock. Dock rocks: in a doc and with an external monitor I can run text mode at 132×60! And that’s without having to recompile the kernel.

Installation

While this is not the latest and greatest in Portege series, this machine is recent enough to have, unfortunately, a few quirks, when it comes to setting up Linux.

Game plan

For installation I have chosen Debian GNU/Linux. At the time of original installation this (2.2, a.k.a. `potato’) has been a `frozen’ distribution (i.e. pre-release). Due to Portege’s novelty, I decided that it would be better to install a more recent distribution than slink (2.1).

Initial installation was performed off an 11-floppy disk set created with ntrw.exe from 1.44M images found on Debian ftp site (here).

After installing the base system, configuring networking and removing a few unnecessary services and daemons, the system was further set up with apt-get.

Base system

Setting up the base system was, largely, a no-brainer. I opted to using the default kernel, to ensure that most of my hardware would be recognized. Truly, in CLI mode practically all important parts of the system came to life with out much interference (providing IPs/netmasks/gatways should not be considered as interference at all). For some reason, however, after the first reboot the system decided that I did not need pcmcia support and offered to remove it. Well, I guessed that I am likely to need it and said `no’.

After shutting down a few things (finger, r{sh, login, who}, etc.) and editing /etc/apt/sources.list I was ready to update my system to the latest and greatest.

Adding meat

I am used to living on the edge. My ThinkPad was always up-to-date with unstable Debian system. True, a few times this had broken a few things (most fun I ever had was with lprng), but never so badly that I’d settle down, downgrade to stable, and leave it like that.

So, /etc/apt/sources.list was all pointing at unstable (not even frozen). I first updated all the stuff I had installed, then moved onto adding a few more things. I did not want too much stuff: I only needed enought to:

  • recompile kernel (kernel-package, libc6-dev, bin86, yacc, bison, flex, kernel-source*, a few other things)
  • do some website development work (perl, CGI, python, apache, mod_perl, postgresql and python bindings to it)
  • be able to operate on the network (w3m, wget, ssh)
  • do it all efficiently (X, a decent editor, mutt & postfix)

So that was pretty much all that got fetched and installed. Once that was done, I was ready for the real configuration.

Configuration

Searching the web had somewhat disappointed me: there was not too much information about Portege. Tecra, Sattelite — those were in abundance, but Portege was only a few.

In current configuration trillian is running 2.4.0-prerelease kernel. I am still trying to get IR working, but everything else seems to work.

Linux Kernel

It has taken quite a while to tune the current configuration. I was trying to modularize the kernel as much aspossible. Right now kernel itself is only 571371 bytes. The following has direct kernel support: 

CONFIG_X86=y
CONFIG_ISA=y
CONFIG_UID16=y
CONFIG_EXPERIMENTAL=y
CONFIG_MODULES=y
CONFIG_MODVERSIONS=y
CONFIG_KMOD=y
CONFIG_M686FXSR=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_TSC=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_PGE=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_FXSR=y
CONFIG_X86_XMM=y
CONFIG_NOHIGHMEM=y
CONFIG_MTRR=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_NET=y
CONFIG_PCI=y
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_NAMES=y
CONFIG_HOTPLUG=y
CONFIG_SYSVIPC=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_SYSCTL=y
CONFIG_KCORE_ELF=y
CONFIG_BINFMT_ELF=y
CONFIG_PM=y
CONFIG_MD=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_SYN_COOKIES=y
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
CONFIG_IDEDMA_PCI_AUTO=y
CONFIG_BLK_DEV_IDEDMA=y
CONFIG_IDEDMA_AUTO=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_NET_PCMCIA=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_UNIX98_PTYS=y
CONFIG_DRM=y
CONFIG_PROC_FS=y
CONFIG_DEVPTS_FS=y
CONFIG_EXT2_FS=y
CONFIG_MSDOS_PARTITION=y
CONFIG_NLS=y
CONFIG_VGA_CONSOLE=y
CONFIG_VIDEO_SELECT=y
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FB_VESA=y
CONFIG_VIDEO_SELECT=y
CONFIG_FBCON_ADVANCED=y
CONFIG_FBCON_CFB8=y
CONFIG_FBCON_CFB16=y
CONFIG_FBCON_CFB24=y
CONFIG_FBCON_CFB32=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_MAGIC_SYSRQ=y

I am still trying to figure out whether a few more things could be moved to modules on top of what’s listed (or rather not listed) above. As it stands, the following things in kernel config are marked as ‘module’:

CONFIG_TOSHIBA=m
CONFIG_PCMCIA=m
CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m
CONFIG_APM=m
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PNP=m
CONFIG_ISAPNP=m
CONFIG_BLK_DEV_FD=m
CONFIG_PARIDE=m
CONFIG_PARIDE_PARPORT=m
CONFIG_PARIDE_PD=m
CONFIG_PARIDE_PCD=m
CONFIG_PARIDE_PF=m
CONFIG_PARIDE_PT=m
CONFIG_PARIDE_PG=m
CONFIG_PARIDE_ATEN=m
CONFIG_PARIDE_BPCK=m
CONFIG_PARIDE_COMM=m
CONFIG_PARIDE_DSTR=m
CONFIG_PARIDE_FIT2=m
CONFIG_PARIDE_FIT3=m
CONFIG_PARIDE_EPAT=m
CONFIG_PARIDE_EPIA=m
CONFIG_PARIDE_FRIQ=m
CONFIG_PARIDE_FRPW=m
CONFIG_PARIDE_KBIC=m
CONFIG_PARIDE_KTTI=m
CONFIG_PARIDE_ON20=m
CONFIG_PARIDE_ON26=m
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID5=m
CONFIG_BLK_DEV_LVM=m
CONFIG_IPV6=m
CONFIG_KHTTPD=m
CONFIG_IPX=m
CONFIG_BLK_DEV_IDECD=m
CONFIG_BLK_DEV_IDETAPE=m
CONFIG_BLK_DEV_IDEFLOPPY=m
CONFIG_DUMMY=m
CONFIG_EQUALIZER=m
CONFIG_EL1=m
CONFIG_EL2=m
CONFIG_ELPLUS=m
CONFIG_EL16=m
CONFIG_EL3=m
CONFIG_3C515=m
CONFIG_VORTEX=m
CONFIG_ACENIC=m
CONFIG_HAMACHI=m
CONFIG_YELLOWFIN=m
CONFIG_SK98LIN=m
CONFIG_PLIP=m
CONFIG_PPP=m
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPPOE=m
CONFIG_SLIP=m
CONFIG_PCMCIA_3C589=m
CONFIG_PCMCIA_3C574=m
CONFIG_PCMCIA_FMVJ18X=m
CONFIG_PCMCIA_PCNET=m
CONFIG_PCMCIA_NMCLAN=m
CONFIG_PCMCIA_SMC91C92=m
CONFIG_PCMCIA_XIRC2PS=m
CONFIG_PCMCIA_XIRTULIP=m
CONFIG_IRDA=m
CONFIG_IRLAN=m
CONFIG_IRNET=m
CONFIG_IRCOMM=m
CONFIG_IRTTY_SIR=m
CONFIG_IRPORT_SIR=m
CONFIG_NSC_FIR=m
CONFIG_WINBOND_FIR=m
CONFIG_TOSHIBA_FIR=m
CONFIG_SMC_IRCC_FIR=m
CONFIG_PRINTER=m
CONFIG_MOUSE=m
CONFIG_RTC=m
CONFIG_PCMCIA_SERIAL=m
CONFIG_PCMCIA_SERIAL_CS=m
CONFIG_PCMCIA_SERIAL_CB=m
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_UMSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_EFS_FS=m
CONFIG_ISO9660_FS=m
CONFIG_MINIX_FS=m
CONFIG_NTFS_FS=m
CONFIG_NFS_FS=m
CONFIG_NFSD=m
CONFIG_SUNRPC=m
CONFIG_LOCKD=m
CONFIG_SMB_FS=m
CONFIG_NCP_FS=m
CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_866=m
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_SOUND=m
CONFIG_SOUND_MAESTRO=m
CONFIG_USB=m
CONFIG_USB_UHCI=m
CONFIG_USB_UHCI_ALT=m
CONFIG_USB_OHCI=m
CONFIG_USB_AUDIO=m
CONFIG_USB_BLUETOOTH=m
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=m
CONFIG_USB_DC2XX=m
CONFIG_USB_MDC800=m
CONFIG_USB_SCANNER=m
CONFIG_USB_DABUSB=m
CONFIG_USB_PLUSB=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_NET1080=m
CONFIG_USB_USS720=m
CONFIG_USB_RIO500=m

Granted, quite a few of those things I may not need at all. However, I have decided that it is better to have modules ready — what if one day I would want to connect a USB devise or mount a minix floppy? For those intersted can download Debian package with a kernel and all modules. Alternatively, you can fetch my kernel config file.

Kernel modules

Here’s my /etc/modules with a list of kernel modules to be loaded at boot time:

# /etc/modules: kernel modules to load at boot time.
#
# This file should contain the names of kernel modules that are
# to be loaded at boot time, one per line. Comments begin with
# a #, and everything on the line after them are ignored.
ide-floppy
autofs
binfmt_misc
nfs
nls_cp437
nls_cp866
nls_iso8859-1
nls_iso8859-5
nls_koi8-r
ntfs
vfat
smbfs
ipv6
irport
irtty
nvram
ppp
3c59x
apm
maestro

Sound

The simplest way to get sound working is to compile support for ESS Maestro into your kernel (CONFIG_SOUND_MAESTRO=Y). This does not make your kernel much bigger, but some may prefer to have it a module, which is also fine. This is how I use it now. Make sure that you’ve added maestro to your /etc/modules and have created and alias in /etc/modules.conf:

# enabling sound
alias sound-major maestro

Modem

X-Windows

In short, it is working. At first it was my greatest disapointment: I could not get X to run. Then I found out that I could try framebuffer X Server. It was very slow, but better than nothing… Then I moved onto 2.4.0-test series kernel that has better framebuffer device support, as well as tried X4 (which made it to woody by then. Still running frambuffer, but better and faster than before. I even tried running it at 24bps, but the benefit was insignificant compared to speed penalty.

Then there was the greatest news so far: X 4.0.2 includes Trident driver to handle Cyberblade cards. I tried. And the piece has come!..

Links and such

A few strictly Portégé links

Try also Google for something like this.

…and a number of Toshiba laptops in general

…and, of course Linux & Linux on laptops


1Even though Toshiba claims that 192Mb is the maximum expandability for this model.

Linux praise

Originally created on 9/14/2000

The roots

I don’t think I’d deserve to be called a “Linux-head,” even though I am fascinated by this OS. Frankly, I like FreeBSD as well, and very much so. It’s just that at this point of time I know the Tux world better than that of the [name of BSD daemon].

My Linux endeavor began in late ’96 or early ’97, I believe. A friend of mine had mentioned it a few times (in fact, he has been administering a Linux/UN*X network), I’ve seen it mentioned in a few places. I became curious. I ordered a ‘Try Linux’ CD from Cheapbytes or LinuxCentral.

I’ve tried a few OSes by then. I despised Win95 from the very beginning: did not find it even remotely `innovative’ (but I was biased — I was in the States back then and my computer of choice for one and a half preceding years was a Mac). I was very interested in OS/2 (Warp), but a bootlegged CD refused to install at first, and later I found the system too crippled and weak in terms of applications.

The university in US was running most of its heavy-duty stuff on old IBM 3270’s and was heavily locked-in with IBM: all PC’s were PS/2’s running OS/2 (aside from mentioned above Macs of which they had a variety of Performas and a range of Classics). So, I poked around University system a bit. There was not much to see there though, and I was not a CompSci major anyway.

Much earlier than that, in 1988/9 I’ve also used Unix, but that was VERY brief experience which can be discounted almost completely.

The first encounter

So, there I was with a ‘Try Linux’ CD in my hand, an unknown ahead of me. There were 3 distributions on the CD: Slackware X.x, RedHat 4.x and Debian 1.x. Name ‘Debian’ somehow repelled me — I immediately imagined some sort of a Gennie from a bottle, or a fat Arabian Shaikh. It just would not go for some reason.My friend (see above) used to mention RedHat, but I was not sure whether in good or bad way. Hell, I said to myself, this is at least a name I’ve heard of! And that was the first install.

Obviously, as a person coming largely from a Mac/PC background I did not find it particularly great at first sight. Installation was really difficult for me, I did not know much about all these partitions/devices/addresses and ports (hey, I had all my choices predefined in all of my previous OSes!), it was dreadful. And I did not like the huge ugly icons of RedHat system/package management panel. Yuk.

So, I decided to give it another try, with a different distribution. I have also ordered a promotional copy of Caldera‘s OpenLinux, so that was my second try. I’ve removed it half a day after installing it. This distro was even less appealing, especially considering their strong emphasis on a better features available only commercially (I was in no way a FSF advocate at the time, yet free [beer] access to powerful software was very well known to me. Or better put free [pirated]).

Desperate, I decided that I gotta give it last try. Slackware. Weird name, but at least not repelling as Debian. Ok, lets’s see what you’re about…

A brave new world

The first thing that surprised and encouraged me was the ease of installation (in relative terms) compared to the previous 2 distros. I mean, it was not as easy as installing DOS and Windows over it. Nor as Win95 installation. But it was easier/cleaner than RedHat process, much nicer than Caldera’s in terms of explaining what we do now, what’s gonna happen next, etc.I loved it. I finally found what I could learn little by little without being annoyed by any number of things. It then also turned out that this was my friends distribution of choice!

To be honest it did not live too long on my HDD though. In haste and without experience I have not partitioned my hard drive well and was forced to clean it all to get Windows install properly. Then I did not have much time for playing with it. Then I discovered that having 3 distros on a single CD, obviously, meant that those were some-what crippled distros.

The learning curve

I did not have any idea to make Linux my default OS at the time. I felt adventurous, true. But that was not enough to completely change it all over. It also seemed at the time that Windows NT 4.0 was gonna be quite nice: stable, fast and looking good.So, despite a positive experience with Slack, and inspired by a few news articles on the Net I order official RedHat 4.2 — the full thing: 2 CDs, a box and a printed manual. I also ordered a few Linux books (listed below).

The 4.2 was better than the version I tried before. It also was the first full Linux installation I’ve done. I’ve read the book, I’ve read some more. I learned a few things. I struggled through a few. Particularly difficult (for some reason) was getting PPP to work. I’ve discovered the wonderful world of HOW-TO’s and peer help. I’ve also confirmed my feelings about dislike for RedHat: this time I did not like RPMs. I hated them. I could not figure out where things were going, what are they, how I change things or do them my way.

I have ditched RedHat for the second time and installed Slack from the same ‘Try Linux’ CD as before. And I confirmed my feelings once again: I loved it. Soon after that I got a chance to lay my hands on a more recent version of Slackware (3.4, I believe), and a full as well.

A trusted friend

This one lived a long life on my computer, went through a lot, has been changed a lot. I’ve learned to get things done on my own. Was frustrated for the first time that I got a bunch of error messages when I tried to compile something, and rejoiced once I figured out what was wrong. It lived long until glibc broke things.See, as I said, I am not a programmer, nor a CompSci major. I just love this stuff. And frequently the looks do matter to me. So, naturally, the first time I saw Enlightenment (thanks to PLiG) I wanted it. Bad. So, I downloaded it, as well as a bunch of other stuff it depended on: GTK+, imlib, all graphics libs (libjpeg, libgif, libpng, etc.). I compiled it and installed it. It worked. Not from the very first time, but it worked. It was fun.

But then the GNOME came around. And I wanted it too. And I tried to get it and compile it and… It would not. I RTFM’ed. I checked my libc version. It was libc5, but GNOME needed libc6 (a.k.a. glibc2). Fair enough, I told myself. This is not the first time that I need an updated library. I’ll just get it and all.

Well, not so simple, Joe. That’s not just a library. This is the library. And upgrading it was very difficult. I tried to compile. It worked, yet nothing worked after that. I tried to get a binary — I get in the similar trouble. I concluded after a long trial and error, mailing list reading and HOW-TO mastering that I would need to recompile most of my system to get it all running with glibc2/libc6. I gave up — I did not have time for that, and I was really intimidated by the task. I decided to just order a distribution that would use glibc2 (Slackware 4.0 that was still in beta at the time was still on glibc1/libc5 with libc6 runtime, I tried it too but it did not help me). RedHat again.

Square one?..

I’ve gone up by a major version: from 4.2 to 5.2. It was better, or I just became more experienced and knew more about where things may be. I learned to use RPM a bit, though not a great deal. I found it to be not too bad, yet not very exciting, still. I got GNOME to compile, was always up-to-date with all minor releases of E, had every theme from E.Themes.Org on my PC.But I was not at home with it. For some reason it still did not feel right. I thought about switching back to Slack, but it still was not on glibc2. I poked around and discovered that the repellent distribution — that ‘Debian’ thing was also a glibc2. More than that, I’ve read In the Beginning Was the Command Line and an interview with Neal Stephenson (whose Snowcrash and Diamond Age I liked a lot) at Amazon and then the other one at Salon.com and found it amusing that the guy loved Linux and in particular — Debian. Hell, I told to myself, I gotta try.

The new frontier

As the man said, I got my CD over at LinuxCentral — full Debian 2.1 Slink on 2 CDs in a little paper envelope were on my table in 2 weeks’ time. I was very eager to see what it’s like, but did not want to loose my current install. So I set the box up to triple-boot WinNT/RH/Debian. This did not last long: RH got ditched (3rd time in a row, pretty consistent, eh?) within a week.Debian was a marvel. Install had reminded me of Slackware, dselect(1) sucked, but otherwise .deb seemed to be a more interesting approach than .rpm. With a single package repository/bug tracking system it was more like a serious software company approach, rather than a fairly anarchic RPM world (which I mean in only good sense).

Then I discovered apt(1). Right around the same time I’ve gotten a free access to the Net, and ever since then my phone line was engaged constantly: I’d be always on-line, fetching system updates over night and keeping the box running just in case during the day.

So much did I like it, that I even went ahead and installed it on my office machine as well: ThinkPad 770E. I also convinced a few friends that Debian was the distro they should use. None had ever complained.

What’s so good about Debian? The first thing that comes to my mind is the system management. With apt/dpkg it is MUCH easier to do than with RPMs. You get distribution and quality control in one place, provided by volunteers around the world.

The second thing, and some may flame me for the order of things, is the fact that it is entirely free [speech], unlike any other distro. It may not matter to most, after all I am running Netscape, FrameMaker and KDE on my box, but it does make Debian developers an honor to be prudent like that. Had everybody been as prudent, the world would definitely be a better place.

And then again the depth and breadth of the distro as measured in terms of package number — this is probably one of the biggest around. They have it all. If they don’t — well, you can always compile it yourself. Or fetch an rpm/tgz and convert it into a .deb using alien(1) script. Simple as that.

Happily ever after…

This lengthy dedication has come around for reason, really. Everyone in this life had screwed something badly once or twice (and if they say they never did — well, you can bet they did it more than twice), or found himself screwed. That was exactly the situation: I was on a business trip, away from home. My trusted ThinkPad started to show the age and brutal handling: one day its AC/DC adapter got it. I had 2 full battery packs, but those were also not so young and lasted 2 hours each only.That is when I was glad I have set it up to dual-boot NT/Linux: you can bet that in the plain CLI mode your laptop will consume less (even if marginally) power. In a situation when you need to at least be able to read your mails and type up a memo or two — all you really need is mutt(1), fetchmail(1) and vi(1) (you may wish to change some of them to suit you preferences). Oh, yeah, and a Linux box 🙂

Those batteries lasted me 3 and a half days. Impressive, eh?

Soon after that I got a replacement laptop (I was still not home, hence repairing or getting a new damn adapter was not an option [Thanks, IBM, helluva support you guys offer! And helluva partner to provide it!]). A nice new Toshiba Portege 7200CTe specs. Has a pretty big hard drive — 12GBi. So, I figured, let’s try and install FreeBSD there. For fun.

After messing around with it for half a day (I was trying to perform a net install over an HTTP proxy — there is an option in the install menu to do just that, but I am still to find out how it is supposed to work), I did something wrong. Namely I ‘Okayed’ standard boot manager procedure and the thing messed up my partition table. I thought I am screwed bad: I just got this laptop, and it was tough. I just got everything working on it. And now on boot up all I see is: No operating system found. Pretty encouraging, eh? Oh, and on top of that BSD failed to install.

I rushed home hoping that I may still save the day. Ok, I thought, MBR must have been overwritten. Not to worry, I’ll just install bare-boned Linux and LILO to boot it as well as NT.

Good thing I did not completely rush to conclusions there… Once I booted off a floppy and got to partitioning part I happily discovered that the sole reason for my trouble was ‘bootable’ flag in the partition table. What a relief… And thanks Linux, yet again.

Ever since then I carry a rescue set: a boot and the root floppies of Debian GNU/Linux. Just in case. Highly recommend.