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

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

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

4
задан 2 June 2021 в 13:46

3 ответа

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

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

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

  • Загрузиться с установкой Kubuntu.

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

     apt-get install schroot 
     

    Добавьте следующее в /etc/schroot/schroot.conf с ИМЯ ПОЛЬЗОВАТЕЛЯ изменено на ваше имя пользователя:

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

     /.media / media нет значений по умолчанию, 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 без значений по умолчанию, rbind, noauto 0 1 
     / sys / chroot / gnome / sys без значений по умолчанию, rbind, noauto 0 1 {{ 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 нет значений по умолчанию, rbind, noauto 0 1 
     / tmp / chroot / gnome / tmp нет значений по умолчанию, rbind, noauto 0 1 {{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 :

     # Сделайте монтировки общими 
     
    mount /.media || истина 
    mount / media || истина 
     
     / bin / mount --make-rshared /.media || true 
     
     # Если у вас есть статические монтирования в / media, добавьте команды монтирования для 
     # их здесь и установите для них noauto в / etc / fstab 
     { {1}} # Смонтировать системные каталоги 
     
    mount / chroot / gnome / proc || истина 
    mount / chroot / gnome / dev || истина 
    mount / chroot / gnome / sys || истина 
    mount / chroot / gnome / run / dbus || истина 
    mount / chroot / gnome / run / lock || истина 
    mount / chroot / gnome / var / tmp || истина 
    mount / chroot / gnome / tmp || истина 
    mount / chroot / gnome / home || истина 
    mount / chroot / gnome / media || true 
     
     # Дополнительные настройки 
     # (Они могут не понадобиться в вашей системе) 
     
     # Запустить udevd под gnome 
     # Аудио в Chrome не будет работать без этого 
     (schroot -c gnome -p -u root / etc / init.d / udev start) || true 
     
     # Исправить pulseaudio 
    killall pulseaudio || true 
     
  • Возможно, вам придется применить дополнительные настройки при входе в систему. Если необходимо / необходимо, создайте следующий сценарий оболочки и настройте его для запуска при входе в систему, то есть при запуске среды рабочего стола (KDE или Gnome):

     #! / Bin / sh 
     
     # Исправить Pulse Audio 
    при воспроизведении pulseaudio; do 
    killall pulseaudio 
    sleep 1 
    done 
    schroot -p -c gnome start-pulseaudio-x11 
     
     # Раскомментируйте это если вы используете KDE4 в chroot 
     # schroot -p -c KDE4_chroot kded4 & 
     
     # (могут потребоваться дополнительные настройки) 
     
  • Harmonize пользователи и группы между двумя установками. Вероятно, вам удастся просто убедиться, что ваш пользователь (и его группа) имеют одинаковые UID и GID на обоих. Вам нужно будет обновить соответствующие UID и GID в файлах chroot / etc / passwd , / etc / group и / etc / shadow (обратите внимание старых UID и GID). Как только это будет сделано, обновите числовые идентификаторы в файловой системе chroot; здесь могут помочь команда find -exec вместе с chown и chgrp .

  • Если у вас есть демон, который вы хотите запустить в 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 {{1} } 

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

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

    / usr / local / bin / chrome_gnome :

     #! / Bin / sh 
     
    mkdir $ HOME / .chrome_gnome || правда 
    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-приложении и открывать их с помощью обработчика по умолчанию базовой ОС, вам необходимо внести еще несколько изменений. Обратите внимание, что после этого все будет работать неправильно, если вы напрямую загрузите ОС, которая была изменена.

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

      #! / Bin / sh 
     {{1} } mkfifo -m 666 / tmp / xdg-open-relay 
     
    tail -f "/ tmp / xdg-open-relay" | пока прочтите строку 
    сделайте 
    xdg-open "$ line" 
    готово 
     

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

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

      killall xdg-open-relay-receive 
    nohup / usr / local / bin / xdg-open-relay- получить & 
     
  • Заменить команду 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 {{ 1}} echo "$ @"> / tmp / xdg-open-relay 
       
2
ответ дан 28 July 2021 в 11:33

Многие приложения используют каталог / 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 принял ответ

0
ответ дан 28 July 2021 в 11:33

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

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

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

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

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

10
ответ дан 28 July 2021 в 11:33

Другие вопросы по тегам:

Похожие вопросы: