Ich habe Ubuntu GNOME 20.04 und Kubuntu 21.04 verwendet. Beide befinden sich in separaten Partitionen. Ich muss an beiden Betriebssystemen arbeiten, aber dafür muss ich den Computer neu starten und dann das andere Betriebssystem zum Booten auswählen.
Daher möchte ich wissen, ob es eine Möglichkeit gibt, die in Kubuntu installierten Anwendungen, die auch in Ubuntu verwendet werden, freizugeben, ohne die gleiche Software erneut in Ubuntu installieren zu müssen, sodass ich nicht zwischen Betriebssystemen wechseln muss.
Antwort1
Nein, praktisch gesehen. Zwei separate Betriebssysteme mit unterschiedlichen Versionen zu haben und dann so einzurichten, dass man Binärdateien einer anderen Version in einem anderen Betriebssystem verwenden kann, wäre 1) in vielen Fällen aufgrund von Binärinkompatibilität und/oder falschen oder nicht verfügbaren Abhängigkeiten unmöglich oder 2) technisch sehr kompliziert einzurichten und birgt dann noch ein deutlich höheres Risiko unerwarteter Probleme.
Ja, im Prinzip könnten Sie die Systempartition des anderen Betriebssystems mounten und einige einfache Binärdateien direkt im anderen Betriebssystem ausführen. Die meisten Binärdateien sind jedoch weitaus komplexer und hängen von bestimmten Systemkonfigurationen und Abhängigkeiten ab. Sie werden nicht ausgeführt, wenn Sie versuchen, sie von einem anderen Betriebssystem aus auszuführen. Jemand, der sehr gut mit Linux vertraut ist, kann einiges davon vielleicht trotzdem als Hobby zum Laufen bringen – es ist eine Übung, die für jede einzelne Anwendung einzeln wiederholt werden müsste.
Gibt es also eine Möglichkeit, die in Kubuntu installierten Anwendungen auch in Ubuntu zu verwenden, ohne die gleiche Software erneut in Ubuntu installieren zu müssen, sodass ich nicht zwischen Betriebssystemen wechseln muss?
So wie Du es hier geschrieben hast, ja.
Behalten Sie ein einzelnes Betriebssystem bei und installieren Sie darauf sowohl Gnome Shell, die Shell des Standard-Ubuntu, als auch KDE Plasma, die Shell von Kubuntu. Jede Anwendung, die Sie installieren, ist dann auf dem Desktop verfügbar, bei dem Sie angemeldet sind.
Antwort2
Ja, Sie können Software aus mehreren Ubuntu-Installationen gleichzeitig mithilfe eines Chroots ausführen. Es gibt jedoch einige Einschränkungen:
- Alle Programme werden unter einem einzigen Kernel ausgeführt.
- Programme im Chroot sind standardmäßig nicht für das Hauptbetriebssystem verfügbar. Sie müssen Wrapper-Skripte erstellen, um sie zu starten.
- Damit alles reibungslos läuft, müssen möglicherweise einige Anpassungen vorgenommen werden. Zumindest müssen Dateieigentümer/Benutzer/Gruppen harmonisiert werden. Was unten gezeigt wird, funktioniert auf meinem System. Sie werden wahrscheinlich noch weitere Anpassungen vornehmen müssen, die ich nicht vorhersehen kann.
Um ein Chroot einzurichten, müssen Sie Folgendes tun:
Booten Sie die Kubuntu-Installation.
Installieren
schroot
:apt-get install schroot
Fügen Sie Ihrem Benutzernamen Folgendes hinzu,
/etc/schroot/schroot.conf
wobei die Änderungen gelten:USERNAME
[gnome] description=Ubuntu 20.04 directory=/chroot/gnome users=USERNAME groups=root root-groups=USERNAME
Fügen Sie das Stammverzeichnis des Chroots hinzu
/etc/fstab
(es ist die zweite Zeile weiter unten). Fügen Sie dann Bind-Mounts für Systemverzeichnisse und alle nicht standardmäßigen Mounts hinzu, die Sie verwenden. Wenn Sie spezielle Mount-Optionen benötigen, fügen Sie diese ebenfalls hinzu. Beispiel:/.media /media none defaults,bind,noauto 0 0 LABEL=gnome /chroot/gnome ext4 defaults,auto,errors=remount-ro 0 0 /proc /chroot/gnome/proc none defaults,rbind,noauto 0 1 /dev /chroot/gnome/dev none defaults,rbind,noauto 0 1 /sys /chroot/gnome/sys none defaults,rbind,noauto 0 1 /var/run/dbus /chroot/gnome/run/dbus none defaults,rbind,noauto 0 1 /var/lock /chroot/gnome/run/lock none defaults,rbind,noauto 0 1 /var/tmp /chroot/gnome/var/tmp none defaults,rbind,noauto 0 1 /tmp /chroot/gnome/tmp none defaults,rbind,noauto 0 1 /home /chroot/gnome/home none defaults,rbind,noauto 0 1 /media /chroot/gnome/media none defaults,rbind,noauto 0 1
Verzeichnisse erstellen:
mkdirhier /.media /chroot/gnome chmod 755 /.media /chroot /chroot/gnome chown root.root /.media /chroot /chroot/gnome
Fügen Sie Folgendes hinzu
/etc/rc.local
:# Make mounts shared mount /.media || true mount /media || true /bin/mount --make-rshared /.media || true # If you have any static mounts under /media, add mount commands for # them here and set them to noauto in /etc/fstab # Mount system directories mount /chroot/gnome/proc || true mount /chroot/gnome/dev || true mount /chroot/gnome/sys || true mount /chroot/gnome/run/dbus || true mount /chroot/gnome/run/lock || true mount /chroot/gnome/var/tmp || true mount /chroot/gnome/tmp || true mount /chroot/gnome/home || true mount /chroot/gnome/media || true # Additional tweaks # (These might not be needed on your system) # Start udevd under gnome # Audio on Chrome won't work without this ( schroot -c gnome -p -u root /etc/init.d/udev start ) || true # Fix pulseaudio killall pulseaudio || true
Möglicherweise müssen Sie beim Anmelden zusätzliche Anpassungen vornehmen. Falls erforderlich/angemessen, erstellen Sie das folgende Shell-Skript und richten Sie es so ein, dass es beim Anmelden ausgeführt wird, d. h. wenn die Desktop-Umgebung (KDE oder Gnome) gestartet wird:
#!/bin/sh # Fix Pulse Audio while pidof pulseaudio ; do killall pulseaudio sleep 1 done schroot -p -c gnome start-pulseaudio-x11 # Uncomment this if you're running KDE4 in the chroot #schroot -p -c KDE4_chroot kded4 & # (additional tweaks may be needed)
Harmonisieren Sie Benutzer und Gruppen zwischen den beiden Installationen. Sie können wahrscheinlich damit auskommen, einfach sicherzustellen, dass Ihr Benutzer (und seine Gruppe) auf beiden dieselbe UID und GID haben. Sie müssen die entsprechenden UIDs und GIDs in den Chroots aktualisieren und
/etc/passwd
( notieren Sie sich die alten UIDs und GIDs). Sobald dies erledigt ist, aktualisieren Sie die numerischen IDs im Chroot-Dateisystem; die Option des Befehls zusammen mit und kann hier helfen./etc/group
/etc/shadow
find
-exec
chown
chgrp
Wenn Sie einen Daemon haben, den Sie im Chroot ausführen möchten, erstellen Sie das folgende Init-Skript (
/etc/init.d/DAEMON_NAME
, ändern Sie DAEMON_NAME ggf.) und machen Sie es ausführbar:#!/bin/sh set -e schroot -p -c gnome -u root /etc/init.d/DAEMON_NAME $@ exit 0
Fügen Sie dann am Ende Folgendes hinzu
/etc/rc.local
:/etc/init.d/DAEMON_NAME restart
Fügen Sie Shell-Skripte hinzu, um alle Programme im Chroot zu starten, die Sie als normaler Benutzer ausführen möchten. Vergessen Sie nicht, sie ausführbar zu machen. Bei Bedarf können Sie ein Desktopsymbol hinzufügen, um das Wrapper-Skript zu starten. Beispiel:
/usr/local/bin/chrome_gnome
:#!/bin/sh mkdir $HOME/.chrome_gnome || true schroot -p -c gnome -- google-chrome --user-data-dir=$HOME/.chrome_gnome "$@"
Starten Sie das System neu und alles sollte funktionieren. Um einen Befehl im Chroot auszuführen, verwenden Sie entweder den Wrapper, den Sie im vorherigen Schritt eingerichtet haben, oder führen Sie den
schroot ...
Befehl einfach manuell über die Befehlszeile aus.
Sie müssen alle oben genannten Punkte an Ihr System anpassen. Beispielsweise möchten Sie wahrscheinlich den Inhalt Ihrer beiden Home-Verzeichnisse in einem einzigen Verzeichnis zusammenführen, das in beiden Installationen gemountet wird. Tun Sie dies, bevor Sie Bind-Mounts vornehmen (oder neu starten), da vorhandene Dateien unter dem Mount-Punkt nach dem Bind-Mount nicht mehr sichtbar sind (sie sind noch auf der Festplatte vorhanden, aber nicht mehr zugänglich).
Wenn Sie Software im Chroot installieren oder aktualisieren müssen, verwenden Sie einfach „ und schroot -p -c gnome -u root
führen Sie es dann apt
wie gewohnt aus usw.
Zusätzliche parallele Ubuntu-Installationen können durchgeführt werden. Führen Sie debootstrap
die Erstinstallation in einem neuen Verzeichnis durch und fügen Sie es dann wie oben gezeigt hinzu.
Wenn Sie Links in einer chroot-Anwendung anklicken und sie mit dem Standardhandler des Basisbetriebssystems öffnen möchten, müssen Sie noch ein paar weitere Änderungen vornehmen. Beachten Sie, dass die Dinge danach nicht mehr richtig funktionieren, wenn Sie das chroot-Betriebssystem direkt booten.
Erstellen Sie ein Shell-Skript
/usr/local/bin/xdg-open-relay-receive
und machen Sie es ausführbar:#!/bin/sh mkfifo -m 666 /tmp/xdg-open-relay tail -f "/tmp/xdg-open-relay" | while read line do xdg-open "$line" done
Möglicherweise möchten Sie das Obige bearbeiten, um die Berechtigungen zu beschränken
/tmp/xdg-open-relay
.Fügen Sie am Ende des von Ihnen erstellten Skripts zur Ausführung beim Anmelden Folgendes hinzu:
killall xdg-open-relay-receive nohup /usr/local/bin/xdg-open-relay-receive &
Ersetzen Sie den Chroot-
xdg-open
Befehl durch ein neues Shell-Skript:mv /chroot/gnome/usr/bin/xdg-open /chroot/gnome/usr/bin/xdg-open.DISABLED
Schreiben Sie Folgendes
/chroot/gnome/usr/bin/xdg-open
und machen Sie es ausführbar:#!/bin/sh echo "$@" > /tmp/xdg-open-relay
Antwort3
Viele Apps verwenden das /home-Verzeichnis, um die von der App generierten Daten zu speichern (Minecraft-Welten, Bilder, Kdenlive-Videobearbeitungen ...). Wenn Sie also eine andere Partition für /home für Ubuntu erstellen und dann dieselbe Partition in Kubuntu verwenden, ohne sie neu zu formatieren und während der Installation denselben Benutzernamen/dasselbe Passwort einzugeben, sollten Ihre App-Einstellungen in beiden Varianten gleich sein. Es ist schwierig, Apps mit dieser Methode freizugeben, aber zumindest Ihre Einstellungen sollten freigegeben werden.
Quelle:https://unix.stackexchange.com/questions/442495/different-linux-distros-sharing-applications
Tipps für praktische Dinge:https://unix.stackexchange.com/questions/6344/different-linux-distros-sharing-the-same-home-folderakzeptierte Antwort