• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Live-ISO: is write-protected, mounting read-only

gehrke

Administrator
Teammitglied
Moin *,

ich brauche Linux auf einer Hardware, welche mir nur eine serielle Konsole anbietet, also beispielsweise PC-Engines ALIX oder APU.

Hier der stumpfe Versuch, eine opensuse 13.2 per Live-Stick zu booten:
Code:
screen /dev/ttyUSB0 115200
PC Engines APU BIOS build date: Sep  8 2014
Total memory 4096 MB
AMD G-T40E Processor
CPU MHz=1000
USB MSC blksize=512 sectors=3915776
Press F10 key now for boot menu:
drive 0x000f2ab0: PCHS=0/0/0 translation=lba LCHS=971/64/63 s=3915776
Booting from Hard Disk...

ISOLINUX 4.04 0x5437d548 EHDD
Initializing gfx code...

Initializing gfx code...

Initializing gfx code...
[...]
Ich vermute, dass ich in der GRUB-Konfiguration den Aufruf des Kernels anpassen muss. Leider komme ich aber nicht an die Konfiguration auf dem Stick heran:
Code:
j2:~ # mount -o rw /dev/sdc2 /mnt
mount: /dev/sdc2 is write-protected, mounting read-only

j2:~ # touch /mnt/boot/grub2-efi/test.txt
touch: cannot touch ‘/mnt/boot/grub2-efi/test.txt’: Read-only file system
Stehe gerade auf dem Schlauch, wie ich den Schreibschutz aufheben kann... :???:
TNX


cu, gehrke
 

josef-wien

Ultimate Guru
Ich glaube nicht, daß Du in einem ISO9660-Dateisystem Änderungen vornehmen kannst, auch
xorriso -help schrieb:
This program creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions.
interpretiere ich so. (Selbst wenn mount nach "-f" dann "rw" ausgibt, sagt cat /proc/mounts mit "ro" die Wahrheit.) Du kannst aber mit diesem Programm oder auch mit ISOMASTER Änderungen vornehmen und ein neues Image erzeugen.
 
OP
gehrke

gehrke

Administrator
Teammitglied
Das Dateisystem ist 'udf':
Code:
j2:~ # mount
[...]
/dev/sdc2 on /mnt type udf (ro,relatime,utf8)
EDIT: Oder wie von josef-wien skizziert:
Code:
j2:~ # cat /proc/mounts
[...]
/dev/sdc2 /mnt udf ro,relatime,utf8 0 0
 
OP
gehrke

gehrke

Administrator
Teammitglied
https://wiki.ubuntuusers.de/ISO_Master/:
ISO Master {en} ist ein Programm zum Erstellen und Bearbeiten von ISO-9660-Abbildern. Es ist hiermit jedoch nicht möglich, Abbilder zu bearbeiten, die UDF-formatiert sind.
 
OP
gehrke

gehrke

Administrator
Teammitglied
Auf die Schnelle kann ich nichts finden, die Inhalte direkt zu ändern. Mehrere Leute behaupten, man müsse die Inhalte kopieren, ändern und zu einem neuen Dateisystem/Image zusammenschrauben. Au weia...
 

TomcatMJ

Guru
Wenn die Zielplattform mit einem x86 kompatiblen Prozessor arbeitet, was spricht dann noch dagegen den Inhalt(!) des ISO-Images auf einen Stick zu kopieren und je nach Dateisystem des Sticks dann nach umbenennen der isolinux-cfg nach syslinux.cfg bzw. extlinux.cfg mit syslinux (falls Fat/Fat32 als Dateisystem genutzt wird) oder extlinux (falls ext2/ext3/ext4 Dateisystem genutzt wird) bootfähig zu machen?Dann kannst du auf alle Fälle auf dem Stick alles abändern was du ändern willst ohne wilde Hampeleien....
 
OP
gehrke

gehrke

