Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German) Deutsche Dokumentation
  • Search

Bootfähiger USB-Stick mit Minimalsystem

Dokumentation, Tipps und Tricks.
Post Reply
  • Print view
Advanced search
77 posts
  • 1
  • 2
  • 3
  • 4
  • Next
Author
Message
Inte
Veteran
Veteran
User avatar
Posts: 1387
Joined: Tue Jul 15, 2003 3:33 pm
Location: Mannheim, GER
Contact:
Contact Inte
Website

Bootfähiger USB-Stick mit Minimalsystem

  • Quote

Post by Inte » Fri May 28, 2004 1:50 pm

  • Fragen und Tipps bitte hier in den Thread
  • Kritik bitte ausschließlich per PN, ICQ oder eMail
  • Aktuell
    02 Jun 2004 Momentan wird in eine Shell (ash) gebootet, mit der eine rudimentäre Manipulation der Festplatten möglich ist. Dank Bootsplash sieht diese auch recht nett aus.
    03 Jun 2004 fbi funktioniert jetzt auch.
    07 Jun 2004 Unterstützung für alte Gerätenamen (/dev/sdx, /dev/hdx, etc.) hinzugefügt.

  • Grub OK
  • Kernel OK
  • Initrd OK
  • Bootsplash OK
  • fbi OK
  • Busybox
  • RootFs
  • ...

    Die Motivation

    Ich will mit Eurer Hilfe versuchen einen bootfähigen USB-Stick mit einem minimalen System zu erstellen, um Bilder auf einer Framebuffer Konsole anzuzeigen (fbi) und mit gebräuchlichen Tools (Busybox), Daten sichern zu können.

    Zwar gibt es viele Mini-Distributionen bzw. Anleitungen die einen ähnlichen Weg gehen, aber leider stelle ich mir oft Fragen auf die selbst Google keine zufriedenstellende Antwort hat. Deswegen hoffe ich, daß wir eine Anleitung für ein minimales USB-System entwickeln, mit der auch Unbedarfte etwas anfangen können.
  1. Step by step

  2. Grub
    Während der folgenden Schritte gehe ich davon aus, daß die Unterstützung für den USB-Stick in den laufenden Kernel einkompiliert ist (fest oder als Modul) und der Mountpoint /mnt/stick lautet.

    Code: Select all

    mke2fs /dev/sda1
    mount -t ext2 /dev/sda1 /mnt/stick/
    mkdir -p /mnt/stick/boot/grub
    cp /boot/grub/stage1 /mnt/stick/boot/grub/
    cp /boot/grub/stage2 /mnt/stick/boot/grub/
    cp /boot/grub/e2fs_stage1_5 /mnt/stick/boot/grub/
    cp /boot/grub/splash.xpm.gz /mnt/stick/boot/grub/
    /mnt/stick/boot/grub/grub.conf

    Code: Select all

    cat > /mnt/stick/boot/grub/grub.conf << "EOF"
    title MyMiniLinux
    splashimage=(hd0,0)/boot/grub/splash.xpm.gz
    kernel=(hd0,0)/boot/bzImage root=/dev/scsi/host1/bus0/target0/lun0/part1 video=mtrr,vesa:1024x768 vga=0x317 splash=silent
    initrd=(hd0,0)/boot/initrd.gz
    EOF
    Den Symlink auf menu.lst nicht vergessen :wink:

    Code: Select all

    cd /mnt/stick/boot/grub
    ln -sf grub.conf menu.lst
    umount /mnt/stick
    Jetzt den Stick noch bootfähig machen und schon geht's mit dem Kernel weiter:

    Code: Select all

    grub
    
    grub> root (hd1,0)
     Filesystem type is ext2fs, partition type 0x83
    
    grub> setup (hd1)
     Checking if "/boot/grub/stage1" exists... yes
     Checking if "/boot/grub/stage2" exists... yes
     Checking if "/boot/grub/e2fs_stage1_5" exists... yes
     Running "embed /boot/grub/e2fs_stage1_5 (hd1)"...  22 sectors are embedded... succeeded
     Running "install /boot/grub/stage1 (hd1) (hd1)1+22 p (hd1,0)/boot/grub/stage2
     /boot/grub/menu.lst"... succeeded
    
     Done.
    
    grub> quit
  3. Kernel
    Vanilla Kernel 2.6.6 von http://www.kernel.org und Bootsplash Patch (bootsplash-3.1.4-2.6.6.diff) von http://www.bootsplash.de/files/


    :idea: Vor der ersten Konfiguration immer erst die Quellen säubern und den Kernel patchen:

    Code: Select all

    make mrproper
    patch -p1 < bootsplash-3.1.4-2.6.6.diff
    make menuconfig

    Code: Select all

    Code maturity level options  --->
      [*] Prompt for development and/or incomplete code/drivers
      [*]   Select only drivers expected to compile cleanly
      [*]   Select only drivers that don't need compile-time external firmware
    General setup  --->
      [*] Support for hot-pluggable devices[*]
      Configure standard kernel features (for small systems)  --->
        [*]   Enable futex support
        [*]   Enable eventpoll support
        [*]   Anticipatory I/O scheduler
        [*]   Optimize for size
    Processor type and features  --->
      Subarchitecture Type (PC-compatible)  --->
      Processor family (Pentium M)  --->
      [*] Generic x86 support
      [*] Preemptible Kernel
      [*] Machine Check Exception
      [*] MTRR (Memory Type Range Register) support
    Power management options (ACPI, APM)  --->
      [*] Power Management support
      ACPI (Advanced Configuration and Power Interface) Support  --->
        [*] ACPI Support
        [*]   Sleep States (EXPERIMENTAL)
        [*]   AC Adapter
        [*]   Battery
        [*]   Button
        [*]   Fan
        [*]   Processor
        [*]     Thermal Zone
      CPU Frequency scaling  --->
        [*] CPU Frequency scaling
        [*]   CPU frequency table helpers
        [*] Intel Enhanced SpeedStep
    Bus options (PCI, PCMCIA, EISA, MCA, ISA)  --->
      [*] PCI support
      PCI access mode (Any)  --->
      [*] Legacy /proc/pci interface
    Executable file formats  --->
      [*] Kernel support for ELF binaries
      [*] Kernel support for a.out and ECOFF binaries
      [*] Kernel support for MISC binaries
    Device Drivers  --->
      Block devices  --->
        [*] Loopback device support
        [*] RAM disk support
        (4096) Default RAM disk size
        [*]   Initial RAM disk (initrd) support
      ATA/ATAPI/MFM/RLL support  --->
        [*] ATA/ATAPI/MFM/RLL support
        [*]   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
        [*]     Include IDE/ATA-2 DISK support
        [*]     generic/default IDE chipset support
        [*]     PCI IDE chipset support
        [*]       Sharing PCI IDE interrupts support
        [*]       Generic PCI IDE Chipset Support
        [*]       Generic PCI bus-master DMA support
        [*]         Use PCI DMA by default when available
        [*]         Intel PIIXn chipsets support
      SCSI device support  --->
        [*]   legacy /proc/scsi/ support
        [*]   SCSI disk support
      Input device support  --->
        [*] i8042 PC Keyboard controller
        [*] Keyboards
        [*]   AT keyboard support
      Character devices  --->
        [*] Virtual terminal
        [*]   Support for console on virtual terminal
        [*] Unix98 PTY support
      Graphics support  --->
        [*] Support for frame buffer devices
        [*]   VESA VGA graphics support
        Console display driver support  --->
          [*] VGA text console
          [*]   Video mode selection support
          [*] Framebuffer Console support
        Bootsplash configuration  --->
          [*] Bootup splash screen
      USB support  --->
        [*] Support for Host-side USB
        [*]   USB device filesystem
        [*]   EHCI HCD (USB 2.0) support
        [*]   UHCI HCD (most Intel and VIA) support
    
        [*]   USB Mass Storage support
    File systems  --->
      [*] Second extended fs support
      [*] Reiserfs support
      DOS/FAT/NT Filesystems  --->
        [*] DOS FAT fs support
        [*]   VFAT (Windows-95) fs support
      Pseudo filesystems  --->
        [*] /proc file system support
        [*] sysfs file system support
        [*] /dev file system support (OBSOLETE)
        [*]   Automatically mount at boot
        [*] Virtual memory file system support (former shm fs)
      Native Language Support  --->
        (iso8859-1) Default NLS Option
        [*]   NLS ISO 8859-1  (Latin 1; Western European Languages)
    Das Kompilieren und Kopieren nicht vergessen :wink:

    Code: Select all

    make
    mount -t ext2 /dev/sda1 /mnt/stick
    cp arch/i386/boot/bzImage /mnt/stick/boot/
    umount /mnt/stick
  4. Initrd
    Da es ein Timing-Problem beim Erkennen des USB-Sticks gibt, brauchen wir eine InitialRamdisk (initrd) um eine Pause im Bootvorgang zu erzeugen. Es gibt zwar ein Patch (usb-storage-root.patch), aber leider ist mir keins für den 2.6er Kernel bekannt. Außerdem wird die initrd für den Bootsplash sowieso benötigt. :wink:

    Als Erstes wird ein leeres Dateisystem erstellt und als Loopback-Device gemounted (Der Kernel muß das Loopback-Device unterstützen und der Mountpoint /mnt/loop muß vorhanden sein):

    Code: Select all

    dd if=/dev/zero of=initrd bs=1024k count=1
    mke2fs -F -m0 initrd
    mount -t ext2 -o loop initrd /mnt/loop
    Dann besorgen wir uns die aktuelle Version von Busybox (z.B. busybox-1.00-pre10.tar.gz). Für die initrd kompilieren wir die nötigsten Programme (z.B. echo, usleep, etc.) statisch und kopieren das Binary auf das Loopback-Device:

    Code: Select all

    make menuconfig

    Code: Select all

    Build Options  --->
      [*] Build BusyBox as a static binary (no shared libs)
    Coreutils  --->
      [*] echo (basic SUSv3 version taking no options)
      [*] usleep
    Another Bourne-like Shell  --->
      Choose your default shell (ash)  --->
      [*]     Optimize for size instead of speed (NEW)

    Code: Select all

    make dep
    make
    mkdir -p /mnt/loop/{dev,bin}
    cp busybox /mnt/loop/bin
    cd /mnt/loop/bin
    ln -s busybox ash
    ln -s busybox echo
    ln -s busybox sh
    ln -s busybox usleep
    linuxrc
    :idea: Das linuxrc-Skript wird nach dem Laden der initrd automatisch ausgeführt und enthält alle Befehle, die notwendig sind um auf das RootFs zugreifen zu können. Uns reicht eine kleine Pause, damit der USB-Stick erkannt wird. Falls wichtige Treiber (z.B. für das Dateisystem) als Modul kompiliert wurden, müssen diese hier geladen werden. Da zum Ausführen von Skripten eine Shell benötigt wird, wird auch klar warum die ash-Funktionalität von Busybox aktiviert wurde.

    Code: Select all

    cat > /mnt/loop/linuxrc << "EOF"
    #!/bin/sh
    /bin/echo "Executing Busybox 'usleep 5000000'"
    /bin/usleep 5000000
    /bin/echo "Proceeding ..."
    EOF

    Code: Select all

    chmod +x /mnt/loop/linuxrc
    umount /mnt/loop
    gzip initrd
    mount /mnt/stick
    cp initrd.gz /mnt/stick/boot
    umount /mnt/stick
  5. Bootsplash
    Zm Glück benutzen wir ja alle Gentoo :wink: und können uns hier ein paar Schritte ersparen. Zunächst wird der UserSpaceStuff installiert:

    Code: Select all

    emerge bootsplash
    Dann besorgen wir uns ein hübsches Theme von Bootsplash.org (z.B Default Linux Theme) und entpacken es nach /etc/bootsplash. Jetzt müssen wir nur noch an unsere initrd.gz das Theme anhängen und schon wird die Konsole bunt.

    :idea: Das splash-Tool hängt alle für den Bootsplash wichtigen Daten an die initrd. Deswegen muß die initrd vorher gepackt werden (gzip initrd) und nicht hinterher, weil der gepatchte Kernel die Bootsplash-Daten an der initrd.gz und nicht in ihr sucht.

    Code: Select all

    mount /mnt/stick
    splash -s -f /etc/bootsplash/Linux/config/bootsplash-1024x768.cfg >> /mnt/stick/boot/initrd.gz
    umount /mnt/stick
    :arrow: Falls es noch Fragen zum Bootsplash geben sollte, dann werf doch einen Blick in [HOWTO] Gentoo Bootsplash und Framebuffer von equinox0r.

  6. RootFs + Busybox
    Nun werden die benötigten Systemordner und ein paar grundlegende Dateien angelegt:

    Code: Select all

    mount /mnt/stick
    mkdir -p /mnt/stick/{bin,dev,etc/init.d,initrd,mnt,proc,root,sbin,sys,tmp,usr/{bin,sbin}}
    /etc/inittab

    Code: Select all

    cat > /mnt/stick/etc/inittab << "EOF"
    ::sysinit:/etc/init.d/rcS
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount -a -r
    vc/1::respawn:/bin/sh
    vc/2::askfirst:/bin/sh
    vc/3::once:/bin/dmesg
    EOF
    /etc/init.d/rcS

    Code: Select all

    cat > /mnt/stick/etc/init.d/rcS << "EOF"
    #!/bin/sh
    /bin/echo "Mounting filesystems ..."
    /bin/mount -a
    /bin/echo "Starting devfsd ..."
    /sbin/devfsd /dev
    EOF
    Ausführbar macht das Skript gleich nochmal soviel Spaß :)

    Code: Select all

    chmod +x /mnt/stick/etc/init.d/rcS
    /etc/fstab

    Code: Select all

    cat > /mnt/stick/etc/fstab << "EOF"
    none    /proc           proc    defaults        0 0
    none    /sys            sysfs   defaults        0 0
    none    /dev/pts        devpts  defaults        0 0
    none    /dev/shm        tmpfs   defaults        0 0
    none    /proc/bus/usb   usbfs   defaults        0 0
    EOF
    /etc/passwd

    Code: Select all

    cat > /mnt/stick/etc/passwd << "EOF"
    root:x:0:0:root:/root:/bin/sh
    EOF
    /etc/group

    Code: Select all

    cat > /mnt/stick/etc/group << "EOF"
    root:x:0:
    bin:x:1:
    EOF
    /etc/devfsd.conf

    Code: Select all

    cat > /mnt/stick/etc/devfsd.conf << "EOF"
    REGISTER     .*      MKOLDCOMPAT
    UNREGISTER   .*      RMOLDCOMPAT
    EOF
    Als nächstes kompilieren wir Busybox mit allen gewünschten Tools:

    Code: Select all

    make menuconfig

    Code: Select all

    General Configuration  --->
      [*] Support for devfs
      [*] Use the devpts filesystem for Unix98 PTYs
    Build Options  --->
      [*] Build BusyBox as a static binary (no shared libs)
    Archival Utilities  --->
      [*] bunzip2
      [*] gunzip
      [*] gzip
      [*] tar
      [*]     Enable archive creation (NEW)
      [*]     Enable -j option to handle .tar.bz2 files
      [*]     Enable -z option (NEW)
    Coreutils  --->
      [*] cat
      [*] chgrp
      [*] chmod
      [*] chown
      [*] chroot
      [*] cp
      [*] dd
      [*] df
      [*] echo (basic SUSv3 version taking no options)
      [*] ls
      [*]     Enable filetyping options (-p and -F) (NEW)
      [*]     Enable symlinks dereferencing (-L) (NEW)
      [*]     Enable recursion (-R) (NEW)
      [*]     Show username/groupnames (NEW)
      [*] mkdir
      [*] mknod
      [*] mv
      [*] rm
      [*] rmdir
      [*]   Calculate terminal & column widths (NEW)
    Editors  --->
      [*] vi
      [*]     Enable ":" colon commands (no "ex" mode) (NEW)
      [*]     Enable yank/put commands and mark cmds (NEW)
      [*]     Enable search and replace cmds (NEW)
      [*]     Catch signals (NEW)
      [*]     Remember previous cmd and "." cmd (NEW)
      [*]     Enable -R option and "view" mode (NEW)
      [*]     Enable set-able options, ai ic showmatch (NEW)
      [*]     Support for :set (NEW)
      [*]     Handle window resize (NEW)
      [*]     Optimize cursor movement (NEW)
    Init Utilities  --->
      [*] init
      [*]     Support reading an inittab file? (NEW)
      [*]     Should init be _extra_ quiet on boot? (NEW)
      [*] halt
      [*] poweroff
      [*] reboot
    Login/Password Management Utilities  --->
      [*] Use internal password and group functions rather than system functions
      [*] getty
      [*] login
      [*] passwd
      [*] su
      [*] sulogin
      [*] Support for shadow passwords
      [*]     Use busybox shadow password functions
    Miscellaneous Utilities  --->
      [*] devfsd
    Another Bourne-like Shell  --->
      Choose your default shell (ash)  --->
      [*]     Optimize for size instead of speed
    Linux System Utilities  --->
      [*] dmesg
      [*] fbset
      [*]     Turn on extra fbset options (NEW)
      [*]     Turn on fbset readmode support (NEW)
      [*] mount
      [*] umount
      [*]     Support for loop devices

    Code: Select all

    make dep
    make
    make PREFIX=/mnt/stick install
    umount /mnt/stick/
  7. fbi

    Code: Select all

    emerge fbi

    Code: Select all

    mount /mnt/stick
    cp /usr/bin/fbi /mnt/stick/usr/bin/
    Ein ldd /usr/bin/fbi gibt uns folgende Shared Libraries aus:

    Code: Select all

    linux-gate.so.1 =>  (0xffffe000)
    libm.so.6 => /lib/libm.so.6 (0x40021000)
    libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x40043000)
    libungif.so.4 => /usr/lib/libungif.so.4 (0x40061000)
    libpng.so.3 => /usr/lib/libpng.so.3 (0x40069000)
    libz.so.1 => /usr/lib/libz.so.1 (0x40094000)
    libtiff.so.3 => /usr/lib/libtiff.so.3 (0x400a2000)
    libexif.so.9 => /usr/lib/libexif.so.9 (0x400e9000)
    libcurl.so.2 => /usr/lib/libcurl.so.2 (0x400fd000)
    libc.so.6 => /lib/libc.so.6 (0x40127000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
    libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40248000)
    libssl.so.0.9.7 => /usr/lib/libssl.so.0.9.7 (0x40325000)
    libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x40356000)
    libdl.so.2 => /lib/libdl.so.2 (0x40454000)
    Zwar wäre es möglich das Binary statisch zu kompilieren, aber ich hatte während meiner Versuche mehrere nicht reproduzierbare Fehler. Deswegen kopieren wir nun alle erforderlichen Bibliotheken auf den Stick:

    Code: Select all

    mkdir -p /mnt/stick/{lib,usr/lib}
    cp /lib/libm.so.6 /mnt/stick/lib/
    cp /usr/lib/libjpeg.so.62 /mnt/stick/usr/lib/
    cp /usr/lib/libungif.so.4 /mnt/stick/usr/lib/
    cp /usr/lib/libpng.so.3 /mnt/stick/usr/lib/
    cp /usr/lib/libz.so.1 /mnt/stick/usr/lib/
    cp /usr/lib/libtiff.so.3 /mnt/stick/usr/lib/
    cp /usr/lib/libexif.so.9 /mnt/stick/usr/lib/
    cp /usr/lib/libcurl.so.2 /mnt/stick/usr/lib/
    cp /lib/libc.so.6 /mnt/stick/lib/
    cp /lib/ld-linux.so.2 /mnt/stick/lib/
    cp /usr/X11R6/lib/libX11.so.6 /mnt/stick/usr/lib/
    cp /usr/lib/libssl.so.0.9.7 /mnt/stick/usr/lib/
    cp /usr/lib/libcrypto.so.0.9.7 /mnt/stick/usr/lib/
    cp /lib/libdl.so.2 /mnt/stick/lib/
    fbi benötigt die Standard-Konsolenschriftart. Diese kopieren wir als Letztes:

    Code: Select all

    mkdir -p /mnt/stick/usr/share/consolefonts
    cp /usr/share/consolefonts/lat1-16.psfu.gz /mnt/stick/usr/share/consolefonts/
    umount /mnt/stick
  • Bisherige Probleme/Fehler und deren Behebung
  • Problem: Der USB-Treiber wird geladen, aber kein Gerät sda angelegt. (Hinweis: Vom rootfs /dev/hdaX ist das Booten möglich.)

    Code: Select all

    Initializing USB Mass Storage driver...
    usbcore: registered new driver usb-storage
    USB Mass Storage support registered.
    Deswegen kommt es zu folgender Kernel Panic

    Code: Select all

    VFS: Cannot open root device "sda1" or unknown-block(0,0)
    Please append a correct "root=" boot option
    Kernel panic: VFS: Unable to mount root fs on unknown-block(0,0)
    Lösung: Nach dem Laden des USB-Treibers (EHCI, OHCI oder UHCI) dauert es einen Moment, bis der USB-Stick als Gerät initialisiert wird. Leider versucht der Kernel schon vorher das rootfs zu mounten :? Deswegen starten wir über eine Initial-Ramdisk (initrd) - die wir für den Bootsplash sowieso benötigen - und warten mit der Hilfe von usleep so lange (bei mir reichen 2 Sekunden), bis /dev/scsi/host1/bus0/target0/lun0/part1 angelegt wird.
  • Problem: Nach dem Ausführen der /etc/init.d/rcS wird die Konsole gestartet und gibt die folgende Fehlermeldung aus:

    Code: Select all

    Please press Enter to activate this console.
    BusyBox v1.00-pre10 (2004.06.01-08:33+0000) Built-in shell (ash)
    Enter 'help' for a list of commands.
    -sh: can't access tty; job control turned off
    / #
    Die Konsole funktioniert, aber die Meldung stört.

    Das Vergrößern der Ramdisk auf 8192k bringt auch keine Abhilfe (Tip aus: /bin/sh: can`t access tty; job control turned off und BOOT problem).

    Ein manuelles Anlegen der Geräte hilft auch nicht.

    Code: Select all

    mknod /mnt/stick/dev/tty c 5 0
    mknod /mnt/stick/dev/tty0 c 4 0
    mknod /mnt/stick/dev/tty1 c 4 1
    ...
    Lösung: Warum auch immer werden keine tty-Geräte in /dev angelegt, auf denen init die Konsole öffnen will. Der folgende Eintrag in der /etc/inittab zwingt init die virtuelle Konsole /dev/vc/0 zu benutzen:

    Code: Select all

    vc/1::respawn:/bin/sh
  • Bookmarks
  • Booting Linux off of a USB drive
  • bootingUSB HOWTO
  • Build a Gentoo install/boot/rescue LiveCD USB
  • Pocket Linux Guide
  • The Linux Bootdisk HOWTO
  • From Power Up To Bash Prompt
  • How To Build a Minimal Linux System from Source Code
  • Linux Magazin - Der Weg zur eigenen Minidistribution
  • ...
Gruß, Inte.
Last edited by Inte on Fri Jul 16, 2004 12:14 pm, edited 32 times in total.
Gentoo Linux - Die Metadistribution
Top
Sas
Veteran
Veteran
User avatar
Posts: 1229
Joined: Sat Jul 05, 2003 4:58 pm
Location: Germany
Contact:
Contact Sas
Website

  • Quote

Post by Sas » Fri May 28, 2004 2:50 pm

Hallo Inte,

hast du es statt mit '/dev/sda' bzw '/dev/sda1' mal mit '/dev/scsi/host0/bus0/target0/lun0/disc' bzw '/dev/scsi/host0/bus0/target0/lun0/part1' versucht?

Ansonsten: Kannst du denn auf den Stick zugreifen, wenn du deinen Kernel von /dev/hdaX bootest?

Gruß und viel Erfolg noch,
S(il)as
42
Top
Inte
Veteran
Veteran
User avatar
Posts: 1387
Joined: Tue Jul 15, 2003 3:33 pm
Location: Mannheim, GER
Contact:
Contact Inte
Website

  • Quote

Post by Inte » Fri May 28, 2004 3:09 pm

Sas wrote:hast du es statt mit '/dev/sda' bzw '/dev/sda1' mal mit '/dev/scsi/host0/bus0/target0/lun0/disc' bzw '/dev/scsi/host0/bus0/target0/lun0/part1' versucht?
Hab ich. Leider ist der Fehler identisch.
Sas wrote:Ansonsten: Kannst du denn auf den Stick zugreifen, wenn du deinen Kernel von /dev/hdaX bootest?
Das geht. Rate mal wie ich den Kernel und Grub auf den Stick bekommen habe :wink: Ich kann sogar mit dem Kernel vom Stick mein System von der Platte booten. Nur das System auf dem Stick läßt sich wegen dem bekannten Kernel Panic nicht mounten/starten.
Sas wrote:Gruß und viel Erfolg noch,
S(il)as
Danke :)

Gruß, Inte.
Gentoo Linux - Die Metadistribution
Top
Sas
Veteran
Veteran
User avatar
Posts: 1229
Joined: Sat Jul 05, 2003 4:58 pm
Location: Germany
Contact:
Contact Sas
Website

  • Quote

Post by Sas » Fri May 28, 2004 3:14 pm

Hmm, dann bestünde natürlich noch die Möglichkeit, dass der fstab-Eintrag fehlerhaft ist... Aber das hättest du sicher auch schon selbst bemerkt ;)

Sonst fällt mir im Moment auch nichts mehr ein, das Problem scheint also datenträgerspezifisch zu sein.
42
Top
Sas
Veteran
Veteran
User avatar
Posts: 1229
Joined: Sat Jul 05, 2003 4:58 pm
Location: Germany
Contact:
Contact Sas
Website

  • Quote

Post by Sas » Fri May 28, 2004 7:02 pm

Ich habe gerade gelesen, dass man um von einer SCSI-Platte booten zu können SCSI low-level drivers im Kernel haben muss.

Normalerweise würde ich ja auch sagen, dass das für einen USB-Stick _nicht_ vonnöten ist, aber da mir sonst auch nichts mehr einfällt... einen Versuch ist es vielleicht dennoch wert.

Ansonsten würde ich mal versuchen USB Massstorage und/oder SCSI Disk Support als Module zu Kompilieren und via initrd zu laden.

Sag bitte auf jeden Fall, wenn du weißt worans lag, denn das interessiert mich auch ;)
42
Top
dakjo
Veteran
Veteran
User avatar
Posts: 1544
Joined: Sat Jan 31, 2004 6:02 pm
Contact:
Contact dakjo
Website

  • Quote

Post by dakjo » Fri May 28, 2004 8:43 pm

Ich war auch schon mal soweit. Soweit ich weiss liegt das ein einem Timing problem. Der Kernel brauch einige Zeit um USB-Devices zu regestrieren und dann eine verknüpfung auf /dev/sd* herzustellen. Er kommt aber garnicht erst bis dahin. Da er vorher schon den VFS Error bekommt.
Top
Inte
Veteran
Veteran
User avatar
Posts: 1387
Joined: Tue Jul 15, 2003 3:33 pm
Location: Mannheim, GER
Contact:
Contact Inte
Website

  • Quote

Post by Inte » Tue Jun 01, 2004 3:17 pm

Danke für die Tipps. Es war das Timing-Problem. Jetzt geht's mit dem RootFs weiter. :D

Gruß, Inte.
Gentoo Linux - Die Metadistribution
Top
Inte
Veteran
Veteran
User avatar
Posts: 1387
Joined: Tue Jul 15, 2003 3:33 pm
Location: Mannheim, GER
Contact:
Contact Inte
Website

  • Quote

Post by Inte » Wed Jun 02, 2004 3:18 pm

[UPDATE]

Booten und hübsch Aussehen kann mein USB-Stick schon. :D

Bis auf den Shell-Fehler (siehe oben) , den fehlenden Login (brauch ich sowas überhaupt?) und mein eigentliches Ziel (FramebufferImageViewer) funktioniert alles.

Gruß, Inte.

PS.: Was wäre Euch lieber: FBI oder DFBSee? :roll:
Gentoo Linux - Die Metadistribution
Top
icefox13
Tux's lil' helper
Tux's lil' helper
Posts: 78
Joined: Mon Apr 19, 2004 1:58 pm
Location: Munich, Germany
Contact:
Contact icefox13
Website

  • Quote

Post by icefox13 » Wed Jun 02, 2004 8:33 pm

Hi Inte,
respekt, scheint ein gutes Projekt zu werden.

Eines konnte ich beim Überfliegen des Threads noch nicht ausmachen: Welche Größe peilst du für den USB-Stick an? bzw. wie groß sollte das System auf dem Stick maximal werden?

Danke,
icefox13
Top
Inte
Veteran
Veteran
User avatar
Posts: 1387
Joined: Tue Jul 15, 2003 3:33 pm
Location: Mannheim, GER
Contact:
Contact Inte
Website

  • Quote

Post by Inte » Thu Jun 03, 2004 8:00 am

icefox13 wrote:Eines konnte ich beim Überfliegen des Threads noch nicht ausmachen: Welche Größe peilst du für den USB-Stick an? bzw. wie groß sollte das System auf dem Stick maximal werden?
Momentan ist das System 6MB groß. Wenn die Funktionalität hergestellt ist, werd ich noch ein paar "Vielleicht könnte ich es ja gebrauchen"-Pakete rausschmeißen.
Gentoo Linux - Die Metadistribution
Top
mo-ca
Guru
Guru
User avatar
Posts: 313
Joined: Mon Feb 17, 2003 10:15 am
Location: Near Dresden, Germany

  • Quote

Post by mo-ca » Fri Jun 04, 2004 6:46 am

mensch inte, respekt !!!!!

wenn ich nen stick hätte, würde ich sofort mitmachen, denn ich denke mal, dass es übelst praktisch ist, wenn man so nen "notnagel" noch hat (quasi die bootdisk von morgen)

die frage ist: was planst du noch alles? also 2 sachen stehen noch aus, aber könnte das vllt sogar ein installationsmedium für gentoo werden ? die minimal disk ist ja auch nicht sooo riesig und ein etwas größerer stick müsste ja reichen, oder?

btw: was hast du für nen stick genommen?
Registred Linux User #239348
Top
bloodcount
n00b
n00b
Posts: 16
Joined: Sun Nov 10, 2002 12:36 am
Contact:
Contact bloodcount
Website

  • Quote

Post by bloodcount » Fri Jun 04, 2004 7:17 am

Hi, ist es mögliches folgendes Szenario über einen USB Stick ablaufen zu lassen und wenn ja, wie am besten? ;-)

- Rechner bekommt Strom
- Bootet (mit bootsplash)
- Kein Login notwendig
- Startet Direkt den X-Server und ein bestimmtes Programm
- Com 1 muss initalisiert werden, sodass eine Telnet Sitzung über diesen Port aufgebaut werden kann.

Das wichtigste dabei ist der speed, also das die Boot Zeit kurz ist.
Auch sollte es dem Rechner nichts ausmachen "einfach ausgeschaltet" zu werden.

Bin für Tipps / Anregungen sehr dankbar.

Wollte am Samstag mal "Damn Small Linux" ausprobieren, aber da stellt sich noch die Frage wie ich das ohne Login schaffen kann.
Aber vielleicht ist das ganze ja auch mit gentoo möglich, was mir natürlich lieber wäre :o
Top
dakjo
Veteran
Veteran
User avatar
Posts: 1544
Joined: Sat Jan 31, 2004 6:02 pm
Contact:
Contact dakjo
Website

  • Quote

Post by dakjo » Fri Jun 04, 2004 8:56 am

So mein Stick läuft jetzt auch, das einzige Problem das ich habe, ist das es kein /dev/sda1 gibt ? Dafür brauch ich hotplug oder ?

Das Problem ist das es an manchen PCs /dev/scsi/host0 an manchen host1 und an anderen host2 ist .

Nee, hotplug ? Weiss das einer ?
Top
Inte
Veteran
Veteran
User avatar
Posts: 1387
Joined: Tue Jul 15, 2003 3:33 pm
Location: Mannheim, GER
Contact:
Contact Inte
Website

  • Quote

Post by Inte » Fri Jun 04, 2004 9:10 am

dakjo wrote:So mein Stick läuft jetzt auch, das einzige Problem das ich habe, ist das es kein /dev/sda1 gibt? Dafür brauch ich hotplug oder?
Wahrscheinlich ist Dir aufgefallen, daß es auch kein /dev/hdx gibt. Im 2.4er Kernel wurden mit dem devfs neue Gerätenamen eingeführt (New device names). Wie die alten Gerätenamen angelegt werden (bzw. die Links gesetzt), hab ich noch nicht in Erfahrung bringen können.
dakjo wrote:Das Problem ist das es an manchen PCs /dev/scsi/host0 an manchen host1 und an anderen host2 ist.
Sicher? Wenn Du den Stick an ein laufendes System anschließt, bekommt er jedesmal eine neue HostID zugewiesen. Beim Neustart sollte der Stick immer unter host0 liegen.

Gruß, Inte.
Gentoo Linux - Die Metadistribution
Top
dakjo
Veteran
Veteran
User avatar
Posts: 1544
Joined: Sat Jan 31, 2004 6:02 pm
Contact:
Contact dakjo
Website

  • Quote

Post by dakjo » Fri Jun 04, 2004 9:15 am

Sicher? Wenn Du den Stick an ein laufendes System anschließt, bekommt er jedesmal eine neue HostID zugewiesen. Beim Neustart sollte der Stick immer unter host0 liegen.
Ja bin ich. An dem Gerät ist nichts angeschlossen an usb, ausser halt der stick.
Wenn ich dann von ihm boot fält der auf die nase, weil es /dev
/scsi/host0/* nicht gibt. Mit nem init=/initrd/bin/sh hab ich trotzdem ne shell.
Und es gibt nur /dev/scsi/host2/. Beim booten erkennt er auch nicht anderes.

LÖSUNG :
Ich schreib mir einfach nen shell script, was dann in /dev/scsi nach vorhandenen part sucht und linkt dann den ersten nach /dev/sda1 :)[/code]
Top
Massa
n00b
n00b
User avatar
Posts: 8
Joined: Fri Jun 04, 2004 6:42 am
Location: Friedrichshafen - Lake Constance, Germany

  • Quote

Post by Massa » Fri Jun 04, 2004 9:22 am

Ich bin gerade auf diesen Thread gestossen, weil ich auf der Suche nach einer Lösung für mein Problem war.

Mein generelles Problem: Booten von gentoo von einer externen USB2-Platte.
Das scheint sehr ähnlich zum USB-Stick zu sein, nur halt mit mehr Platz :wink:

Es hat mir schon sehr geholfen zu erfahren, dass ich eine initrd bauen muss um eine Zeitverzögerung zu erhalten.
Das funktioniert soweit auch (4 Sekunden Verzögerung) und ich sehe jetzt wenigstens, dass er die Platte erkennt (das kam ohne die Verzögerung nicht)

Leider schaffe ich es immer noch nicht, den Kernel zum mounten der Root-Partition zu bringen.
Für den "root=" Parameter habe ich schon alle /dev/sdaXX durchprobiert (eigentlich sollte 7 bei mir die richtige Partition sein) sowie die Variante mit "/dev/scsi/..."
Um dort das richtige anzugeben habe ich vorher von CD gebootet und dort nach dem richtigen Device geschaut.
Kann es sein, dass sich das beim direkten Booten der Platte (aus dem Bios heraus direkt die USB-Platte angewählt; Grub sitzt auf dieser Platte im MBR)

Gibt es eine einfache Möglichkeit, wie ich von der USB-Platte booten kann und direkt aus der RAM-Disk heraus einen Boot-Prompt erhalte?
Ich habe die Vermutung, dass sich die Device-Struktur durch das direkte Auswählen der Platte im Bios gegenüber einem Booten von CD geändert hat.
Aber wie kann ich herausfinden, welches das richtige Device ist???


Achja, das ganze ist auf einem Dell Laptop Latitude D800, falls das was bringt :-)
Top
Massa
n00b
n00b
User avatar
Posts: 8
Joined: Fri Jun 04, 2004 6:42 am
Location: Friedrichshafen - Lake Constance, Germany

  • Quote

Post by Massa » Fri Jun 04, 2004 9:35 am

Massa wrote:Gibt es eine einfache Möglichkeit, wie ich von der USB-Platte booten kann und direkt aus der RAM-Disk heraus einen Boot-Prompt erhalte?
Diese Frage hat sich dank dem Beitrag wohl erledigt :lol: (der kam in der Zeit, wo ich am Schreiben meines Beitrags war...)
dakjo wrote:Mit nem init=/initrd/bin/sh hab ich trotzdem ne shell.
Damit werde ich dann mal schauen, wo bei mir das Device liegt :)
Top
Massa
n00b
n00b
User avatar
Posts: 8
Joined: Fri Jun 04, 2004 6:42 am
Location: Friedrichshafen - Lake Constance, Germany

  • Quote

Post by Massa » Sun Jun 06, 2004 9:25 pm

Hmm, die Frage hat sich wohl doch noch nicht erledigt.
Weil es nämlich nicht funkioniert :-(

Wenn ich es recht verstehe, wuerde der Init-Prozess (also in dem Fall die Shell) erst _nach_ dem (erfolgreichen) mounten des Root-Devices kommen.

Also bin ich immer noch ziemlich ratlos, wie bei mir das Device heisst...

Weiss keiner mehr weiter?
Oder bin ich hier im Thread soweit OT, dass keiner antwortet und ich besser einen neuen Thread aufmachen sollte?
Top
dakjo
Veteran
Veteran
User avatar
Posts: 1544
Joined: Sat Jan 31, 2004 6:02 pm
Contact:
Contact dakjo
Website

  • Quote

Post by dakjo » Mon Jun 07, 2004 5:53 am

Wenn der kernel und initrd geladen ist , sollte es mit der shell gehen.

Der initrd wird ja erstmal entpackt. Er liegt dann unter /initrd.

Bei mir gehts jedenfalls so.
Top
Inte
Veteran
Veteran
User avatar
Posts: 1387
Joined: Tue Jul 15, 2003 3:33 pm
Location: Mannheim, GER
Contact:
Contact Inte
Website

  • Quote

Post by Inte » Mon Jun 07, 2004 9:53 am

dakjo wrote:So mein Stick läuft jetzt auch, das einzige Problem das ich habe, ist das es kein /dev/sda1 gibt ? Dafür brauch ich hotplug oder?
Hab jetzt rausgefunden, wie die alten Devices angelegt werden:
  1. Linux Devfs (Device File System) FAQ - Old Compatibility Names
  2. BusyBox - devfsd
Oder kurz zusammengefasst:

Code: Select all

cat >> /mnt/stick/etc/init.d/rcS << "EOF"
/bin/echo "Starting devfsd ..."
/sbin/devfsd /dev
EOF

Code: Select all

cat > /mnt/stick/etc/devfsd.conf << "EOF"
REGISTER	  .*		MKOLDCOMPAT
UNREGISTER	.*		RMOLDCOMPAT
EOF
Gruß, Inte.
Gentoo Linux - Die Metadistribution
Top
Sonie
n00b
n00b
Posts: 13
Joined: Mon Jun 07, 2004 8:37 pm
Location: Rastatt

Grub will aber kein (HD2) finden...

  • Quote

Post by Sonie » Mon Jun 07, 2004 8:50 pm

Der Beitrag ist klasse...,so richtig fit mit Linux bin ich aber nicht... weshalb ich mir nicht immer zu helfen weiss..

Mein Problem ist im Augenblick hier: mit GRUB kann ich keinen Bootblock auf den USB-Stick schreiben.. er meldet nur HD0 und HD2 (Cdrom) als Laufwerke. Den USB-Stick selber kann ich aber mit /dev(SDA2 mounten...)


Gentoo 2.6.5r1 P4, 3ghz Notebook mit I865-Chipsatz

Für einen Tipp wäre ich echt dankbar..
havn't more to say.
Top
dakjo
Veteran
Veteran
User avatar
Posts: 1544
Joined: Sat Jan 31, 2004 6:02 pm
Contact:
Contact dakjo
Website

  • Quote

Post by dakjo » Mon Jun 07, 2004 10:31 pm

Dann sollte es ja hd3 sein !
Top
Massa
n00b
n00b
User avatar
Posts: 8
Joined: Fri Jun 04, 2004 6:42 am
Location: Friedrichshafen - Lake Constance, Germany

  • Quote

Post by Massa » Tue Jun 08, 2004 7:52 am

dakjo wrote:Wenn der kernel und initrd geladen ist , sollte es mit der shell gehen.

Der initrd wird ja erstmal entpackt. Er liegt dann unter /initrd.
Ja, initrd wird entpackt und auch linuxrc daraus ausgeführt.
Danach will er aber dann zuerst das root-device mounten, danach käme dann das starten des init-Prozesses.
Und soweit kommt er bei mir eben schon nicht mehr :(
dakjo wrote:Bei mir gehts jedenfalls so.
Bei mir leider nicht :cry: (Kernel Sourcen sind übrigens bei mir 2.6.5-gentoo-r1)
Geht das bei Dir auch mit falschen Angaben "root=XXX" ?
Top
Inte
Veteran
Veteran
User avatar
Posts: 1387
Joined: Tue Jul 15, 2003 3:33 pm
Location: Mannheim, GER
Contact:
Contact Inte
Website

  • Quote

Post by Inte » Tue Jun 08, 2004 8:21 am

Massa wrote:Ja, initrd wird entpackt und auch linuxrc daraus ausgeführt.
Danach will er aber dann zuerst das root-device mounten, danach käme dann das starten des init-Prozesses.
Und soweit kommt er bei mir eben schon nicht mehr :(
Klar geht's nicht weiter, weil init erst nach dem Mounten der der Root-Partition gestartet wird.

Versuch mal die initrd als root anzugeben:

Code: Select all

root=/dev/ram0 init=/bin/sh
Dann sollte die Shell der initrd gestartet werden.

Gruß, Inte.
Gentoo Linux - Die Metadistribution
Top
Massa
n00b
n00b
User avatar
Posts: 8
Joined: Fri Jun 04, 2004 6:42 am
Location: Friedrichshafen - Lake Constance, Germany

  • Quote

Post by Massa » Tue Jun 08, 2004 2:51 pm

Inte wrote:
Massa wrote:Ja, initrd wird entpackt und auch linuxrc daraus ausgeführt.
Danach will er aber dann zuerst das root-device mounten, danach käme dann das starten des init-Prozesses.
Und soweit kommt er bei mir eben schon nicht mehr :(
Klar geht's nicht weiter, weil init erst nach dem Mounten der der Root-Partition gestartet wird.
Ist doch meine Rede :wink:
Ich habe mich nur gewundert, dass es bei dakjo geht.
Inte wrote:Versuch mal die initrd als root anzugeben:

Code: Select all

root=/dev/ram0 init=/bin/sh
Dann sollte die Shell der initrd gestartet werden.
Der Tipp war Gold wert :)
Jetzt habe ich eine Shell - Hurra!

Jetzt kann ich schauen, welches Device meine USB-Platte ist.
Doch halt, da stimmt doch was nicht :?:
Es gibt /dev/scsi, das ist aber komplett leer!?
Ebenso mit /dev/usb, auch existent aber komplett leer!?
Aber ich habe doch SCSI-Support und USB-Support im Kernel (eingebaut, nicht als Modul)- Seltsam!

Es gibt noch ein "/dev/discs/disc0/disc" und "/dev/ide/...", das ist aber immer meine IDE-Platte...

woher weiss der devfsd eigentlich, dass er ein USB-Storage Device in ein SCSI-Device umwandeln soll?
Und durch was erkennt devfsd eigentlich neue USB-Devices?
Sagt ihm der Kernel das?

Ein "mount -t devfs -o remount none /dev" hilft leider auch nicht.

Ich bin mal wieder etwas ratlos.... :?
Top
Post Reply
  • Print view

77 posts
  • 1
  • 2
  • 3
  • 4
  • Next

Return to “Deutsche Dokumentation”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic