lifui

Bootfähiger USB-Stick u. ISO-Image

Lifui ( Linux Installer for USB and ISO )
6.4 MiB
723 Downloads
Details

Warum bootfähiger USB-Stick

  •     Einfache zu verwendendes Medium
  •     Dank USB-2.0 sehr schnell
  •     anpassbar
  •     sofort betriebsbereit

Warum bootfähiges ISO-Image

  •     Virtualisierung
  •     Verwendung auf Maschinen mit nur USB 1.1 Unterstüzung (Stick scheidet hier aus)

Zunächst einmal soll darauf hingewiesen werden, dass dieses Howto zwar als eigenständiges zu betrachent ist, aber prinzipiell im Ergebnis dazu dient, einen oder mehrere Server aufzubauen die zum einen Hochausfallsicher sind und zum andern sich von der Grundinstallation gleichen wie ein Ei dem anderen.

Vorraussetzung:

Vorraussetzung ist hier ein Tarball, also zunächst ein Verzeichnis auf einem Server (vorzugsweise Gentoo) in das Ihr ein Gentoo-Linux hineinkopiert habt. Für die Grundkonfiguration und das nachinstallieren von weiteren Paketen, wechselt ihr mit chroot ./Verzeichnisname in das zukünftige “Tarballverzeichnis” Für einige Pakete ist es wichtig, vorher das /proc Verzeichnis in das Tarballverzeichnis zu mounten.

mount -o bind /proc /tarballverzeichnis/proc

und dananche mit chroot in das Verzeichnis zu wechseln.

Kernelvorbereitung:

--- USB support
<*> Support for Host-side USB
[*] USB device filesystem
<*> EHCI HCD (USB 2.0) support
<*> OHCI HCD support
<*> UHCI HCD (most Intel and VIA) support
<*> USB Mass Storage support
--- Block devices ## Den benötigen wir damit USB nicht als scsi sondern als ub Device erkannt wird
-- Ist nun nicht mehr notwendig, da ich hier auf UUID umgestellt habe.
<*> Low Performance USB Block driver
<*> RAM block device support -*- SCSI device support
[*] legacy /proc/scsi/ support *** SCSI support type (disk, tape, CD-ROM) ***
<*> SCSI disk support
<*> SCSI CDROM support
<*> SCSI generic support
[*] Verbose SCSI error reporting (kernel size +=12K)
[*] SCSI low-level drivers ---> --- SCSI low-level drivers ## Das sind die 3Ware Controller <*> 3ware 5/6/7/8xxx ATA-RAID support
<*> 3ware 9xxx SATA-RAID support ## Den benötigen wir für VMWare <*> SYM53C8XX Version 2 SCSI support
--- Network device support
[*] Ethernet (1000 Mbit) ---> ## Den brauchen wir wieder für vmware (e1000)
<*> Intel(R) PRO/1000 Gigabit Ethernet support
<*> Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support
<*> IP1000 Gigabit Ethernet support
<*> Intel(R) 82575 PCI-Express Gigabit Ethernet support

System:

Ist dies geschafft, könnt ihr die Pakte die Ihr meint auf Euren zukünfigen Maschinen zu benötigen, nun mit emerge nachinstallieren.

