18.07.2018, 18:46 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: Knoppix Forum | www.KnoppixForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Beiträge: 650

Geschlecht: Männlich

1

29.05.2009, 13:44

Fehler in der minirt.gz

Hallo,

da ich mittlerweile außer dem hier schon einigen bekanntem Problem beim Installieren von Knoppix auf nen ext3 formatierten USB-Stick, noch einen weiteren Fehler in der minirt.gz gefunden habe, dachte ich mir das wäre evtl einen eigenen Thread wert, in den jeder posten kann, wenn ihm ein Fehler auffällt.

Nochmal als Übersicht zum mount-Problem. Die betreffende Funktion in der minirt.gz sieht so aus:

Zitat

trymount(){
mount -t vfat -o "$RW",umask=000,shortname=winnt,noatime "$1" "$2" || \
mount -t iso9660 -o ro "$1" "$2" || \
ntfs-3g -o "$RW",umask=000,force "$1" "$2" || \
mount -t reiserfs "$RW",noatime "$1" "$2" || \
mount -t ext3 "$RW",noatime "$1" "$2" || \
mount -t ext2 "$RW",noatime "$1" "$2"
return "$?"
}


In dieser Form können nur Medien, die vfat bzw iso9660 formatiert sind eingebunden werden. Korrekt muss sie so aussehen:

Zitat

trymount(){
mount -t vfat -o "$RW",umask=000,shortname=winnt,noatime "$1" "$2" || \
mount -t iso9660 -o ro "$1" "$2" || \
mount -t ntfs-3g -o "$RW",umask=000,force "$1" "$2" || \
mount -t reiserfs -o "$RW",noatime "$1" "$2" || \
mount -t ext3 -o "$RW",noatime "$1" "$2" || \
mount -t ext2 -o "$RW",noatime "$1" "$2"
return "$?"
}


Ein weiterer Fehler ist in der Funktion:

Zitat