Administrator
Teammitglied
TomcatMJ schrieb:
was spricht dann noch dagegen den Inhalt(!) des ISO-Images auf einen Stick zu kopieren [...] ohne wilde Hampeleien....
Der Gedanke war, dass ich möglichst wenig Änderungen am Gesamtsystem machen möchte. Ich vermute, es gibt interne Konfigurationen in dem Live-System, welche auf das Dateisystem hin ausgelegt sind und von denen ich keinen Schimmer habe. Und ich befürchte, dass ich für solch komplexe Aufgaben nicht genug Wissen und Zeit habe. Deshalb wollte ich so wenig wie möglich ändern. Gerade weil ich wilde Hampeleien vermeiden möchte...
 

TomcatMJ

Guru
Wenn das wirklich Dateisystemabhängig wäre in dem Sinne daß das erste zugängliche Dateisystem erst nach dem Grundbootvorgang gemountet wird auf das der kernel dann zugreifen kann, dann würde man Live-CDs nicht so einfach auch per pxelinux booten können wie man es jedoch kann ;)
Das einzige Dateisystem was nicht zum Startzeitpunkt verfügbar ist aber von einigen Live-Systemen genutzt wird liegt in einer Datei die von egal was für einem Dateisystem sofern dieses Dateisystem für den Kernel beim Booten verfügbar ist geladen wird. Das wäre das Caspar Dateisystem,dem es aber auch egal ist ob die dafür nötige, den inhalt des zukünftigen Mounts beinhaltende Datei nun auf einem ISO9660, ext2/3/4, Fat/Fat32 oder sonstwas herumliegt.
Insofern ist es weniger Hampelei als du befürchtest sie man dazu benötigen würde, man sollte nur mal in die umzubenennde isolinux-cfg reingucken ob da etwas wirklich nur isolinux Betreffendes drinsteht oder ob nur Optionen mit allgemein bei der Syslinux-Suite in allen Loadern verwendbaren Kommandos enthalten sind ;)
Bammel davor haben gilt also nicht, denn Optionen/Kommandos die nur in einem der in der Syslinux-Suite enthaltenen Bootloader funktionieren werden von den anderen dann einfach ignoriert,geht also nichts durch kaputt ;)
Btw. könnte man dadrüber auch die Bootausgaben schon auf die Serielle Konsole umleiten durch entsprechende Parameter in der *.cfg Datei so daß du eventuelle Kernelmeldungen da auch schon zu sehen bekämst.
Szichwort:"SERIAL" , zu finden u.a. in http://linux-club.de/wiki/opensuse/Installationsbootloader#Allgemeine_Konfigurationsparameter_f.C3.BCr_SYSLINUX_und_seine_Derivate
 
OP
gehrke

gehrke

Administrator
Teammitglied
TomcatMJ schrieb:
den Inhalt(!) des ISO-Images auf einen Stick zu kopieren und je nach Dateisystem des Sticks
Im Detail nicht so easy. Es fängt schon damit an, dass die Speichergrößen inkompatibel sind. So habe ich die betreffende Partition des Sticks kopiert und deren Dateisystem durch ext2 ersetzt. Das erste Problem ist aber, dass die kopierten Daten größer sind als der zur Verfügung stehende Platz in der Partition. Ich vermute, das liegt daran, dass die UDF-Partiton eine interne Kompression verwendet.

Der Stick (CentOS-Live):
Code:
# df -h /dev/sdc1
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc1       402M  398M     0 100% /home/gehrke/temp/test-serial-live/mount-sdc1
Das von dort kopierte Dateisystem:
Code:
# du -h --max-depth=0 sdc1-centos-unchanged
467M    sdc1-centos-unchanged
 

TomcatMJ

