Die Betriebssysteme zusammenführen, um dieselben Anwendungen zu verwenden?

Die Betriebssysteme zusammenführen, um dieselben Anwendungen zu verwenden?

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.confwobei 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/shadowfind-execchownchgrp

  • 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 rootführen Sie es dann aptwie gewohnt aus usw.

Zusätzliche parallele Ubuntu-Installationen können durchgeführt werden. Führen Sie debootstrapdie 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-receiveund 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-openBefehl 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-openund 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

verwandte Informationen