Debian Chroot QEMU Startscript

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

rauppe31

Benutzer
Registriert
06. Juni 2011
Beiträge
2.734
Reaktionspunkte
0
Punkte
82
Hallo

Ich habe mir nun einen Debian-Chroot und QEMU installiert.
Der Chroot befindet sich unter /volume1/debian/debian/
QEMU starte ich mit dem Befehl (im Chroot):
qemu -hda ubuntu.img -cdrom /ubuntu/ubuntu.iso -boot d -vnc :1

Ich habe versucht, ein Startscript dazu zu erstellen, bringe es aber nicht hin. Könnt ihr mir da ein bisschen unter die Arme greiffen?
 
was hast du denn bis jetzt versucht und v.a. wo hast du probiert das Startscript abzulegen?
 
Mein momentanes Startscript:

#!/bin/sh

if [ "$*" = 'start' ]*; then
mount -t proc none /volume1/debian/debian/proc
chroot /volume1/debian/debian qemu -hda ubuntu.img -cdrom /ubuntu/ubuntu.iso -boot d -vnc :1
else
exit
fi



Es befindet sich unter /opt/etc/init.d/
 
Chmod = x?
 
was passiert wenn du das Script manuell aufrufst? Musst du es mittels sh /pfad/script start aufrufen damit er läuft oder geht es auch so /pfad/script start
Wenn nur ersteres geht dann musst du das Script mittels chmod +x /pfad/script noch ausführbar machen.
Zudem du musst unbedingt im stop alle Dienste (hier qemu) stoppen und alle mounts für den chroot wieder auflösen. sonst bleibt dir die DS mit (ziemlicher) Sicherheit beim Shutdown hängen. Schau erstmal dass der start geht, beim shutdown schauen wir nachher. Der ist etwas tricky
 
Jetzt gehts, aber es kommt eine Fehlermeldung:
sh: missing ]
 
ups habe ich übersehen das geht ned
Code:
[COLOR=#333333]if [ "$*" = 'start' ]*; then
#sondern
if [ "$*" = 'start' ] ; then
wieso hinten noch einen * ?[/COLOR]
 
Da kommt immernoch die gleiche Meldung.
 
dann poste doch nochmals das ganze aktuelle Script. Eigentlich müsste es so gehen, der Stern hinterdran war definitiv falsch. Gerade wenn du immer denselben Parameter prüfen willst bietet sich eigentlich case an
Code:
#!/bin/sh

case "$*" in
 'start')
  #Code fuer Start
 ;;
 'stop')
  #Code fuer Stop
 ;;
 *)
  echo "Usage $0 start|stop"
 ;;
esac
 
Ich hab den Fehler num gefunden.

Also, jetzt zum Stopscript:)
 
das Problem ist nicht der Stopteil des Scriptes an sich, sondern dessen zuverlässigen Aufruf beim Shutdown. Wenn Synology nicht grundsätzlich etwas geändert hat mit aktuellen Firmwaren, dann ist das einzige Script das beim Shutdown mit stop aufgerufen wird /usr/syno/etc.defaults/rc.d/SXXfindhost.sh So zumindest war es als ich damals mit dem Debian chroot rumgespielt habe (weiss aber nicht mehr welche Firmware Version es war)
Du solltest also den stop Aufruf für dein opt-Script im Stopteil von SXXfindhost.sh platzieren, damit es zuverlässig funzt. Im Stopteil deines Scriptes musst du erst alle laufenden Sachen des chroot stoppen, bei dir also wohl qemu und dann den mount auflösen
 
Das Problem ist, ich weiss nicht, wie ich QEMU stoppe.
 
killall qemu
 
wenn alle vituellen Systeme gestoppt sind kannst du wahrscheinlich einfach qemu killen. Oder du guckst auf der Konsole mal mit qemu --help was qemu an Parametern kennt. villeicht ist ja ein stop mitdabei.
Wenn du einen Prozess killen willst geht das entweder über den Namen des Prozesses oder über die PID (ProccessID) des Prozesses
Code:
#Namen
killall qemu
#PID
kill -9 $(pidof qemu)
bevor du aber den Prozess killst solltest du gucken ob es nicht einen stop beim Kommando selber gibt
 
Ich hab jetzt noch ein Problem beim Startscript. Es sieht jetzt so aus:
Rich (BBCode):
#!/bin/sh

if [ "$*" = 'start' ] ; then
mount -t proc none /volume1/debian/debian/proc
chroot /volume1/debian/debian qemu -hda ubuntu.img -cdrom /ubuntu/ubuntu.iso -boot d -vnc :0
fi
Wenn ich es aufruffe, gibt es auch keine Fehlermeldung, aber QEMU wird nicht gestartet. Das sehe ich an der CPU auslastung.
Was könnte noch falsch sein?
 
Schon belegter VNC-Port, nicht existierendes CD. Andere Frage: Warum willst du bei jedem Start von QEMU von der CD booten?
 
geh in den chroot rein und rufe den Start für qemu manuell auf so wie er im Script steht. von aussen wirst du kaum jemals eine Fehlermeldung sehen, denn der Start wird ja im chroot ausgeführt. Also landen Fehler auch auf stderr vom chroot und nicht der Firmware. Das einzige was du ausserhalb des chroots von einem Fehler merken könntest wäre es wenn der Rückgabewert deines chroot Kommandos ungleich 0 ist
 
geh in den chroot rein und rufe den Start für qemu manuell auf so wie er im Script steht. von aussen wirst du kaum jemals eine Fehlermeldung sehen, denn der Start wird ja im chroot ausgeführt. Also landen Fehler auch auf stderr vom chroot und nicht der Firmware. Das einzige was du ausserhalb des chroots von einem Fehler merken könntest wäre es wenn der Rückgabewert deines chroot Kommandos ungleich 0 ist

Wenn ich qemu im Chroot starte, funktioniert es.
 
Schon belegter VNC-Port, nicht existierendes CD. Andere Frage: Warum willst du bei jedem Start von QEMU von der CD booten?

Port ist noch nicht belegt und das ISO ist vorhanden. Das booten von CD werde ich dann rausnehmen, wenn es auf dem Image installiert ist.
 
chroot /volume1/debian/debian qemu -hda ubuntu.img -cdrom /ubuntu/ubuntu.iso -boot d -vnc :0

sicher dass du zweimal debian im Pfad hast?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat