= 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.