load_modules(){
local mod
for mod in /modules/*.ko /modules/scsi/*.ko; do
[ -r "$mod" -a ! -d /sys/module/"${mod%.ko}" ] && insmod -f "$mod"
done
}


Korrekt muss sie so aussehen:

Zitat

load_modules(){
local mod
for mod in /modules/*.ko /modules/scsi/*.ko; do
[ -r "$mod" -a ! -d /sys/module/"${mod%.ko}" ] && insmod "$mod"
done
}


insmod kennt keine Option -f und interpretiert -f als das zu ladende Modul, das aber durch "$mod" spezifiziert wird. Die Funktion dient wohl dazu vorab Module zu laden, die evtl später benötigt werden. Dazu muss man diese ins Verz modules der minirt.gz kopieren.


mfg Jack

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »JackCarver« (29.05.2009, 13:55)


klaus2008

Meister

Beiträge: 2 688

Geschlecht: Männlich

2

29.05.2009, 18:36

Hallo!

Zitat

Die Funktion dient wohl dazu vorab Module zu laden, die evtl später benötigt werden. Dazu muss man diese ins Verz modules der minirt.gz kopieren.

Ich boote Knoppix von einer externen Firewire-Festplatte. Dafür ergänzte ich entsprechend der Anleitung http://www.ibm.com/developerworks/linux/…l-fireboot.html das Verzeichnis modules um die Module ieee1394, ohci1394, raw1394 und sbp2. Das Booten verläuft bei meinem Notebook per Firewire viel schneller als mit dem USB-Stick, weil der Computer nur USB 1.1 kennt.

Gruss Klaus

FM_81

Fortgeschrittener

3

29.05.2009, 20:19

Könnte dieses zuviel da stehende "-f" eventuell nicht auch dafür verantwortlich sein, daß das versuchte Nachladen von Modulen hier Persistant Image für Knoppix CD Version 6.01 nicht klappte? Betrifft mich nicht selbst, ist nur mehr so ein Gedanke ...?

MfG, FM_81
ACHTUNG!
Ihre Systemleistung reicht nicht aus, um einen BLUE-SCREEN zu erzeugen!
Möchten Sie statt dessen einen GREEN-SCREEN sehen?

---- [Ja] ---- [Nein] ---- [Weiß noch nicht] ----

klaus2008

Meister

Beiträge: 2 688

Geschlecht: Männlich

4

29.05.2009, 20:37

In der von mir (siehe dortigen Beitrag #28 ) angefertigten ISO-Datei war der Fehler bereits korrigiert. Ich fand ihn damals, als ich die Firewire-Unterstützung ergänzte (dortiger Beitrag #23).

Gruss Klaus

Beiträge: 650

Geschlecht: Männlich

5

29.05.2009, 21:30

Zitat

könnte dieses zuviel da stehende "-f"


Mit dem f wird gar nix mehr geladen, was du in das Verz modules der minirt.gz kopierst. Den Fehler sieht man rel schnell beim Booten, da die Fehlerausgabe hier auf die Konsole geht.
Ist mir mehr zufällig aufgefallen als ich ein cloop Modul mit Abhängigkeiten zum Modul zlib_inflate erstellt hatte. Mittels dieser Funktion konnte ich zuerst das zlib_Modul laden und dadurch die Abhängigkeiten für insmod cloop.ko auflösen.

Hab nun aber den Kernel neukompiliert und zlib_inflate einfach in den Kernel kompiliert=>cloop hat nu keine Abhängigkeiten mehr.


mfg Jack

Beiträge: 650

Geschlecht: Männlich

6

29.05.2009, 22:11

Zitat

weil der Computer nur USB 1.1 kennt.


...der hat aber schon einige Jahre aum Buckel ;)

Naja jetzt kommt ja langsam USB 3.0, das beschleunigt die Sache best nochmal gehörig.


mfg Jack

klaus2008

Meister

Beiträge: 2 688

Geschlecht: Männlich

7

29.05.2009, 22:28

Das Nachrüsten von USB 2.0 mit einer PC-Card schlug fehl. :cursing:

Zitat

Naja jetzt kommt ja langsam USB 3.0, das beschleunigt die Sache best nochmal gehörig.

Wenn man http://www.heise.de/newsticker/Erster-US…/meldung/138106 liest, bekommt man den Eindruck, dass das noch ein paar Monate dauern kann. Bis dahin ist mir Firewire schnell genug ^^

Gruss Klaus

Beiträge: 650

Geschlecht: Männlich

8

22.06.2009, 11:24

Muss jetzt mal wieder den schon etwas älteren Thread vorkramen...Wobei ich gleich dazu sagen muss, dass ich nicht weiß ob dieses minirt Problem nur meine Version betrifft (könnte ja sein, dass da schon einige verbesserte gibt) oder ob da alle anderen auch betroffen sind. Noch dazu ist meine an best Stellen für mein Live-System verändert, sollte aber gerade diesen Punkt nicht betreffen. Und evtl gibts da auch schon ne Lösung zu ;)

So zur Problembeschreibung:

Gestern hatte ich Knoppix auf nen USB-Stick als Live-Version installiert. Der Stick war zunächst vfat formatiert mit grub2 als Bootloader. Das Booten vom Stick klappte auch wunderbar aber nicht das laden von Knoppix...
Wie gewohnt zählte er die Laufwerke hoch, die er dann versucht über die Funktion trymount zu mounten -> genau das klappte aber nicht und er warf mich auf die busy box. In der busy box allerdings, war ein mounten von /dev/sdb1 (mein USB-Stick) auf /mnt-system der minirt Dateistruktur problemlos möglich...

Zunächst dachte ich, das lag am vfat System also formatierte ich ihn mit ext3 und testete erneut -> gleiches Dilemma. Nun blieb nix anderes übrig als schon wieder meine minirt zu bugfixen :S ...

Das eigentl Problem hab ich nach einiger Zeit entdeckt indem ich den sleep-Wert, nach der Anzeige wo er die gefundenen LW anzeigt, hochstellte. Da sah ich, dass er keine Partitionen anzeigte, also nur die LW insgesamt, bei mir sda, sdb, sdc und sr0.

Er versuchte also meinen Stick so zu mounten:

Zitat

mount -t vfat /dev/sdb /mnt-system


was nat nicht klappte. Also suchte ich wieder und nach einiger weiterer Zeit :| ... fand ich dann die Variable, die dafür verantwortlich war. Es ist die lokale Variable file in der Funktion listpartitions(). Diese sucht nach den vorhandenen LW in /sys/block

Dieses Verz gibts zunächst nicht in der minirt wird aber durch den Befehl

Zitat

mount -t sysfs sysfs /sys


in der minirt angelegt. In diesem Verz fand ich dann über die busy box tatsächlich meine LW in den oben genannten Bez ohne Partitionen.

Als vorübergehender Bugfix hab ich nun die Funktion listpartitions so abgeändert, dass er statt in /sys/block in /dev sucht. Da findet er zwar mit Sicherheit das entsprechende LW und mein Stick bootete ab da auch problemlos aber er durchsucht nat viel mehr als nötig, da auch nicht vorhandene LW. Das muss ich noch verbessern hatte da Getsren allerdings keine Lust mehr...

Nun gut lange Rede...evtl hat ja jmd von euch Knoppix schonmal auf nem ext3 USB-Stick, den am besten Partitioniert (ich hatte den Rest nat vfat), und ähnl Probs gehabt oder auch nicht was bedeuten könnte dass es verbesserte minirts gibt oder dass ich meine zu wild gepimpt hab :D


mfg Jack

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »JackCarver« (22.06.2009, 11:30)


Beiträge: 650

Geschlecht: Männlich

9

22.06.2009, 12:35

Hab die Funktion listpartitions bei mir nun so abgeändert:

Zitat

# Return existing device names listed as regular expressions
listpartitions(){
echo "listpart"
local pattern file exact_partition
for pattern in "$@"; do
for file in $(find /sys/block -maxdepth 2 -name "$pattern"); do
file="${file##*/}"
for exact_partition in $(find /dev -maxdepth 2 -name "${file}*"); do
[ -b "$exact_partition" ] && echo "$exact_partition"
done
done
done
# awk 'BEGIN{old="__start"}/'"$1"'/{if($0==old){exit}else{old=$0;if($4&&$4!="name"){print "/dev/"$4}}}' /proc/partitions # Insufficient, does not find CD-Roms
}


Es gibt nun ne neue lokale Variable exact_partition. Über die ersten beiden for-Schleifen wird in /sys/block nach $pattern gesucht. $pattern ist ein Suchmuster und wird durch die if-Bedungung darunter an listpartitions zum Suchen übergeben. Nun in /sys/block sind die devices OHNE Partitionen (zumind bei mir aufgeführt). Die dritte for-Schleife ist von mir und sucht nun in /dev nach $file*. $file ist dabei der gefundene Wert des ersten find Befehls aus /sys/block also zb sda oder sdb oder sr0. Wenn nun $file=sda, so sucht mein find-Befehl nach $file* in /dev also alle devices, die mit sda beginnen und ein beliebiges Zeichen hinten dran haben und damit sind alle devices sda1-n gemeint.

Das wird dann an trymount übergeben, das jetzt statt mount -t irgendwas -o irgedwas /dev/sda /mnt-system ein /dev/sdan verwendet und damit alle Partitionen checkt.


mfg Jack

Dieses Prob macht ja im Endeffekt ein Mounten externer USB-Sticks unmöglich. Hab aber wie gesagt noch nix davon gelesen. Also wenn jmd ohne solche Änderungen an der minirt gemacht zu haben einen USB-Stick mit Knoppix 6 booten konnte mal bitte posten. Würd mich interessieren ob das nur mich betrifft.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »JackCarver« (22.06.2009, 12:40)


klaus2008

Meister

Beiträge: 2 688

Geschlecht: Männlich

10

22.06.2009, 23:32

Hallo Jack!

