Debootstrap über ssh
Oder: Ein Debian System ohne Tastatur/Monitor installieren
Das Problem hier war, das der Server keine Grafikkarte und keinen PS2 Anschluß für die Tastatur hatte und gerade keine passende Grafikkarte rum lag und ich keine USB-Tastatur hatte. Also installierte ich das komplette System über ssh. Ziemlich abgefahren...
Das Grundproblem ist die Frage, wie man einen ssh-Zugang zu einen Computer bekommt, der kein laufendes System hat. Die Lösung liegt in einer Live-CD. Nur startet keine mir bekannte Live-CD automatisch einen ssh-server. Doch manche Live-CDs lassen sich herlich konfigurieren. Dieses Beispiel hier benutzt grml, eine Debianbasierte Distribution.
Wenn Du Informationen über "normales debootstrap" suchst dann geh besser dort hin: http://www.linuxwiki.de/debootstrap
Du brauchst:
grml-Image, am besten von http://www.grml.org/download/ (die minimale CD reicht)
- USB-Stick
- 2 Stunden Zeit
- einen Rechner mit Tastatur und Bildschirm zum konfigurieren
los gehts:
- grml-ISO brennen und auf einen beliebigen Rechner starten
- den ssh-Server einmal starten, damit die Keys erzeugt werden
- die Passwörter für Root und grml ändern
- den USB-Stick formatieren, er muss als Label GRMLCFG haben. Wenn der Stick /dev/sde ist geht das zb. so:
cfdisk /dev/sde #-->sde1 anlegen mkfs.vfat -nGRMLCFG /dev/sde1
sde1 wird gemountet und darauf ein skript grml.sh erstellt:
cat grml.sh /etc/init.d/ssh start
damit der ssh-Server ohne manuelle Eingabe beim Start der LiveCD gestartet wird. Eventuell sollte man sich noch eine statische IP in /etc/network/Interfaces geben, damit man später den Rechner über die IP finden kann. Wer einen dhcp-server und die Möglichkeit die Logfiles zu lesen hat braucht die statische Adresse natürlich nicht.
dann wird das /etc der LiveCD gesichert und auf den stick kopiert:
save-cfg -etc cp config.tar.gz /dev/sde1/
Damit bleiben die gemachten Einstellungen über den Neustart des Rechners erhalten, wenn der USB-Stick beim booten angesteckt ist.
Das war die Vorarbeit. Noch mal kurz testen: Neustart des Rechners und schauen, ob man sich über ssh einloggen kann. Wenn ja, gehts weiter:
CD und Stick in den Rechner, den man installieren will, starten, über ssh einloggen, dann:
cfdisk /dev/hda
3 Partitionen:
hda1 64 MB /boot ext2 #-->mkfs.ext2 hda2 1024 MB swap #--> mkswap hda3 7168 MB / ext3 #-->mkfs.ext3
dann mounten und debootstrap machen:
mkdir /debian mount /dev/hda3 /debian mkdir /debian/boot mount /dev/hda1 /debian/boot
debootstrap installieren, wie in "grml-tips debootstrap" (auf Konsole eingeben) beschrieben. ( hier noch mal der Vollständigkeit wegen)
Install (plain) Debian via grml:
mkfs.ext3 /dev/hda5 # make an ext3 filesystem on /dev/hda5 mount -o rw,suid,dev /dev/hda5 /mnt/test # now mount the new partition debootstrap sarge /mnt/test ftp://ftp.tugraz.at/mirror/debian # get main packages from a debian-mirror chroot /mnt/test /bin/bash # let's chroot into the new system mount -t devpts none /dev/pts # ...otherwise running base-config might # fail ("Terminated" or "openpty failed") mount -t proc none /proc # make sure we also have a mounted /proc base-config # now configure some main settings vi /etc/mkinitrd/mkinitrd.conf # adjust $ROOT (to /dev/hda5) for your new # partition, autodetection will fail in chroot cd /dev ; ./MAKEDEV generic # make sure we have all necessary devices for lilo apt-get install lilo linux-image-2.6.12-1-386 # install lilo+kernel which fits your needs cp /usr/share/doc/lilo/examples/conf.sample /etc/lilo.conf # let's use a template vi /etc/lilo.conf && lilo # adjust the file for your needs and run lilo afterwards umount /proc ; umount /dev/pts # we do not need them any more exit # now leave chroot cp /etc/hosts /etc/fstab /mnt/test/etc/ # you might want to take the existing files... cp /etc/network/interfaces /mnt/test/etc/network/ # ...from the running grml system for your # new system umount /mnt/test && reboot # unmount partition and reboot...
Abweichend: das skript installiert testing, obwohl man sarge auswählt. Also in base-config die quellen wählen, auf weiter drücken, dann aus einer anderen Konsole die /etc/apt/sources.list editieren, dann im ersten Fenster apt-get update ausführen, exit eingeben und dann auf weiter drücken. Ziemlich umständlich, eventuell ein Fehler in der Installations-CD, könnte inzwischen behoben sein.
dann:
mount -a vim /boot/grub/device.map (fd0) /dev/fd0 (hd0) /dev/hda . vim /boot/grub/menu.list default=0 timeout=5 serial --unit=0 --speed=9600 terminal --timeout=20 serial console # title Debian root (hd0,0) kernel /vmlinuz ro root=/dev/hda3 console=tty0 console=ttyS0,9600 initrd /initrd
Anstatt lilo wird Grub installiert, und der Kernel 2.6-686 dann grub:
#grub >root (hd0,<TAB> #zeigt die Partitionen an >root (hd0,0) #ergänzen >quit
und dann:
grub-install /dev/hda
/etc/inittab noch anpassen, damit auch Konsolenlogin möglich ist (ganz unten)
neustart, finger drücken, fertig.
NACHTRAG
2 Sachen: ich hatte Probleme, kommt der Server überhaupt hoch oder nicht? Lösung: einfach das Modul pcspkr in /etc/modules laden und in die Initskripte ein beep einbauen. (vorher installieren). Dann hört man, wie weit der Server kommt. Ja, das ist dreckig, aber praktisch und tut.
2. Der Kernel von Debian erkannte die Netzwerkkarte nicht. Ich habe einfach den Kernel von der grml-CD genommen und die zur laufzeit geladenen Module der CD nach /etc/modules gelegt. Es tut.