Объединить ОС для использования тех же приложений?

Объединить ОС для использования тех же приложений?

Я использовал Ubuntu GNOME 20.04 и Kubuntu 21.04. Оба они находятся в отдельных разделах. Мне нужно выполнить работу на обеих ОС, но для этого мне нужно перезагрузить компьютер, а затем выбрать другую ОС для загрузки.

Поэтому я хочу узнать, есть ли способ поделиться приложениями, установленными в Kubuntu, которые также используются в Ubuntu, без повторной переустановки того же программного обеспечения в Ubuntu, и чтобы мне не приходилось переключаться между операционными системами.

решение1

Нет, практически. Иметь две отдельные операционные системы разных версий, но затем настроить так, чтобы можно было использовать двоичные файлы из другой версии в другой операционной системе, 1) во многих случаях будет невозможно из-за двоичной несовместимости и/или неправильных или недоступных зависимостей или 2) будет технически очень сложно настроить, и при этом еще и со значительно большим риском непредвиденных проблем.

Да, в принципе, вы можете смонтировать системный раздел другой операционной системы и запустить некоторые простые двоичные файлы непосредственно в другой операционной системе. Однако большинство двоичных файлов гораздо сложнее и зависят от определенных системных конфигураций и зависимостей. Они не будут работать, если вы попытаетесь выполнить их из другой операционной системы. Кто-то очень опытный в Linux все еще может заставить что-то из этого работать в качестве хобби — это упражнение, которое нужно будет повторять для каждого приложения по отдельности.

Есть ли способ сделать так, чтобы приложения, установленные в Kubuntu, также использовались в Ubuntu, без повторной переустановки того же программного обеспечения в Ubuntu, и чтобы мне не приходилось переключаться между ОС?

Как вы здесь написали, да.

Поддерживайте одну операционную систему и установите на ней Gnome Shell, оболочку стандартной Ubuntu, и KDE Plasma, оболочку Kubuntu. Любое приложение, которое вы установите, будет доступно на любом рабочем столе, на котором вы находитесь.

решение2

Да, вы можете запускать программное обеспечение из нескольких установок Ubuntu одновременно, используя chroot. Есть несколько оговорок:

  • Все программы будут работать под управлением одного ядра.
  • Программы в chroot не будут доступны по умолчанию для основной ОС. Вам нужно будет создать скрипты-обертки для их запуска.
  • Возможно, потребуется внести ряд изменений, чтобы все работало гладко. Как минимум, необходимо гармонизировать владельцев файлов/пользователей/группы. То, что показано ниже, работает в моей системе. Вероятно, вам придется внести дополнительные изменения, которые я не могу предвидеть.

Чтобы настроить chroot, вам необходимо сделать следующее:

  • Загрузите установочный файл Kubuntu.

  • Установить schroot:

    apt-get install schroot
    

    Добавьте следующее, /etc/schroot/schroot.confчтобы USERNAMEизменить свое имя пользователя:

    [gnome]
    description=Ubuntu 20.04
    directory=/chroot/gnome
    users=USERNAME
    groups=root
    root-groups=USERNAME
    
  • Добавьте корневой каталог chroot /etc/fstab(это вторая строка ниже). Затем добавьте привязки монтирования для системных каталогов и любые нестандартные монтирования, которые вы используете. Если вам нужны какие-либо специальные параметры монтирования, добавьте их. Например:

    /.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
    
  • Создать каталоги:

    mkdirhier /.media /chroot/gnome
    chmod 755 /.media /chroot /chroot/gnome
    chown root.root /.media /chroot /chroot/gnome
    
  • Добавьте следующее к /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
    
  • Вам может потребоваться применить дополнительные настройки во время входа в систему. Если необходимо/уместно, создайте следующий скрипт оболочки и настройте его на запуск при входе в систему, т. е. при запуске среды рабочего стола (KDE или Gnome):

    #!/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)
    
  • Согласуйте пользователей и группы между двумя установками. Вероятно, вы можете обойтись просто тем, что ваш пользователь (и его группа) имеют одинаковые UID и GID на двух установках. Вам нужно будет обновить соответствующие UID и GID в chroot-окружении ( /etc/passwdзапишите старые UID и GID). После этого обновите числовые идентификаторы в файловой системе chroot; здесь может помочь опция команды вместе с и ./etc/group/etc/shadowfind-execchownchgrp

  • Если у вас есть демон, который вы хотите запустить в chroot, создайте следующий сценарий инициализации ( /etc/init.d/DAEMON_NAMEизмените DAEMON_NAME соответствующим образом) и сделайте его исполняемым:

    #!/bin/sh
    set -e
    schroot -p -c gnome -u root /etc/init.d/DAEMON_NAME $@
    exit 0
    

    Затем добавьте следующее в конец /etc/rc.local:

    /etc/init.d/DAEMON_NAME restart
    
  • Добавьте скрипты оболочки для запуска любых программ в chroot, которые вы хотите запустить как обычный пользователь. Не забудьте сделать их исполняемыми. При желании вы можете добавить значок на рабочем столе для запуска скрипта-обертки. Например:

    /usr/local/bin/chrome_gnome:

    #!/bin/sh
    
    mkdir $HOME/.chrome_gnome || true
    schroot -p -c gnome -- google-chrome --user-data-dir=$HOME/.chrome_gnome "$@"
    
  • Перезагрузите систему, и все должно работать. Чтобы запустить команду в chroot, используйте оболочку, которую вы настроили на предыдущем шаге, или просто вручную запустите команду schroot ...из командной строки.

Вам нужно будет настроить все вышеперечисленное в соответствии с вашей системой. Например, вы, вероятно, захотите объединить содержимое двух домашних каталогов в один каталог, смонтированный в обеих установках. Сделайте это до выполнения любых монтирований привязки (или перезагрузки), поскольку существующие файлы в точке монтирования не будут видны после выполнения монтирования привязки (они все еще будут там на диске, но не будут доступны).

Если вам необходимо установить или обновить программное обеспечение в chroot, просто используйте , schroot -p -c gnome -u rootа затем запустите aptи т. д. как обычно.

Можно сделать дополнительные параллельные установки Ubuntu. Используйте debootstrapдля выполнения начальной установки в новый каталог, а затем добавьте его, как показано выше.


Если вы хотите иметь возможность нажимать на ссылки в chrooted приложении и открывать их с помощью обработчика по умолчанию базовой ОС, вам нужно будет сделать еще несколько изменений. Обратите внимание, что после этого все будет работать некорректно, если вы напрямую загрузите chrooted ОС.

  • Создайте скрипт оболочки /usr/local/bin/xdg-open-relay-receiveи сделайте его исполняемым:

     #!/bin/sh
    
     mkfifo -m 666 /tmp/xdg-open-relay
    
     tail -f "/tmp/xdg-open-relay" | while read line
     do
             xdg-open "$line"
     done
    

    Возможно, вы захотите отредактировать приведенный выше файл, чтобы ужесточить разрешения для /tmp/xdg-open-relay.

  • Добавьте следующее в конец скрипта, который вы создали для запуска при входе в систему:

     killall xdg-open-relay-receive
     nohup /usr/local/bin/xdg-open-relay-receive &
    
  • Замените команду chroot xdg-openновым скриптом оболочки:

    • mv /chroot/gnome/usr/bin/xdg-open /chroot/gnome/usr/bin/xdg-open.DISABLED

    • Запишите следующее /chroot/gnome/usr/bin/xdg-openи сделайте его исполняемым:

      #!/bin/sh
      echo "$@" > /tmp/xdg-open-relay
      

решение3

Многие приложения используют каталог /home для хранения данных, которые генерирует приложение (миры Minecraft, изображения, видеомонтажи kdenlive...). Поэтому, если вы создаете другой раздел для /home для Ubuntu, а затем используете этот же раздел в Kubuntu без переформатирования и ввода того же имени пользователя/пароля во время установки, это должно привести к тому, что настройки вашего приложения будут одинаковыми для двух вариантов. Трудно делиться приложениями, используя этот метод, но, по крайней мере, ваши настройки должны быть общими.

Источник:https://unix.stackexchange.com/questions/442495/different-linux-distros-sharing-applications

Советы по практическому применению:https://unix.stackexchange.com/questions/6344/different-linux-distros-sharing-the-same-home-folderпринятый ответ

Связанный контент