Sieht der Abschnitt, in welchem listpartitions nach USB-Sticks sucht, immer noch so aus, oder hast Du etwas verändert?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
if [ -z "$TSCLIENT" ]; then
 if ! findknoppix $root $(listpartitions 'hd[a-z]' 'hd[a-z][0-9]*' 'scd[0-9]*' 'sr[0-9]*' 'sd[a-z]' 'sd[a-z][0-9]*'); then
  if [ -d /sys/bus/usb/drivers/usb-storage ]; then
   for i in 1 2 3 4 5 6; do
    echo -n -e "\r${CRE}${BLUE}${WAITFORUSB}${NORMAL}"
    sleep 2
    findknoppix $root $(listpartitions 'scd[0-9]*' 'sr[0-9]*' 'sd[a-z]' 'sd[a-z][0-9]*') && break
   done
   [ "$?" = "0" ] || debugshell "${CRE}${RED}${NOTFOUND}${NORMAL}"
  fi
 fi
fi


Gruss Klaus

Beiträge: 650

Geschlecht: Männlich

11

22.06.2009, 23:34

Ich schau gleich mal, glaub aber an der if-Bedingung hab ich nix verändert, mail dann hier im edit.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
if [ -z "$TSCLIENT" ]; then
 if ! findknoppix $root $(listpartitions 'hd[a-z]' 'hd[a-z][0-9]*' 'scd[0-9]*' 'sr[0-9]*' 'sd[a-z]' 'sd[a-z][0-9]*'); then
  if [ -d /sys/bus/usb/drivers/usb-storage ]; then
   for i in 1 2 3 4 5 6; do
    echo -n -e "\r${CRE}${BLUE}${WAITFORUSB}${NORMAL}"
    sleep 2
    findknoppix $root $(listpartitions 'scd[0-9]*' 'sr[0-9]*' 'sd[a-z]' 'sd[a-z][0-9]*') && break
   done
   [ "$?" = "0" ] || debugshell "${CRE}${RED}${NOTFOUND}${NORMAL}"
  fi
 fi
fi




würde mal sagen das ist identisch. Btw sucht der Abschnitt aber nicht nach den devices, das ist der Abschnitt der das pattern wie sda[0-9] usw für listpartitions erzeugt und listpartitions sucht dann danach in /sys/block


mfg Jack

Kannst du denn nen USB-Stick mit Knoppix booten oder kriegst die busy box zu sehen?

Ich schreib hier ja gebootet von ext3 USB Stick :D , werd jetzt aber mal die Original minirt.gz von der Knoppix CD draufkopieren und testen ob der dann noch bootet, mail hier. Btw der Stick bootet schneller als meine USB-Platte und absolut geräuscharm :thumbsup: kein Vgl zu dem gebummel über CD/DVD boot.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »JackCarver« (22.06.2009, 23:51)


Beiträge: 650

Geschlecht: Männlich

12

23.06.2009, 13:43

Faszinierend :D ,


ich hab nun noch einige Tests mit der original Knoppix minirt.gz, meiner abgewandelten minirt.gz und verschiedenen Kombinationen vom System gemacht

1. Mein Live-System und die orig Knoppix
2. Das orig Knoppix und meine minirt.gz
3. orig Knoppix und orig minirt.gz

1. es war kein booten des Sticks möglich
2. booten war möglich
3. dito 2

Ich hab dann um der Ursache auf den Grund zu gehen 2 Dateien in /mnt der orig minirt.gz erstellt, devices und found. Über 2 zusätzliche Zeilen in listpartitions()

Zitat

echo "$file" >> /mnt/found
echo "$(find /sys/block)" >> /mnt/devices


hab ich mir dann jeweils speichern lassen, unter welchen devices gesucht wird und was dann gefunden wird. Das Ergebnis davon war ziemlich interessant:

Mit meinem System und der orig minirt.gz sahen die Dateien so aus:

devices:

Zitat

