MC (Midnight Commander) auf dem GX-Device

Hallo zusammen,
kann mir vielleicht jemand einen Weg verraten um mc auf meinem Cerbo-GX zu installieren? Der normale Weg über einen Paketmanager fällt ja leider aus.
VG
tm-107

PS: Die Möglichkeit WinSCP zu nutzen ist mir bekannt, aber der ständige Wechsel zwischen Dateimanager (WinSCP) und Konsole ist etwas nervig. Da ist mc halt eine schöne all-in-one Lösung.

hallo,
wenn du das wirklich machen willst, kann ich dir verraten, wie du das auch schaffst. allerdings ist es etwas aufwaendiger als du glaubst!

wenn du einen pi oder ein anderes arm-system hast, kannst du das 32-bit betriebssystem dafuer als basis nehmen und dort in einer chroot-umgebung alles installieren, was du brauchst.

entweder du kopierst das ganze system dann auf eine sd-karte oder nur die noetigen dateien. am einfachsten duerfte es sein, das ganze system auf die sd zu installieren.

in dem fall kannst du dann die systempartition auf der sd auf die groesse der sd vergroessern, was auch von windows aus geht.

wenn die sd im gx steckt, wird sie automatisch aktiviert und du brauchst dann noch diese befehle:
DIR=mountpoint sd
for D in dev dev/pts dev/shm sys proc
do
if mount|grep “/${DIR##*/}/$D” >/dev/null
then
true
else
test -d “/$D” || continue
test -d “$D” || mkdir -p “$D”
mount --bind /$D $D
fi
done
cd “$DIR”
mkdir gx
mount --bind /gx gx

das musst du fuer alle gemounteten filesysteme wiederholen

chroot “$DIR”

was du alles machen musst, um den mc auch ohne chroot zum laufen zu bekommen, kann ich dir jetzt nicht sagen, da ich das noch nie gemacht habe. ob man eine menge symlinks anlegen muss oder das ganze durch config-einstellungen machen kann, weiss ich also nicht!
zumindest die bibliotheken, die mc nicht findet, wenn man das programm startet, kann man ueber eine env-variable vorgeben, damit sie gefunden werden.
eine andere variante waere es, den mc statisch zu compilen, aber zu dem programm gehoeren leider auch noch einige andere dateien, die an einer bestimmten stelle liegen muessen.

ich habe auf diese weise bisher nur ein programm auf meinen cerbo installiert und zwar socat, damit ich auch portserver benutzen konnte, um geraete einzubinden. war aber auch etwas aufwendiger als gedacht!
allerdings war auch der cerbo mit ca. 30 vedirect-geraeten damit zu 100% ausgelastet. aber immer noch besser als ueber usb. da ist naemlich bei 13 usb-1.1-vedirect-adaptern schluss. mehr gibt der usb-bus bei usb1.1 naemlich nicht her. bei einem anderen adaptertyp gab es schon ab 5 oder 6 adaptern probleme an meinem linux-server.

tschuess

Vielen Dank für die ausführliche Antwort. Aber wenn ich bedenke dass das nach jedem Firmware-Update auf dem Cerbo wiederholt werden muss, dann erscheint die Variante mit WinSCP und Konsole doch insgesamt einfacher.

Für die Entwickler bei Victron wäre der mc auf der Konsole ja bestimmt auch öfter von Vorteil. Vielleicht schafft er es ja irgendwann auf diesem Weg ins System.

hallo,
die variante mit dem chroot-system auf sd muss man nur einmal machen und ein start-script dazu. alles andere eben nach jedem firmware-update nochmal.

aber du kannst den mc auch auf einem beliebigen anderen system ausfuehren. der kann auch ueber eine ssh-verbindung arbeiten. allerdings habe ich noch nicht probiert, ob das auch bei einem cerbo funktioniert.

tschuess

Mit dem MC per ssh auf den Cerbo verbinden funktioniert, aber die Kommandozeile ist trotzdem nur lokal.

hallo,
das stimmt, aber du kannst 2 fenster benutzen.

alternativ waere da noch die moeglichkeit, den mc so zu kompilieren, dass alle dateien auf der sd liegen und der pfad dem mountpoint auf dem gx entspricht. allerdings muessen dafuer auch alle bibliotheken passend dazu kompiliert werden.

also ich wuerde ein chroot-system installieren und das von sd nutzen und die lokalen filesysteme dort einbinden. das waere die einfachste loesung und du haettest ein komplettes linux mit allen tools zur verfuegung.

tschuess

Ja, das glaube ich gerne. Aber mit meinen derzeitigen Skills traue ich mir das (noch) nicht zu.

Habe gerade festgestellt, dass wenn ich Dateien mit mc per ssh bearbeite (F4 → nano), diese dann nicht auf dem Cerbo gespeichert werden. Es kommt keine Fehlermeldung, aber auf dem Cerbo sind definitiv keine Änderungen gespeichert worden.

Also bleibe ich vorerst bei der normalen ssh-Konsole und nutze zusätzlich WinSCP oder mc (nur lesend).

hallo,
einige dateien befinden sich auf einen read-only-filesystem. die kannst du normalerweise auch nicht speichern.

tschuess

Lokal auf dem Cerbo kann ich sie aber sehr wohl bearbeiten und speichern.
Wenn ich mit mount nachschaue, ist übrigens alles rw eingehangen. Da habe ich auch nie irgendwas dran rumgefummelt.

hallo,
wenn bei dir alles rw ist, ist das schon seltsam. das root-filesystem ist vei mir jedenfalls ro und wenn ich einen cron-job anlegen will, muss ich das auch erst mal rw mounten.

tschuess

Auf mount kommt folgende Ausgabe:

/dev/mmcblk1p2 on / type ext4 (rw,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=465376k,nr_inodes=116344,mode=755)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /var/volatile type tmpfs (rw,relatime)
/dev/mmcblk1p5 on /data type ext4 (rw,noatime)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /service type tmpfs (rw,nosuid,nodev,mode=755)

Die fstab habe ich nie geändert. Sie hat als letztes Änderungsdatum den Zeitpunkt vom Firmware-Update auf v3.54.

/dev/root            /                    auto       defaults              0  0
proc                 /proc                proc       defaults              0  0
devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
tmpfs                /run                 tmpfs      mode=0755,nodev,nosuid,strictatime 0  0
tmpfs                /var/volatile        tmpfs      defaults              0  0
/dev/mmcblk1p5       /data                ext4       noatime               0  0

Und wenn ich mich recht erinnere, konnte ich in /etc/crontab schon immer schreiben ohne Änderungen am Dateisystem vornehmen zu müssen.

hallo,
einige dateien im root-file-system sind nur symlinks auf files in anderen filesystemen. bei mir sieht das so aus:
/dev/mmcblk1p2 on / type ext4 (ro,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=465376k,nr_inodes=116344,mode=755)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /var/volatile type tmpfs (rw,relatime)
/dev/mmcblk1p5 on /data type ext4 (rw,noatime)
/dev/mmcblk0p1 on /run/media/mmcblk0p1 type ext3 (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /service type tmpfs (rw,nosuid,nodev,mode=755)
overlay on /var/lib type overlay (rw,relatime,lowerdir=/var/lib,upperdir=/var/volatile/lib,workdir=/var/volatile/.lib-work)

und wie du siehst, ist das root-filesystem ro!

tschuess