26Mar10
Few days ago I wanted to create VirtualBox image of Debian Squeeze (current testing release). I already had Debian Lenny (stable) image, so the whole process seemed relatively easy – dist-upgrade Lenny, switch to “testing” apt sources, then dist-upgrade. It appeared easy, but in fact there were some bumps on the road. Dist-upgrade broke on “udev” package. From what I’ve understood, udev didn’t want to be upgraded while working with old kernel, and kernel wouldn’t be upgraded because of some unmet dependencies. At first it seemed that the upgrade upgrade process broke down the dependency system and the easiest way was to install the system from scratch. But udev package has an “emergency rope”. When you pull it, you promise udev that before the next reboot you will upgrade kernel – and udev will believe you and install. To use that rope, create an empty file /etc/udev/kernel-upgrade and then manually install the udev package, which already resides in /var/cache/apt/archives directory. After this you can continue dist-upgrade, using -f switch. So the whole set of commands to upgrade the distribution is:
03 | cat > /etc/apt/sources.list << ENDF |
13 | touch /etc/udev/kernel-upgrade |
14 | dpkg -i /var/cache/apt/archives/udev_151-3_i386.deb |
15 | apt-get dist-upgrade -f |
After that upgrade should finish. But be warned – after switching from lenny to squeeze I’ve experienced some problems like kernel not booting (I run previous version and regenerated initrd – it, or something else, helped), problems with VirtualBox guest additions (had to install kernel sources for guest additions to build themselves, then reinstalled virtualbox-ose-dkms package, and then reinstalled guest additions from the CD image attached to VirtualBox).
Upgraded system needs a few touches, but that’s not unusual. Don’t worry about “udevd : SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device” and similar messages while booting – it will be silenced in future versions of some packages. You can fix it if you want by replacing SYSFS with ATTR in /etc/udev/rules.d/* files, but other similar warnings will appear. You can also run upgrade-from-grub-legacy script, if you chose to chainload new grub from the old one during the upgrade. There is also significant amount of files in /var/cache/apt/archives, which can be safely deleted after successful upgrade (in my case it was 2.5GB of data).
Phew, now everything works and I have a proper VirtualBox image of Debian Squeeze.