Ziele

Das Ziel ist es, Ubuntu von einer SATA-Festplatte starten zu lassen.

Das Problem

Im Moment wird auf per SATA angebundene Laufwerke per SCSI-Layer zugegriffen. Das gibt dann ein Problem, wenn man von der Platte Booten möchte. Da man mit dem Auto nicht zur Fahrschule fahren kann - sprich, der Kernel kein Modul von einer Quelle laden kann, an die er nicht ran kommt, muss man sich geschickt behelfen.

Die Lösung

Der Boot-Loader (z. B. LILO oder Grub) lädt einen Kernel oder einen Kernel und eine initrd (initial RAM disk). Anschließend übergibt der Boot-Loader dann die Kontrolle an den Kernel um mit dem Bootvorgang fortzufahren. Liegt nun das benötigte Modul für den Zugriff auf die SATA-Devices auf dem SATA-Device selber, so hat der Kernel ohne passendes Modul keine Möglichkeit dies nachladen zu können. Es bestehen nun zwei Möglichkeiten dies zu lösen:

  1. Das für den Chipsatz spezifische SATA-Modul statisch in den zu bootenden Kernel einkompilieren.
  2. Das für den Chipsatz spezifische SATA-Modul (oder mehrere solcher Module) in der initrd bereitstellen, so daß dieses aus der RAM-Disk zu Bootzeit nachgeladen werden kann.

Die unten beschriebene(n) Lösung(en) beziehen sich auf den ersten Fall.

In einem bestehenden System

Zunächst muß ein Debian-Kernel-Paket gebaut werden. Siehe dazu unten unter "Kernelpaket bauen" nach.

Das fertig gebaute Kernelpaket wird nun installiert:

dpkg -i /usr/src/kernel-image-2.6.12_sata1.deb

Wenn alles gut läuft, sollte bei einem Neustart nun im Bootloader der neue Kernel auftauchen. Nun sollte das System booten und ggf. können dann Platten auch durch das RAID gespiegelt werden.

In einem frischen System

Die Lösung für diesen Fall ist es (für mich) gewesen den Kernel auf einem anderen System zu bauen, und als Paket zu installieren. Zum Bauen siehe dazu unten unter "Kernelpaket bauen" nach.

chroot /target

scp foo@bar.example.org:/usr/src/kernel-image-2.6.12_sata1.deb
dpkg -i kernel-image-2.6.12_sata1.deb

Kernelpaket bauen

sudo apt-get install build-essential kernel-package libncurses5-dev
sudo apt-get install linux-source-2.6.12

cd /usr/src
sudo tar -xjvf linux-source-2.6.12
ln -s /usr/src/linux-source-2.6.12 /usr/src/linux
cd linux

make menuconfig

Device Drivers -->
  SCSI device support -->
    SCSI low-level drivers -->
      Serial ATA (SATA) support

make-kpkg clean
make-kpkg --initrd --revision=sata1 kernel_image


CategoryHardware

GermanSATAHowto (last edited 2008-08-06 16:23:00 by localhost)