Guru
Nunja, eine passende Partitionsgröße sollte man auf dem Stick schon wählen, größer geht bei einem ext2/3/4 Dateisystem auf das man Inhalte eines ISO-Images packen will immer,kleiner eher nur dann wenn man die Hilfsdaten die sich immer auf solchen Images finden (also pdf-Dateien die man nicht unbedingt braucht, Versionsinfos, LIzenzhinweisdateien, changelogs etc.) beim kopieren weglässt..und bei ext2/ext3/ext4 Dateisystemen die Reserve nicht vergessen die da immer mit angelegt wird und die man per tune2fs manuell nachjustieren kann ;)
 
OP
gehrke

gehrke

Administrator
Teammitglied
Klar, aber das ist jetzt genau das Gefrickel, was ich eigentlich nicht haben wollte.
 

TomcatMJ

Guru
Ansonsten wäre wohl einfach eine größere Partition auf dem Stick angeraten...wenn das Image rund 467 MB fressen will wären 500 MB sicherlich ausreichend zum einfachen rüberkopieren der Image-Inhalte...setzt natürlich vorraus daß keine unverzichtbaren Daten auf dem Stick sind so daß man den einfach mal neu partitionieren kann. Oder man nimmt einfach einen anderen Stick der gerade frei ist dazu ;)
 
OP
gehrke

gehrke

Administrator
Teammitglied
@TomcatMJ: Sorry, aber das ist wenig hilfreich. Du kannst schon davon ausgehen, dass ich weiß, wie man ein Image für ein Backup zieht oder dass es nicht an der Hardware mangelt.

Wie vorher schon erwähnt, ist mein Problem bei der jetzt eingeschlagenen Vorgehensweise die Nicht-Abschätzbarkeit des Gesamtprozesses. Wenn ich jetzt die Partitionierung des Sticks neu mache, habe ich gleich einen weiteren Rattenschwanz an potentiellen Problemen vor der Brust, beispielsweise die Lage des Bootloaders. Was kommt da als nächstes???

Was ich eigentlich wollte war ganz simpel dem Kernel-Aufruf zwei zusätzliche Parameter mitzugeben und brauche dafür lediglich schreibenden Zugriff auf die Konfiguration - minimal-invasiv.
 

TomcatMJ

Guru
Hm,ich hab eben mal was ganz simples anhand eines ISO-Images einer FreeDOS-CD ausprobiert:
Erstmal ganz platt als root mit
Code:
mount /home/User/isoimage.iso /mnt
, also ohne irgendwelche Zusatzparameter, das Image-File wie ein ganz normales Device gemountet,dort dann über den MidnightCommander geguckt was so drin liegt, Tools für ein BIOS-Flash-Update reinkopiert, davon eine .bat Datei darin umbenannt und deren Inhalt ein wenig angepasst,dann den mc beendet,aus dem Verzeichnis /mnt rausgegangen und den Mount gelöst,danach das geänderte Image per k3b auf CD gebrannt und siehe da: Die Änderungen waren auch auf der CD wie gewünscht vorhanden.
Hört sich zwar ziemlich vereinfacht an aber offenbar hats da zumindest funktioniert..wäre vielleicht mal einen Versuch wert obs bei dir auch so geht.

Edit:Hab nochmal zum testen gerade ein erneutes ISO-Image von der gebrannten CD gemacht und es nochmal denselben Weg probiert. Seltsamerweise wurde es nun auch nur noch als read-only gemountet, allerdings lässt mir der mc da durch draufklicken aufs Imagefile wohl trotzdem einen temporären Mount zu mit dem ich dadrin über den mc diverse Dinge ändern kann,nur wenn ichs manuell in ein Verzeichnis zu mounten probier gehts nun nicht mehr so wie zuvor abzuändern...irgendwie seltsam bis schräg dieses Verhalten,aber dank mc wohl trotzdem noch bearbeitbar.... nur das warum muss ich wohl mal genauer untersuchen,aber nicht mehr jetzt um diese Uhrzeit ;)
 
OP
gehrke

gehrke

