MINIMIX auf USB-Stick ? [ doch gelöst ]

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
needle23
Beiträge: 36
Registriert: 03.12.2003 13:53:40

MINIMIX auf USB-Stick ? [ doch gelöst ]

Beitrag von needle23 » 27.06.2006 12:03:13

Hallo,

ich habe mal eine Frage:
kann mir einer sagen, was ich ändern muß um die Distri anstatt von einer CD/DVD von einem USB-Stick zu booten?

Gibts da ggf schon irgendwo nen howto ? ich habe jedenfalls beim Suchen nix gefunden

Was ich jetzt schon mal probiert habe war:

ich habe nen Stick mit Fat16 formatiert und dann Syslinux drauf installiert.
Den Kernel, die initrd und das Image auf den Stick kopiert und dann mal gebootet.
(syslinux.cfg hab ich auch angelegt)

Kernel und initrd zieht er an, aber später dann bricht der Bootvorgang ab und zwar mit der Meldung: "Unable to identify CD-ROM format"

Ich vermute mal, daß irgendwo das Device steht, wo er sucht (und da steht vermutlich nicht /dev/sda1 mit drin - und ggf fehlen da auch die entsprechenden Module in der initrd (scsi und usb spezifische)

Kann mir da einer nen Tipp zu geben ?


Gruß,

NeEdLe23
Zuletzt geändert von needle23 am 04.07.2006 14:38:12, insgesamt 6-mal geändert.

needle23
Beiträge: 36
Registriert: 03.12.2003 13:53:40

Beitrag von needle23 » 27.06.2006 13:01:17

ok es scheint mit der verwendeten linuxrc zu tun zu haben:

Code: Alles auswählen

#!/bin/sh
export PATH=/bin:/sbin
mount -t proc none /proc
CMDLINE=`cat /proc/cmdline`
umount /proc

# CDROM suchen und mounten
CDROM=""
for x in hda hdb hdc hdd
do
  mount -t iso9660 -r /dev/${x} /cdrom > /dev/null 2>&1
  if [ "$?" = "0" ]
  then
         CDROM="${x}"
         break
  fi
done

# wenn CDROM nicht gefunden
if [ "${CDROM}" == "" ]
then
  exec /bin/sh
  exit
fi

#/bin/bash

CDBOOT="yes"
export CDBOOT

# mount root und erstelle rw Verzeichnisse 
modprobe unionfs
mount -t squashfs -o loop /cdrom/files/source.img /new > /dev/null 2>&1
mount -t tmpfs -o size=64m none /new/ramdisk > /dev/null 2>&1
mount -t unionfs -o dirs=/new/ramdisk=rw:/new=ro none /new > /dev/null 2>&1

# starte Original Debian init Script

cd /new
pivot_root . MINIMIX
exec /usr/sbin/chroot . /bin/sh <<- EOF >dev/console 2>&1
exec /sbin/init ${CMDLINE}
EOF
ich werde mein bootdevice (/dev/sda1) mal hinzufügen und auch mal die mount-aufrufe anpassen - mal schauen ob es dann funktioniert.

needle23
Beiträge: 36
Registriert: 03.12.2003 13:53:40

Beitrag von needle23 » 28.06.2006 13:55:41

hm - jetzt wollte ich nach der Anleitung auf http://www.minimix.ch/debian-live/ das Iso remastern und bekomme beim kopieren / bzw entpacken mit dem dort angegebenen Script copy_files einige Fehler angezeit :( :
Jun 28 13:23:01 localhost kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000008
Jun 28 13:23:01 localhost kernel: printing eip:
Jun 28 13:23:01 localhost kernel: c01b590f
Jun 28 13:23:01 localhost kernel: *pde = 00000000
Jun 28 13:23:01 localhost kernel: Oops: 0000 [#1]
Jun 28 13:23:02 localhost kernel: PREEMPT
Jun 28 13:23:02 localhost kernel: Modules linked in: evdev joydev ipv6 af_packet uhci_hcd ohci_hcd ehci_hcd usbcore ne2k_pci 8390 tsdev mousedev psmouse genrtc unix unionfs
Jun 28 13:23:02 localhost kernel: CPU: 0
Jun 28 13:23:02 localhost kernel: EIP: 0060:[<c01b590f>] Not tainted VLI
Jun 28 13:23:02 localhost kernel: EFLAGS: 00000206 (2.6.16.15 #1)
Jun 28 13:23:02 localhost kernel: EIP is at zlib_inflate+0x308/0x39f
Jun 28 13:23:02 localhost kernel: eax: c9d40b95 ebx: c03aeca0 ecx: 00000000 edx: 00004100
Jun 28 13:23:02 localhost kernel: esi: 0000001f edi: fffffffb ebp: fffffffb esp: c58579fc
Jun 28 13:23:02 localhost kernel: ds: 007b es: 007b ss: 0068
Jun 28 13:23:02 localhost kernel: Process cp (pid: 2349, threadinfo=c5856000 task=c620c070)
Jun 28 13:23:03 localhost kernel: Stack: <0>000000da 00000107 c20bbd07 c7179f0c c5857b70 c018f425 c03aeca0 00000005
Jun 28 13:23:03 localhost kernel: 00000000 c71793ac c7179240 c7179344 c7179378 c71792dc c7179170 c7179274
Jun 28 13:23:03 localhost kernel: c71792a8 c717920c c7179f40 c71791a4 c71791d8 c717913c c7179e70 c7179f74
Jun 28 13:23:03 localhost kernel: Call Trace:
Jun 28 13:23:03 localhost kernel: [<c018f425>] squashfs_read_data+0x31d/0x3dc
Jun 28 13:23:03 localhost kernel: [<c018f93b>] get_fragment_location+0xf1/0x124
Jun 28 13:23:03 localhost kernel: [<c01940d6>] squashfs_alloc_inode+0x10/0x1e
Jun 28 13:23:03 localhost kernel: [<c0163086>] alloc_inode+0xf6/0x17c
Jun 28 13:23:03 localhost kernel: [<c01638ce>] new_inode+0x87/0x9f
Jun 28 13:23:03 localhost kernel: [<c018fbf2>] squashfs_new_inode+0x17/0x8a
Jun 28 13:23:03 localhost kernel: [<c018fb53>] get_cached_fragment+0x1a7/0x22f
Jun 28 13:23:03 localhost kernel: [<c0186551>] read_block_bitmap+0x34/0x5a
Jun 28 13:23:03 localhost kernel: [<c0192ca6>] squashfs_readpage+0x202/0x4c3
Jun 28 13:23:03 localhost kernel: [<c0193fb6>] squashfs_lookup+0x48d/0x49a
Jun 28 13:23:03 localhost kernel: [<ccb0a3bf>] fist_dprint_internal+0xb/0x54 [unionfs]
Jun 28 13:23:03 localhost kernel: [<ccb0a3bf>] fist_dprint_internal+0xb/0x54 [unionfs]
Jun 28 13:23:03 localhost kernel: [<ccb0bb5b>] __fist_print_generic_dentry+0x22f/0x304 [unionfs]
Jun 28 13:23:03 localhost kernel: [<c0114ce4>] __wake_up_locked+0x10/0x12
Jun 28 13:23:03 localhost kernel: [<c01b1898>] __down_trylock+0x3e/0x5a
Jun 28 13:23:03 localhost kernel: [<c02a2cbf>] __down_failed_trylock+0x7/0xc
Jun 28 13:23:03 localhost kernel: [<c01b082b>] radix_tree_node_alloc+0x13/0x46
Jun 28 13:23:03 localhost kernel: [<c01b09fa>] radix_tree_insert+0x5f/0xd3
Jun 28 13:23:03 localhost kernel: [<c0133d18>] add_to_page_cache+0x3a/0xa0
Jun 28 13:23:03 localhost kernel: [<c0133d6b>] add_to_page_cache+0x8d/0xa0
Jun 28 13:23:03 localhost kernel: [<c0139c1b>] read_pages+0x84/0xcc
Jun 28 13:23:03 localhost kernel: [<c0137d97>] __alloc_pages+0x48/0x25f
Jun 28 13:23:03 localhost kernel: [<ccb0a3bf>] fist_dprint_internal+0xb/0x54 [unionfs]
Jun 28 13:23:03 localhost kernel: [<c0139db2>] __do_page_cache_readahead+0x14f/0x168
Jun 28 13:23:03 localhost kernel: [<c0139ec5>] blockable_page_cache_readahead+0x46/0x96
Jun 28 13:23:03 localhost kernel: [<c013a01e>] page_cache_readahead+0x72/0x107
Jun 28 13:23:03 localhost kernel: [<c013439f>] do_generic_mapping_read+0x141/0x42a
Jun 28 13:23:03 localhost kernel: [<c013492a>] __generic_file_aio_read+0x1a0/0x1d2
Jun 28 13:23:03 localhost kernel: [<c0134688>] file_read_actor+0x0/0x102
Jun 28 13:23:03 localhost kernel: [<c0134a50>] generic_file_read+0xae/0xc7
Jun 28 13:23:03 localhost kernel: [<c01295ac>] autoremove_wake_function+0x0/0x3a
Jun 28 13:23:03 localhost kernel: [<c0155a4d>] sys_fstat64+0x20/0x27
Jun 28 13:23:03 localhost kernel: [<c014d278>] vfs_read+0xa6/0x13c
Jun 28 13:23:03 localhost kernel: [<c014d578>] sys_read+0x3b/0x63
Jun 28 13:23:03 localhost kernel: [<c0103161>] syscall_call+0x7/0xb
Jun 28 13:23:03 localhost kernel: Code: 08 40 89 03 89 51 08 8b 43 1c 89 fd c7 00 0a 00 00 00 8b 43 04 85 c0 74 7b 48 89 43 04 ff 43 08 8b 03 0f b6 10 8b 4b1c c1 e2 08 <03> 51 08 40 89 03 89 51 08 8b 43 1c 89 fd c7 00 0b 00 00 00 8b
ich benutze qemu Version 0.6.2 (aus dem Debian Stable)
(habe es jetzt auch mal mit der Version 0.8.1 probiert - bei gleichem Fehler)

anscheinend läuft das squashfs nicht sauber, aber so wirklich durchblicken kann ich da nicht.

Er hat auch Dateien kopiert - ich bin mir jedoch nicht sicher ob das wirklich fehlerfrei abgelaufen ist.

hat einer nen Tip :?:


Gruss,

NeEdLe23

needle23
Beiträge: 36
Registriert: 03.12.2003 13:53:40

Beitrag von needle23 » 30.06.2006 13:11:06

Ich habe das System noch einmal komplett selbst erstellt anstatt aus dem iso-file zu remastern - dann habe ich auch die oben genannten Fehlermeldungen nicht mehr.

So, ich habe jetzt mal die initrd ein wenig modifiziert und auch den Kernel angepaßt.

modifikation Kernel:

- statisches einkompilieren von folgenden Treibern:
( sonst kann man den Stick gar nicht mounten aus der linuxrc )

Code: Alles auswählen

  scsi (sg und sd_mod)
  usb ( ehci-hcd, ohci-hcd, uhci-hcd, usb-storage )
  filesysteme ( vfat, msdos, ext2, ext3 )

modifikation der initrd:

- anlegen der devices in /dev/

Code: Alles auswählen

  mknod sda b 8 0
  mknod sdb b 8 16
- einfuegen von sleep & echo ins /bin zur Visualisierung im Bootvorgang ( die libm fuer sleep auch )

- aendern der linuxrc

Code: Alles auswählen

#!/bin/sh
export PATH=/bin:/sbin
mount -t proc none /proc
CMDLINE=`cat /proc/cmdline`
umount /proc

# CDROM suchen und mounten
# orig auskommentiert
#CDROM=""
#for x in hda hdb hdc hdd
#do
#  mount -t iso9660 -r /dev/${x} /cdrom > /dev/null 2>&1
#  if [ "$?" = "0" ]
#  then
#         CDROM="${x}"
#         break
#  fi
#done

# geaenderte Version fuer USB-Stick:
CDROM=""
echo "Sleep um auf Erkennung von sda zu warten..."
sleep 10
for x in sda1 sdb1
do
  mount -t vfat -r /dev/${x} /cdrom > /dev/null 2>&1
  if [ "$?" = "0" ]
  then
         CDROM="${x}"
         break
  fi
done

# wenn CDROM nicht gefunden
if [ "${CDROM}" == "" ]
then
  echo "Boot Medium nicht gefunden! starte Shell..."
  exec /bin/sh
  exit
fi

#/bin/bash
CDBOOT="yes"
export CDBOOT

# mount root und erstelle rw Verzeichnisse
modprobe unionfs
mount -t squashfs -o loop /cdrom/files/source.img /new > /dev/null 2>&1
mount -t tmpfs -o size=64m none /new/ramdisk > /dev/null 2>&1
mount -t unionfs -o dirs=/new/ramdisk=rw:/new=ro none /new > /dev/null 2>&1

# starte Original Debian init Script
cd /new
pivot_root . MINIMIX
exec /usr/sbin/chroot . /bin/sh <<- EOF >dev/console 2>&1
exec /sbin/init ${CMDLINE}
EOF
leider findet das Script meinen Stick nicht :roll:
der Kernel schreibt jedoch, daß der Stick erkannt wird als /dev/sda .

Wenn ich aus der Shell nach dem Abbruch des linuxrc nen

Code: Alles auswählen

mount -t vfat /dev/sda1 /cdrom 
ausfuehre, dann sagt er mir:
mount: special device /dev/sda1 does not exist
jetzt bin ich wieder mal ein bissl ratlos 8O


gruss,

NeEdLe23

needle23
Beiträge: 36
Registriert: 03.12.2003 13:53:40

Beitrag von needle23 » 30.06.2006 14:16:57

Okay , ich habe jetzt mal die devices in der initrd wieder entfernt und per /sbin/MAKEDEV erstellt.
Dann sieht das Ganze etwas anders aus:

Code: Alles auswählen

###:/mnt/initrd/dev# ls -l
insgesamt 0
crw-r--r--  1 root root  5,  1 2006-06-30 10:00 console
brw-r--r--  1 root root  3,  0 2006-06-30 10:00 hda
brw-r--r--  1 root root  3, 64 2006-06-30 10:00 hdb
brw-r--r--  1 root root 22,  0 2006-06-30 10:00 hdc
brw-r--r--  1 root root 22, 64 2006-06-30 10:00 hdd
brw-r--r--  1 root root  7,  0 2006-06-30 10:00 loop0
crw-r--r--  1 root root  1,  3 2006-06-30 10:00 null
brw-r--r--  1 root root  8,  0 2006-06-30 12:44 sda
brw-r--r--  1 root root  8, 16 2006-06-30 12:44 sdb
crw-r--r--  1 root root  4,  0 2006-06-30 10:00 tty

Code: Alles auswählen

###:/mnt/initrd/dev# rm -f sda

Code: Alles auswählen

###:/mnt/initrd/dev# rm -f sdb

Code: Alles auswählen

###:/mnt/initrd/dev# /sbin/MAKEDEV sda

Code: Alles auswählen

###:/mnt/initrd/dev# /sbin/MAKEDEV sdb

Code: Alles auswählen

###:/mnt/initrd/dev# ls -l
insgesamt 0
crw-r--r--  1 root root  5,  1 2006-06-30 10:00 console
brw-r--r--  1 root root  3,  0 2006-06-30 10:00 hda
brw-r--r--  1 root root  3, 64 2006-06-30 10:00 hdb
brw-r--r--  1 root root 22,  0 2006-06-30 10:00 hdc
brw-r--r--  1 root root 22, 64 2006-06-30 10:00 hdd
brw-r--r--  1 root root  7,  0 2006-06-30 10:00 loop0
crw-r--r--  1 root root  1,  3 2006-06-30 10:00 null
brw-rw----  1 root disk  8,  0 2006-06-30 13:51 sda
brw-rw----  1 root disk  8,  1 2006-06-30 13:51 sda1
brw-rw----  1 root disk  8, 10 2006-06-30 13:51 sda10
brw-rw----  1 root disk  8, 11 2006-06-30 13:51 sda11
brw-rw----  1 root disk  8, 12 2006-06-30 13:51 sda12
brw-rw----  1 root disk  8, 13 2006-06-30 13:51 sda13
brw-rw----  1 root disk  8, 14 2006-06-30 13:51 sda14
brw-rw----  1 root disk  8, 15 2006-06-30 13:51 sda15
brw-rw----  1 root disk  8,  2 2006-06-30 13:51 sda2
brw-rw----  1 root disk  8,  3 2006-06-30 13:51 sda3
brw-rw----  1 root disk  8,  4 2006-06-30 13:51 sda4
brw-rw----  1 root disk  8,  5 2006-06-30 13:51 sda5
brw-rw----  1 root disk  8,  6 2006-06-30 13:51 sda6
brw-rw----  1 root disk  8,  7 2006-06-30 13:51 sda7
brw-rw----  1 root disk  8,  8 2006-06-30 13:51 sda8
brw-rw----  1 root disk  8,  9 2006-06-30 13:51 sda9
brw-rw----  1 root disk  8, 16 2006-06-30 13:52 sdb
brw-rw----  1 root disk  8, 17 2006-06-30 13:52 sdb1
brw-rw----  1 root disk  8, 26 2006-06-30 13:52 sdb10
brw-rw----  1 root disk  8, 27 2006-06-30 13:52 sdb11
brw-rw----  1 root disk  8, 28 2006-06-30 13:52 sdb12
brw-rw----  1 root disk  8, 29 2006-06-30 13:52 sdb13
brw-rw----  1 root disk  8, 30 2006-06-30 13:52 sdb14
brw-rw----  1 root disk  8, 31 2006-06-30 13:52 sdb15
brw-rw----  1 root disk  8, 18 2006-06-30 13:52 sdb2
brw-rw----  1 root disk  8, 19 2006-06-30 13:52 sdb3
brw-rw----  1 root disk  8, 20 2006-06-30 13:52 sdb4
brw-rw----  1 root disk  8, 21 2006-06-30 13:52 sdb5
brw-rw----  1 root disk  8, 22 2006-06-30 13:52 sdb6
brw-rw----  1 root disk  8, 23 2006-06-30 13:52 sdb7
brw-rw----  1 root disk  8, 24 2006-06-30 13:52 sdb8
brw-rw----  1 root disk  8, 25 2006-06-30 13:52 sdb9
crw-r--r--  1 root root  4,  0 2006-06-30 10:00 tty
danach findet er auch den Stick ...

... allerdings noergelte er mich dann voll er koenne die codepage 437 nicht finden, also hab ich die codepages fuer die Filesystem auch noch statisch in den Kern compiliert.

dann mounted er /dev/sda1 und versucht dann auch brav das unionfs ebenfalls zu mounten. Bzw. erstmal das unionfs modul einzuhaengen. Und hier hakt es dann wieder:
FATAL: Error inserting unionfs (/lib/modules/2.6.133.2/kernel/fs/unionfs.ko): Invalid module format
danach quitiert er dann mit ner Kernel panic.

Was soll ich davon nun wieder halten - ich hab das Modul doch nicht veraendert - jedenfalls nicht wissentlich....


.oO( irgendwie nen einsamer Thread ^^ )

Edit by Snoopy:
Code-Tags verändert.

needle23
Beiträge: 36
Registriert: 03.12.2003 13:53:40

Beitrag von needle23 » 30.06.2006 15:25:35

jetzt habe ich das unionfs.ko noch einmal neu erstellt und es funktioniert bis das System dann in das gemountete root per chroot springen will. Dann schreibt er mir folgendes:
unix: disagrees about version of symbol struct_module
und bleibt dann einfach stehen *seufz*

ich baue jetzt nochmal das bzImage und die module neu und erstelle dann das Image noch einmal neu - ich denke mal daran liegt es, da ich beim probieren immer nur jeweils das bzImage oder die module erstellt habe und nicht immer beides ...

needle23
Beiträge: 36
Registriert: 03.12.2003 13:53:40

Beitrag von needle23 » 03.07.2006 09:39:02

so - nachdem ich den Kernel nochmal komplett mit den Modulen gebaut habe funktioniert der Bootvorgang :-)

wurde ja auch Zeit *g*

sobald ich mal ein wenig Zeit habe werde ich die Aenderungen mal zusammenfassen und hier posten.

Gruß,

NeEdLe

needle23
Beiträge: 36
Registriert: 03.12.2003 13:53:40

Beitrag von needle23 » 04.07.2006 14:28:33

Tja es gibt wohl doch noch ein Problem ....

wenn ich nun versuchen will die Flashdisk zu mounten dann bekomme ich wieder ein paar merkwuerdige Fehlermeldungen :

Code: Alles auswählen

mount /dev/sda1 /mnt/stick
Buffer I/O error on device sda1, logical block 2011520
Buffer I/O error on device sda1, logical block 2011521
Buffer I/O error on device sda1, logical block 2011522
Buffer I/O error on device sda1, logical block 2011523
Buffer I/O error on device sda1, logical block 2011524
Buffer I/O error on device sda1, logical block 2011525
Buffer I/O error on device sda1, logical block 2011526
Buffer I/O error on device sda1, logical block 2011527
Buffer I/O error on device sda1, logical block 2011520
Buffer I/O error on device sda1, logical block 2011521
mount: /dev/sda1 already mounted or /mnt/stick/ busy
aber es ist weder /dev/sda1 gemounted noch ist /mnt/stick/busy 8O

hat wer ne Ahnung ?

NeEdLe23

needle23
Beiträge: 36
Registriert: 03.12.2003 13:53:40

Beitrag von needle23 » 04.07.2006 14:37:50

ok -ok - natuerlich ist /dev/sda1 gemounted - ich kann es nur nicht mehr per df oder mount so sehen.

aber in /MINIMIX/cdrom/ ist die Flash noch gemountet.

Antworten