동일한 애플리케이션을 사용하기 위해 OS를 병합하시겠습니까?

동일한 애플리케이션을 사용하기 위해 OS를 병합하시겠습니까?

저는 Ubuntu GNOME 20.04와 Kubuntu 21.04를 사용하고 있습니다. 둘 다 별도의 파티션에 있습니다. 두 OS 모두에서 작업을 수행해야 하지만 이를 위해서는 컴퓨터를 다시 시작한 다음 부팅할 다른 OS를 선택해야 합니다.

따라서 Ubuntu에 동일한 소프트웨어를 다시 설치하지 않고 Ubuntu에서도 사용되는 Kubuntu에 설치된 응용 프로그램을 공유하여 운영 체제 간에 전환할 필요가 없는 방법이 있는지 알고 싶습니다.

답변1

아니, 실제로 말하자면. 버전이 서로 다른 두 개의 별도 운영 체제가 있지만 다른 운영 체제에서 다른 버전의 바이너리를 사용할 수 있도록 설정하는 것은 1) 바이너리 비호환성 및/또는 잘못되거나 사용할 수 없는 종속성으로 인해 많은 경우 불가능하거나 2) 다음과 같습니다. 기술적으로 설정이 매우 복잡하고 예상치 못한 문제가 발생할 위험도 훨씬 더 높습니다.

예, 원칙적으로 다른 운영 체제의 시스템 파티션을 마운트하고 다른 운영 체제에서 일부 간단한 바이너리를 직접 실행할 수 있습니다. 그러나 대부분의 바이너리는 훨씬 더 복잡하며 지정된 시스템 구성 및 종속성에 따라 달라집니다. 다른 운영 체제에서 실행하려고 하면 실행되지 않습니다. Linux에 매우 능숙한 사람은 여전히 ​​이 중 일부를 취미로 사용할 수 있습니다. 이는 각각의 모든 응용 프로그램에 대해 개별적으로 반복해야 하는 연습입니다.

따라서 Ubuntu에 동일한 소프트웨어를 다시 설치하지 않고 Ubuntu에서도 사용되는 Kubuntu에 설치된 응용 프로그램을 공유할 수 있는 방법이 있습니까? 따라서 OS 간에 전환할 필요가 없습니다.

여기에 쓰신 대로 그렇습니다.

단일 운영 체제를 유지하고 표준 Ubuntu의 쉘인 Gnome Shell과 Kubuntu의 쉘인 KDE Plasma를 모두 설치합니다. 설치한 모든 응용 프로그램은 로그인한 데스크톱에서 사용할 수 있습니다.

답변2

예, chroot를 사용하면 여러 Ubuntu 설치에서 동시에 소프트웨어를 실행할 수 있습니다. 몇 가지 주의사항이 있습니다:

  • 모든 프로그램은 단일 커널에서 실행됩니다.
  • chroot의 프로그램은 기본적으로 기본 OS에서 사용할 수 없습니다. 이를 시작하려면 래퍼 스크립트를 만들어야 합니다.
  • 원활하게 실행하려면 여러 가지 조정이 필요할 수 있습니다. 최소한 파일 소유권/사용자/그룹이 조화를 이루어야 합니다. 아래 표시된 내용은 내 시스템에서 작동합니다. 제가 예측할 수 없는 추가 조정이 필요할 수도 있습니다.

chroot를 설정하려면 다음을 수행해야 합니다.

  • 쿠분투 설치로 부팅합니다.

  • 설치하다 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를 가지고 있는지 확인하면 문제가 해결될 수 있습니다. chroot 의 및 /etc/passwd에서 적절한 UID와 GID를 업데이트해야 합니다 (이전 UID와 GID를 기록해 두세요). 완료되면 chroot 파일 시스템의 숫자 ID를 업데이트하십시오. 여기서는 명령 옵션과 및 가 도움이 될 수 있습니다 ./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새 디렉터리에 초기 설치를 수행한 다음 위에 표시된 대로 추가하는 데 사용합니다 .


chroot된 애플리케이션에서 링크를 클릭하고 기본 OS의 기본 핸들러를 사용하여 링크를 열려면 몇 가지 사항을 더 변경해야 합니다. 이 작업을 수행한 후 chroot된 OS를 직접 부팅하면 제대로 작동하지 않습니다.

  • 쉘 스크립트를 작성 /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에 대해 다른 파티션을 만든 다음 설치 중에 동일한 사용자 이름/비밀번호를 다시 포맷하고 입력하지 않고 쿠분투에서 동일한 파티션을 사용하면 앱 설정이 두 변형에서 동일하게 됩니다. 이 방법을 사용하여 앱을 공유하기는 어렵지만 최소한 설정은 공유되어야 합니다.

원천:https://unix.stackexchange.com/questions/442495/다른-linux-distros-sharing-applications

실용적인 것들을 위한 팁:https://unix.stackexchange.com/questions/6344/다른-linux-distros-sharing-the-same-home-folder수락된 답변

관련 정보