Administrator
Teammitglied
@TomcatMJ: Vorweg mal 'Sorry', mein Ton gestern abend war eine Spur zu gereizt. War frustriert, weil es nicht klappt und mir die Zeit davon läuft.
TomcatMJ schrieb:
Hm,ich hab eben mal was ganz simples anhand eines ISO-Images einer FreeDOS-CD ausprobiert:
Ich brauche eine einigermaßen aktuelle Linux-Distribution in der Live-Version. Getestet habe ich openSUSE 13.2, CentOS 7 und Fedora 23 - alle arbeiten mit UDF.

Gegebenenfalls würde mir kurzfristig auch eine Distribution helfen, die den Support für die serielle Konsole schon out-of-the-box eingebaut hat.
 

TomcatMJ

Guru
gehrke schrieb:
@TomcatMJ: Vorweg mal 'Sorry', mein Ton gestern abend war eine Spur zu gereizt. War frustriert, weil es nicht klappt und mir die Zeit davon läuft.
Ach,geschenkt...kann man ja nachvollziehen daß es Situationen gibt wo die Nerven schonmal was blank liegen,vor allem wenn Zeitdruck dazukommt.... ;)
TomcatMJ schrieb:
Hm,ich hab eben mal was ganz simples anhand eines ISO-Images einer FreeDOS-CD ausprobiert:
Ich brauche eine einigermaßen aktuelle Linux-Distribution in der Live-Version. Getestet habe ich openSUSE 13.2, CentOS 7 und Fedora 23 - alle arbeiten mit UDF.
Öhm,da muss ich zugeben daß mir das Stichwort UDF dabei nun durch die Lappen gegangen war...
Ich lade gerade mal unter http://buildlogs.centos.org/centos/7/isos/x86_64/ das CentOS-7-livecd-x86_64.iso Image herunter um mal nachzugucken ob der unter FreeDOS laufende Weg auch damit irgendwie läuft oder ob mir da ein unkomplizierter anderer schneller Weg zu einfällt ;)
 

TomcatMJ

Guru
So,nach dem Runterladen hab ichs nochmal getestet....
Also im Verzeichnis isolinux konnte ich nichts ändern,allerdings konnte ich die isolinux-cfg dorther per midnightcommander ins Hauptverzeichnis der CD (also innerhalb des ISO-Images) als extlinux.cfg kopieren und modifizieren wie es gerade beliebt. Insofern dürfte es eigentlich funktionieren wenn man den Inhalt des ISO-Images auf einen Stick kopiert, die extlinux.cfg entsprechend so wie mans gern hätte napasst und dann einmal den Bootsektor des Sticks per extlinux neu schreiben lässt,da die extlinux.cfg beim Booten dann auch im !Hauptverzeichnis" abgearbeitet wird.
Ich lade das modifizierte Image dann mal auf meinen Server und poste dann später noch den Link dahin und zur neu berechneten (da ja aufs modifizierte Image bezogene) md5sum Datei hier rein...hab nur gerade keinen freien USB-Stick und keinen CD-Rohling mehr da zum vor Ort testen da ich den letzten CD-Rohling den ich hatte für die oben bereits erwähnte FreeDOS CD zum BIOS-Flashen gebraucht hatte ;)

Edit:Was noch interessant ist in dem Zusammenhang:Das Image hat einen DOS Bootsektor,daher hab ich einfach mal mit fdisk geguckt was da so drinsteckt:
Code:
rashnu@hpnx6125:~/Downloads> sudo /usr/sbin/fdisk CentOS-7-livecd-x86_64.iso
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Befehl (m für Hilfe): p

Disk CentOS-7-livecd-x86_64.iso: 719 MB, 719323136 bytes, 1404928 sectors
Units = Sektoren of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x03c37324

                     Gerät  boot.     Anfang        Ende     Blöcke   Id  System
