= Krefix-Image von Festplatte booten =

Zum Testen oder in dem Fall, daß man kein CD-ROM-Laufwerk hat (z.B.
wegen einem kleinen Gehäuse oder in einem EmbeddedLinux), aber
trotzdem die Vorteile eines ISO-Dateisystems bzgl. des
Schreibschutzes nutzen will, ist es gut, ein KrefixLinux komplett
von einer Festplatte laufen lassen zu können.

== Einfach ==

Im Grunde ist das sehr einfach: Das Image per '''dd''' auf z.B.
''/dev/hda1'' kopiert, dann mit einer Bootdiskette gestartet und
dort ''/dev/hda1'' als CD-Laufwerk eingetragen. Fertig!

== Ohne Diskette ==

Wenn man schon eine Festplatte eingebaut hat, will man eventuell
ganz auf die Floppy verzichten. Das ist schon etwas komplizierter.
Ich möchte hierzu eine beschreibbare Partition haben, in die die
Konfiguration kommt und eine, die ein ISO-Image enthält, das
schreibgeschützt ist. Um das System dann wirklich abzusichern,
fehlt noch irgendwetwas, das dem Schreibschutz der Diskette
entspricht. Doch dazu später...

=== Vorbereitung von KrefixLinux ===

Wir benötigen den GRUB Bootloader und die GRUB-Images am richtigen
Platz:

  apt-get install grub
  cp -r /lib/grub/i386-pc /boot/grub

Auf LinuxOhneBildschirm steht, wie man nun noch mittels der
GRUB-shell '''grub''' von Hand einen GRUB-Bootblock auf die Platte
bekommt. (Evtl. gehts auch einfacher mit ''grub-install'', da
müsste mal jemand nachforschen)

Will man auch die Diskette weglassen und durch eine
Harddisk-Partition ersetzen, so muss in die
''/etc/bootcd/bootcdwrite.conf'' noch zusätzlich:
  FLOPPY_RUNTIME_DEV=/dev/hda1

Außerdem muss man in der Datei ''/usr/share/bootcd/bootcdflopcp''
eine Zeile ändern:
  FLOPPY=/dev/hda1

Und in ''/boot/grub/menu.lst'' muss eine Zeile auf hda2 angepasst
werden (ja, das ist richtig, das die auskommentiert ist!):

  # kopt=root=/dev/hda2 ro

=== Installation ===

Die eigentliche Installation geht folgendermassen vor sich:

  cfdisk /dev/sdb

Dann eine Bootpartition (z.B. 10MB) und eine Hauptpartition
einrichten. Dann gehts weiter mit:

  mke2fs -j /dev/sdb1
  tune2fs -c 0 -i 0 /dev/sdb1                (wer will, kann so auf
Filesystem-Checks verzichten)
  mount /dev/sdb1 /mnt/
  cp -a /home/tbayen/projekte/krefix/boot /mnt/
  cp -a /home/tbayen/projekte/krefix/vmlinuz /mnt/
  cp -a /home/tbayen/projekte/krefix/initrd.img /mnt/
  umount /mnt/
  dd if=/home/tbayen/projekte/krefix/var/spool/bootcd/cdimage.iso
of=/dev/sdb2

== Bootprobleme  Debian etch bei Verwendung von Bootcd ==

=== Fehler 1 ===

Debian etch verwendet , nicht wie Vorgängerversionen das   initrd,
nunmehr initramfs. 
Zur Erkennung des Filesystems der Root-Partition kommt unter 
initramfs mini-programm ' fstype' zum Einsatz.
'fstype'  erkennt aktuell  kein Filesystem vom Typ iso9660, kann
somit keine CD- Images erkennen, wie sie halt zum Booten von CD
üblich sind.

Um dieses Problem temporär zu umgehen, haben wir in der Datei

  /usr/share/initramfs-tools/scripts/local

nach der zeile

  eval $(fstype < ${ROOT})

folgende Zeile eingefügt

  FSTYPE=iso9660

mit der dann das zu bootende CD- Filesystem erkannt wird. Um diese
Änderung in die beim aktuellen Kernel verwendete initramdisk zu
übernehmen, muss man das Kernel-Paket neu konfigurieren:

  dpkg-reconfigure linux-image-2.6....

: bei der Suche nach der  Fehlerursache von 'fstype'  war sehr
hilfreich, das  mit der Kernel-Option ''break'' der Bootvorgang
noch in der Initramdisk anhalten werden kann und zu verscheidenen
Stadien verzweigt werden kann. (break=top, modules, premount  
--> siehe script ''init''   unter
''/usr/share/initramfs-tools/'')

=== Fehler 2 ===

Das nächste Problem ist, das das neue '''udev''' die Devices in
''/dev'' nicht richtig anlegt. Hierzu muss im Skript
''/usr/share/bootcd/S12bootcdram.sh'' in der letzten Zeile (wo udev
gestartet wird) aus ''start'' ein ''restart'' gemacht werden.