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:

los gehts:

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.

LutzWillek/debootstrap (de) (zuletzt geändert am 2007-12-23 22:46:50 durch localhost)