BSP: Ihr müsst 30 Webserver aufsetzen, dann macht es sinn ein Image zu erstellen in dem Ihr nun den Apache mit allen wichtigen Useflags installiert. Zieht nun auch die HowTos zur Ausfallsicherheit mit hinzu und bereitet den Tarball damit auf Hochverfügbarkeit vor. Damit ist nun eigentlich das gröbste und zeitraubenste geschafft.
Verlasst nun die chroot Umgebung wieder mit exit und hängt das proc – Verzeichnis im Tarballverzeichnis wieder aus. Nun kommen wir zu den Scripten: Das Scriptlet besteht aus mehreren Einzelscripten, die alle in irgend einer Form (dazu später mehr) miteinander verwoben sind. Als Kernmechanismus wird udev verwendet welcher den ganzen Installationsmechnanismus in Gang setzt. Die Rede ist hier in erster Linie von USB-Sticks, denn das Isoimage wird unabhängig von udev via crontab während der Nacht erstellt! Zu beachten ist hierbei, dass Ihr unbedingt die original cdrtools http://cdrecord.berlios.de/private/cdrecord.html verwendet. Nur diese Unterstützen Verzeichnistiefen größer als 8. Alle anderen, mit den Distris mitgelieferten tun das nicht. Was passiert bei der Installation des Tarballs auf den USB-Stick: Nachdem Einstecken des Sticks führt Udev das Installationsscript aus und beginnt nun mit folgenden Schritten:

  • Stick wird partitioniert (eine Partition)
  • Stick wird mit ext3 Formatiert
  • Stick wird gemounted
  • Via rsync wird der Inhalt des Tarballverzeichnisse auf den Stick geschrieben
  • Die menu.lst des Bootloaders wird auf dem Stick angepasst (Das Device (z.B. ub[a-z] teilt dem Script udev mit)
  • Der Bootloader wird in den Bootsektor des Sticks geschrieben
  • Der Inhalt des Tarballs wird mit dem auf dem Stick verglichen um Inkosistenten auszuschliesen
  • Der Stick wird ausgehängt.
  • Eine Logmail wird verschickt
  • FERTIG

Nun haben wir einen bootfähigen USB Stick! Aber wie bekommen wir nun den Inhalt des Stick auf einen neuen Server Installiert? Ha … Dafür gibs ein weiteres Script, das im /opt – Verzeichnis des auf dem Stick Platziert wird. Man kann es nach dem Bootvorgang per Hand starten oder es aber in den Runlevel verlinken was recht angenehm ist aber auch gefährlich sein kann.
Das Script trägt den Namen install_me.sh und besteht wiederum selbst aus mehreren Einzelscripten die in install_me.sh included werden.

Step By Step:
Kopiert das Scriptverzeichnis nach /opt im Traballverzeichnis, macht wieder einen chroot /tarballverzeichnis/, legt einen Symlink von /etc/init.d/install_me nach /opt/4lords/scripts/install/install_me.sh an

ln -s /opt/4lords/scripts/prepare/install_me.sh /etc/init.d/install_me

und führt folgenden Befehl aus.

update-rc add install_me.sh default

Changeroot verlassen und den Stick gleich nochmal bespielen. Sobald dieser fertig ist, könnt Ihr ihn in einen Server eurer Wahl stecken und ein System auf diesem Intallieren.

Was wird installiert und wie:

Es wird Euer Tarball übertragen und auf dem Zeilsystem kann man zwischen Raid1 für 3ware, Raid 1 Softwareraid oder Singledisk (für vmware) wählen Gearbeite wird mit dem Devicemapper ( Logische Volumes ) damit Ihr später Euere Partitionsgrößen auch noch on the fly anpassen, oder evtl. von einer Datenbank einen Snapshot ziehen könnt

Es git zwei VolumeGruppen:

- rootvg - datavg

rootvg enthält folgenden Logischen Volumes

- optlv - usrlv - tmplv - varlv - portagelv

datavg enthält:
–   nichts

Initiale Installation:

ladet euch den Tarball herunter und kopiert den .tar.bz2 – File nach /opt Entpackt diesen nun mit tar xvfj filename.tar.bz2. Es entsteht ein neues Unterverzeichnis mit dem Namen 4lords. Hierin findet Ihr nun folgendes

bootstick -> tarball/release_000
iso
scripts
tarball

Wechselt nun in das Verzeichnis /opt/4lords/scripts/addon/udev/ und kopiert die Datei 98-create_stick.rules nach /etc/udev/rules.d/ Diese müsst Ihr gegebenfalls noch anpassen da jeder verwendete Stick eine andere VendorID trägt. Herausfiden könnt Ihr diese indem Ihr Euren Stick einsteckt und folgenden Befehl absetzt:

udevadm info -a -p $( udevadm info -q path -n /dev/uba )

Wobei uba ( jetzt eine UUID und sda ) das Device des Stick darstellt ( dmesg ). Haltet nun nach folgeder Zeile ausschau und ergänzt das Ergebnis in der udevregel.

ATTRS{product}=="USB Mass Storage Device"

Wobei auch hier “USB Mass Storage Device” eine andere sein dürfte. Das kommt aber auf Euren Stick an! nun noch

udevadm control --reload-rules

Stick einstecken und schon wird dieser befüllt und das vollkommen automatisch.