Ubuntu 12.04를 사용해 보고 이해한 내용을 바탕으로 다음과 같은 파티션을 만들었습니다.
- 2GB 스왑(2GB RAM이 있음)
- 1GB
/boot
, 다른 커널 버전을 설치할 예정이므로 (커널 개발을 시작합니다) - 35GB
/var
- 40GB
/usr/local
- 407GB
/home
- 15GB
/
(루트)
이제 Ubuntu 12.04와 함께 OpenSUSE 12.2를 설치하고 싶습니다. 두 OS 간에 /var
및를 공유할 수 있나요 ? /usr/local
패키지가 서로 다른 두 개의 서로 다른 배포판이라는 것을 알고 있지만 디스크 공간을 공유할 수 있는 방법이 있습니까? 그러면 두 OS가 /usr/local
동일한 파티션이나 그와 비슷한 곳에 자체 OS를 가질 수 있습니까?
답변1
공유할 수 있습니다 /usr/local
. 때로는 두 배포판에서 서로 다른 버전의 라이브러리를 사용할 수 있으므로 한쪽 또는 다른 쪽 또는 자체에 몇 개의 라이브러리를 설치해야 할 수도 있습니다 /usr/local
. 이상한 추가 라이브러리를 설치해야 하는 부담은 에서 각 프로그램을 두 번 설치하지 않아도 되므로 보상될 수 있습니다 /usr/local
.
/usr/local
시스템 중 하나에 만 원하는 프로그램이 있는 경우 다른 방식으로 배열할 수 있습니다. 공유하지 /usr/local
말고 시스템을 공유하세요.집어 챙겨 넣다/usr/local
저장소를 만들고 두 시스템 모두 에 심볼릭 링크를 만듭니다 .
/usr/local
공유하기 위해 별도의 파티션을 만들 필요가 없습니다 . 이를 한 시스템의 시스템 파티션에 저장하고, 다른 시스템의 원하는 위치에 마운트하고, 심볼릭 링크를 생성할 수 있습니다.
공유할 수 없습니다 /var
. 디렉토리 배열 방식에는 약간의 차이가 있으며 각 배포에는 고유한 사용자 ID가 있습니다. /var
메일 스풀 등 의 일부를 공유할 수도 있습니다 .
35GB는 /var
엄청납니다. 기본 시스템에는 필요하지 않습니다. 거기에 많은 데이터를 저장하려는 경우(예: 웹 서버 루트가 여기에 있기 때문에) 데이터에 따라 파일 시스템의 크기를 조정하십시오. /var
루트 파티션에서 분할하는 것은 의미가 없으므로 결합합니다. /usr
목록에 언급하지 않았습니다 . 이것도 루트 파티션에서 분할할 필요가 없습니다. 각 OS에 대해 하나의 시스템 파티션과 공유 /home
. 설치할 프로그램을 매우 보수적으로 선택하지 않는 한 시스템 파티션에는 15GB 이상이 필요합니다. 50GB 시스템 파티션을 만들면 괜찮을 것입니다.
/boot
시스템 파티션 암호화와 같은 추가 요구 사항이 없으면 별도의 파티션이 필요하지 않습니다 .
답변2
심볼릭 링크 외에도 다음을 사용할 수도 있습니다 bind mounts
.
http://docs.1h.com/Bind_mounts
기본적으로 하나의 파일 시스템으로 하나의 파티션을 가질 수 있습니다(Anthon의 설정과 유사). 이 경우 파일 시스템이 마운트되어 있다고 가정하면 ubuntu 설치와 suse 설치 /mnt/local
만 수행하면 됩니다 .mount --bind /mnt/local/ubuntu /usr/local
mount --bind /mnt/local/suse /usr/local
/usr/local
이렇게 하면 실제 디렉토리를 삭제/이동하지 않고도 기존 디렉토리에 대해 이 작업을 수행할 수 있다는 이점이 있습니다 /usr/local
.
예는 다음과 같습니다.
# mkdir foo
# touch foo/nowyouseeme
# mkdir bar
# touch bar/nowyoudont
# ls foo
nowyouseeme
# mount --bind ./bar ./foo
# ls foo
nowyoudont
# umount foo
# ls foo
nowyouseeme
답변3
/usr/local
(즉, 로컬로 컴파일/설치된 소프트웨어)는 제대로 작동해야 합니다.무엇이든 사용되는 시스템 라이브러리가 호환되는 한. 즉, "데스크탑용" 배포판을 동시에 사용하면 이 문제를 피할 수 있습니다. Fedora와 RHEL/CentOS를 혼합하여 사용하려는 경우모두기본 라이브러리( glibc
대부분)가 합리적으로 이전 버전과 호환되므로 이전 라이브러리(이 경우 RHEL/CentOS)를 사용하여 배포판을 구축합니다. 너~ 할 것이다C++에서 문제가 발생하면(C++ 런타임은 버전 간에 상당히 변경되는 경향이 있음) 일부 그래픽 라이브러리는 인터페이스를 임의로 변경합니다. 데스크탑 환경과 관련된 모든 것(KDE, Gnome 등)은 아마도 불가능할 것입니다.
답변4
한 컴퓨터에 여러 설치를 설정하는 방법은 이러한 설치 작업 스타일에 따라 다릅니다. 명심해야 할 또 다른 점은 실제 파티션을 사용하여 멋진 가상 머신 작업을 수행하지 않는 한 이 두 설치가 동시에 작동하지 않는다는 것입니다.
내 경험상 /home
파티션은 큰 문제 없이 공유 가능해야 합니다. 응용 프로그램( dovecot
, ) 용으로 특별히 만들어진 사용자이지만 시스템 중 하나에는 일반적으로 '일반 사용자'와 같은 fetchmail
실제 디렉터리가 없습니다 . /home
서로 다른 Ubuntu 버전 간에 로그인 이름을 공유하지만 홈 디렉터리의 구성 파일이 자동으로 변환되기 때문에 이전 설치로 돌아가는 데 문제가 발생하는 경우가 있습니다. 이러한 문제를 해결하기 위해 아래의 다른 홈 디렉터리에 동일한 로그인을 사용 /home
하지만 데이터를 공유하기 위해 동일한 사용자 ID와 그룹 ID를 사용합니다. 호환되지 않거나 되돌릴 수 없는 업그레이드의 위험이 없는 특정 하위 디렉터리(예: 음악이 있는 디렉터리) 간에는 언제든지 링크를 만들 수 있습니다.
저는 80년대 중반에 PDP 11/70 작업을 한 이후로 별도의 파티션을 갖고 있지 않은데 친구가 왜 그렇게 추천했는지 모르겠습니다. 또한 여러 프로그램은 /usr/local
소스에서 설치하는 경우 기본적으로 설치됩니다 . 예를 들어 pip
Python 모듈 설치도 동일합니다. 문제를 방지하기 위해 /mnt/local
각 시스템에 지정된 파티션을 마운트하고 해당 파티션에 /usr/local
디렉토리를 만들고 ubuntu
각 resp에 대한 suse
소프트 링크( ln -s /usr/local /mnt/local/ubuntu
)를 만듭니다. 기계. 이렇게 하면 실수로 덮어쓸 위험 없이 해당 파티션의 공간을 공유할 수 있습니다. 나중에 명시적으로 공유하고 싶은 항목 간에 언제든지 링크를 만들 수 있습니다.
제가 추천할 수 있는 추가 사항은 각 설치에 대해 설치한 항목에 대한 일종의 로그를 유지하는 것입니다(저는 각 머신-배포-개정 조합에 대한 파일과 함께 변경 로그 모드에서 emacs를 사용합니다). 어떤 추가 항목을 설치했는지 기억할 필요가 없습니다. 요즘에는 설치 후 개정 관리를 setupnewsystem
포함하여 모든 추가 작업을 수행하는 스크립트가 있습니다./etc
mercurial