Debian Etch auf USB-Festplatte
Datum: 5. Dezember 2006 - Kategorie Ubuntu/Debian
Ziel:
Zu Testzwecken oder einfach wegen mangelndem internen Speicherplatz soll Debian Etch auf einer externen USB-Festplatte installiert werden. Diese wird nur an einem Computer verwendet, zum Booten wird GRUB des bereits lokal installierten Systems verwendet.
Vorgehen:
Wir installieren Etch mit debootstrap, konfigurieren das nötigste und passen die initrd so an, dass die benötigten USB-Module geladen werden. Der Debian-Kernel wird dann noch im GRUB auf der integrierten Festplatte eingebunden.
Achtung:
Alle Angaben auf eigene Gefahr. Datensicherung!
Diese Anleitung habe ich nachträglich erstellt und muss somit nicht notwendigerweise fehlerfrei sein.
1. Vorbereitung: Formatieren, mount
Die Partition /dev/sdb1 soll die Boot-Partition werden, /dev/sdb5 das Root-Laufwerk. Beide sind bereits mit ext3 formatiert und leer. Ich habe diese nach /media/usb-sys1 eingebunden:
root@aaron:/home/aaron# mount /dev/sdb5 /media/usb-sys1 root@aaron:/home/aaron# mkdir /media/usb-sys1/boot root@aaron:/home/aaron# mount /dev/sdb1 /media/usb-sys1/boot/
2. Grundsystem installieren mit debootstrap und chroot
Ganz "normal" benutzen wir nun debootstrap, um das Grundsystem einzurichten:
root@aaron:/home/aaron# debootstrap etch /media/usb-sys1/ ftp://ftp.de.debian.org/debian/
Nun benötigen wir noch /proc und /dev, bei /sys bin ich mir nicht sicher (deshalb das vorsichtshalber auch):
root@aaron:/home/aaron# mount -t proc none /media/usb-sys1/proc root@aaron:/home/aaron# mount --bind /dev /media/usb-sys1/dev root@aaron:/home/aaron# mount --bind /sys /media/usb-sys1/sys
In das neue System wechseln:
chroot /media/usb-sys1
3. Wichtige Pakete installieren, wichtige Konfigurationen
Zuerst die /etc/apt/sources.list anpassen (schneller Mirror), dann ein:
aptitude update
(Die /etc/resolv.conf wurde bei mir soweit ich weiß korrekt von debootstrap übernommen, sodass dies gehen sollte. Statt aptitude kann auch apt-get verwendet werden - wie auch im Folgenden.)
Danach noch die anderen wichtigen Konfigurationsdateien:
vi /etc/hosts vi /etc/hostname vi /etc/network/interfaces vi /etc/fstab
(Das Format dieser Dateien dürfte hinlänglich bekannt sein. Die Partitionen in der fstab werden später die gleichen Devicenodes haben wie momentan.)
Nun Konsole und LANG-Umgebungsvariablen konfigurieren:
aptitude install locales console-data console-tools dpkg-reconfigure locales console-data console-tools
Zeitzone setzen:
tzconfig
Für den Benutzer root das Kennwort setzen:
passwd
Den Kernel und initramfs-Tools installieren:
aptitude install linux-headers-686 linux-image-686 initramfs-tools
(Man kann auch initrd-tools statt initramfs-tools verwenden, siehe weiter unten.)
Nun fehlen noch einige wichtige Dinge:
aptitude install alsa-base alsa-utils usbutils pciutils bzip2 sysfsutils wireless-tools dhcp3-client resolvconf cpufreqd cpufrequtils acpid acpi
4. System für Start von USB vorbereiten
GRUB wird später den Kernel und die initrd laden, d.h. in die initrd müssen nun die Module für USB-Controller und USB-Festplatten integriert werden:
vi /etc/initramfs-tools/modules
Bei mir sind dies (interne Festplatte per AHCI, USB-Controller von Intel (ehci-hcd, uhci-hcd) sowie Unterstützung für USB-Laufwerke):
sd_mod scsi_mod ohci ehci-hcd uhci-hcd usb-storage
(Im Falle von initrd-tools wäre es die Datei /etc/mkinitrd/modules. In der /etc/mkinitrd/mkinitrd.conf kann dort auch DELAY=10 gesetzt werden, um eine Pause beim Booten zu erzwingen. So hat das ganze USB-System mehr Zeit sich zu initialisieren, bei mir war das aber nicht notwendig. Bei initramfs kann eine Wartezeit über den Bootparameter rootdelay=10 erzwungen werden.)
Nun muss die initrd noch neu erstellt werden:
update-initramfs -u
(Bei initrd-tools: z.B. mkinintrd -o /boot/initrd.img-2.6.18-4-686)
Das chroot-System kann nun wieder verlassen werden:
aaron:/# exit root@aaron:/home/aaron# umount /media/usb-sys1/dev root@aaron:/home/aaron# umount /media/usb-sys1/sys root@aaron:/home/aaron# umount /media/usb-sys1/proc root@aaron:/home/aaron# umount /media/usb-sys1/boot root@aaron:/home/aaron# umount /media/usb-sys1
5. GRUB auf der eingebauten Festplatte anpassen
Damit GRUB die USB-Festplatte kennt, sollte im BIOS die entsprechende Option aktiviert werden.
In der /boot/grub/menu.lst muss ein neuer Eintrag eingefügt werden:
title Debian Etch, kernel 2.6.18-4-686 (USB) root (hd1,0) kernel /vmlinuz-2.6.18-4-686 root=/dev/sdb5 ro quiet initrd /initrd.img-2.6.18-4-686 boot
(Ggf. die Versionsnummern anpassen! (hd1,0) ist die erste Partition auf der zweiten Festplatte. Der Kernel-Parameter root muss auch korrekt sein!)
6. Neues System starten und X installieren
Wenn alles geklappt hat, kann man nun Debian Etch bei eingeschalteter USB-Festplatte booten. Dies ist momentan nur ein Grundsystem, aber nun lässt sich normal ein X-Server aufsetzen und Gnome bzw. KDE installieren. Ein normaler User sollte auch noch angelegt werden:
addgroup --gid 1000 user adduser --uid 1000 --gid 1000 user
(Dieser muss dann noch in entsprechende Gruppen aufgenommen werden, damit z.B. unter X Soundausgabe möglich ist.)
Installation von Xorg:
aptitude install xserver-xorg x-window-system-core x-window-system
Installation eines Minimal-Gnome mit GDM:
aptitude install gdm gnome-session
Quellen
Folgende Quellen waren sehr hilfreich:
» How To: Installing Debian Etch From a running Debian based system
» USB-Anpassung für mkinitrd