/sys/block/ram0
/sys/block/ram1
/sys/block/ram2
/sys/block/ram3
/sys/block/ram4
/sys/block/ram5
/sys/block/ram6
/sys/block/ram7
/sys/block/ram8
/sys/block/ram9
/sys/block/ram10
/sys/block/ram11
/sys/block/ram12
/sys/block/ram13
/sys/block/ram14
/sys/block/ram15
/sys/block/loop0
/sys/block/loop1
/sys/block/loop2
/sys/block/loop3
/sys/block/loop4
/sys/block/loop5
/sys/block/loop6
/sys/block/loop7
/sys/block/nbd0
/sys/block/nbd1
/sys/block/nbd2
/sys/block/nbd3
/sys/block/nbd4
/sys/block/nbd5
/sys/block/nbd6
/sys/block/nbd7
/sys/block/nbd8
/sys/block/nbd9
/sys/block/nbd10
/sys/block/nbd11
/sys/block/nbd12
/sys/block/nbd13
/sys/block/nbd14
/sys/block/nbd15
/sys/block/sda
/sys/block/sr0
/sys/block/sdb
/sys/block/sdc


Ist ein Ausschnitt der Geamtausgabe und wie man sieht fehlen die Partitionen. Als Ergebnis für found ergibt sich dann:

found:

Zitat

sr0
sda
sr0
sda
sr0
sda
sr0
sda
sdb
sr0
sda
sdb
sdc
sr0
sda
sdb
sdc
sr0
sda
sdb
sdc


Damit arbeitet dann trymount nat ohne Erfolg wegen fehlender Partitionen.

Beim orig Knoppix und derselben minirt.gz sieht die Sache aber schon anders aus:

devices:

Zitat

/sys/block/sdb
/sys/block/sdb/uevent
/sys/block/sdb/dev
/sys/block/sdb/subsystem
/sys/block/sdb/device
/sys/block/sdb/range
/sys/block/sdb/ext_range
/sys/block/sdb/removable
/sys/block/sdb/ro
/sys/block/sdb/size
/sys/block/sdb/capability
/sys/block/sdb/stat
/sys/block/sdb/power
/sys/block/sdb/power/wakeup
/sys/block/sdb/holders
/sys/block/sdb/slaves
/sys/block/sdb/sdb1
/sys/block/sdb/sdb1/uevent
/sys/block/sdb/sdb1/dev
/sys/block/sdb/sdb1/subsystem
/sys/block/sdb/sdb1/partition


und found:

Zitat

sr0
sda
sda1
sda2
sda3
sda4
sda5
sda6
sr0
sda
sda1
sda2
sda3
sda4
sda5
sda6
sr0
sda
sda1
sda2
sda3
sda4
sda5
sda6
sr0
sda
sdb
sda1
sda2
sda3
sda4
sda5
sda6
sdb1
sdb2


damit kann trymount schon eher was anfangen ;)

Tja die Frage ist nun was da passiert ist:

Dafür gibts eigentl nur eine Erklärung. /sys/block, der Ort an dem listpartitions() nach den vorhandenen devices sucht, wird durch das mounten von sysfs gebildet also hab ich mir mal die Kernelkonfig des original Knoppix-Kernels und meines Kernels in Bezug auf sysfs angesehen und der einzieg Unterschied ist folgender:

Zitat

Der Knoppix Kernel hat die Option CREATE_DEPRECATED_SYSFS_LAYOUT enabled


Das hat meiner aus gutem Grund nicht. Diese Option wird von den Kernelentwicklern als deprecated gemarkt, da mit einem solchen Kernel der gesamte udev-Prozess zur Hardware-Erkennung nicht sauber funktioniert.
Da Knoppix aber ein eigenes Skript dazu verwendet und auch aufgrund der minirt.gz diese Option aus gegebenem Grund benötigt setzt es auf diese eigentl veraltete Kerneloption.

Nun ja das gilt nat dann noch zu beachten wenn man nen eigenen Kernel in Knoppix integrieren möchte oder man ändert die minirt so ab wie oben gezeigt. Da ich die minirt.gz in nem eigenen Live-System laufen hab und dafür voll auf udev setze werd ich allerdings diese Kerneloptin schön disabled lassen...


mfg Jack

Linux HardwareLinux Computer & PCs | Linux Notebooks & Laptops | Geek Shirts | Geek und Nerd Shirt Shop