CentOS-7-livecd-x86_64.iso1   *           0     1404927      702464    0  Empty
CentOS-7-livecd-x86_64.iso2             172       10271        5050   ef  EFI (FAT-12/16/32)
CentOS-7-livecd-x86_64.iso3           10320       50799       20240    0  Empty

Befehl (m für Hilfe): q

rashnu@hpnx6125:~/Downloads>
Da sollte es also durchaus möglich sein die im Image enthaltenen Partitionen als simple Mountpoints zu nutzen um genauere Modifikationen nach Bedarf vorzunehmen anstatt mit dem midnightcommander nur rudimentäre Änderungen vorzunehmen...

Edit2: Hier dann mal die Links die diese Woche noch verfügbar bleiben werden: Das Iso-Image mit kleiner Modifikation und die md5sum Datei für den Check auf korrekten Download...
 
OP
gehrke

gehrke

Administrator
Teammitglied
TomcatMJ schrieb:
Da sollte es also durchaus möglich sein die im Image enthaltenen Partitionen als simple Mountpoints zu nutzen um genauere Modifikationen nach Bedarf vorzunehmen anstatt mit dem midnightcommander nur rudimentäre Änderungen vorzunehmen...
Ich sehe noch nicht den Durchbruch. Den Versuch, das Image zu mounten (ob direkt vom Stick oder aus dem Gesamtimage heraus) hatte ich doch schon mehrfach:

Code:
# fdisk -l sdc-centos-unchanged.img 

Disk sdc-centos-unchanged.img: 8054 MB, 8054112256 bytes, 15730688 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x1c147650

                   Device Boot      Start         End      Blocks   Id  System
sdc-centos-unchanged.img1   *           0      849919      424960    0  Empty
sdc-centos-unchanged.img2             180       10959        5390   ef  EFI (FAT-12/16/32)
sdc-centos-unchanged.img3          688056      731223       21584    0  Empty
Die interessanten Dateien liegen in der ersten Partition:
Code:
# modprobe loop
# kpartx -va  sdc-centos-unchanged.img 
  Warning: Disk has a valid GPT signature but invalid PMBR.
  Assuming this disk is *not* a GPT disk anymore.
  Use gpt kernel option to override.  Use GNU Parted to correct disk.
add map loop0p1 (253:7): 0 849920 linear /dev/loop0 0
add map loop0p2 (253:8): 0 10780 linear /dev/loop0 180
add map loop0p3 (253:9): 0 43168 linear /dev/loop0 688056
Code:
# mount -o loop,rw /dev/mapper/loop0p1 /mnt
mount: /dev/loop1 is write-protected, mounting read-only

# echo "42" >> /mnt/isolinux/isolinux.cfg 
-bash: /mnt/isolinux/isolinux.cfg: Read-only file system
Die Datei bzw. das gesamte Filesystem bleibt schreibgeschützt - wahrscheinlich wegen UDF.
 

TomcatMJ

Guru
Probier mal im gemounteten Image statt dem Echo-Befehl den du da abgesetzt hast
Code:
cp /mnt/isolinux/isolinux.cfg /mnt/extlinux.cfg
und danach mal
Code:
vi /mnt/extlinux.cfg
Die Datei isolinux.cfg ist auch im Image ohne Schreibrechte ausgestattet,daher kann da nichts angefügt werden solang man vorher nicht da nochmal explizit die Dateirechte ändert.
Bekloppterweise lässt der mc einen das nämlich wenn man einfach per Enter-Taste statt händisch zu mounten diese aktionen nämlich machen und die bleiben dann auch im Image erhalten wie im von mir ja auf meinem Server vorrübergehend zur Verfügung gestellten Image zu sehen ist,denn das ist das normal runtergeladene Image vom centos.org-Server nach der beschriebenen Modifikation per mc ... und da kann man per mc die ins Hauptverzeichnis des Image rüberkopierte und in extlinux.cfg umbenannte isolinux.cfg durchaus noch weiterbearbeiten ;)
 
Oben