"UbuntuToGentooMigrationComplicatedHowTo"의 두 판 사이의 차이

깊이있는 삽질 Ubuntu Korea Community Wiki
이동: 둘러보기, 검색
(필요 디렉터리 복사)
(이미지를 적당한 장소에 압축 해제하기)
34번째 줄: 34번째 줄:
 
== 본 설치 과정 ==
 
== 본 설치 과정 ==
 
=== 이미지를 적당한 장소에 압축 해제하기 ===
 
=== 이미지를 적당한 장소에 압축 해제하기 ===
스테이지에는 현재 시스템에 존재하는 바이너리와 중복되는 핵심 프로그램 일부(컴파일러, 인터프리터, 라이브러리, 유틸리티 등)와 패키지 관리 프로그램 포티지가 내장되어 있습니다. 시스템 복원을 고려하지 않는다면 루트 위치에 그대로 풀으시면 됩니다. 웬만하면 별도의 디렉터리에서 언팩 하실것을 권합니다. '''<font color="red">이 작업은 매우 위험합니다</font>'''. ELF 바이너리와 여러가지 라이브러리의 의존성을 심하게 꼬이게 할 수 있으며, 실행 즉시 디스크에 기록되므로 '''<font color="red">복구가 불가능합니다</font>'''.  
+
스테이지에는 현재 시스템에 존재하는 바이너리와 중복되는 핵심 프로그램 일부(컴파일러, 인터프리터, 라이브러리, 유틸리티 등)와 패키지 관리 프로그램 포티지가 내장되어 있습니다. 시스템 복원을 고려하지 않는다면 루트 위치에 그대로 풀으시면 됩니다. 웬만하면 별도의 디렉터리에 우선 압축 해제 하실 것을 권합니다. '''<font color="red">이 작업은 매우 위험합니다</font>'''. ELF 바이너리와 여러가지 라이브러리의 의존성을 심하게 꼬이게 할 수 있으며, 실행 즉시 디스크에 기록되므로 '''<font color="red">복구가 불가능합니다</font>'''.  
 
스냅샷에는 배포판에서 지원하는 각종 패키지 목록이 있고, 각 패키지별로 빌드 설정이 담긴 ebuild 파일과 패치 파일 모음이 있습니다. portage에서는 이 목록 참조하여 소스코드를 내려받고 필요한 경우 패치를 내려 받아, 소스코드의 압축을 푼 후 패치를 적용해줍니다. 이후에는 사용자의 설정에 따라 각 패키지별로 configure와 make를 실행합니다. 현재는 별도의 스냅샷을 받지 않고 emerge-websync로 해결하셔도 됩니다. <b>지시 전까지는 포티지 트리를 절대로 동기화 하지 마십시오.</b>
 
스냅샷에는 배포판에서 지원하는 각종 패키지 목록이 있고, 각 패키지별로 빌드 설정이 담긴 ebuild 파일과 패치 파일 모음이 있습니다. portage에서는 이 목록 참조하여 소스코드를 내려받고 필요한 경우 패치를 내려 받아, 소스코드의 압축을 푼 후 패치를 적용해줍니다. 이후에는 사용자의 설정에 따라 각 패키지별로 configure와 make를 실행합니다. 현재는 별도의 스냅샷을 받지 않고 emerge-websync로 해결하셔도 됩니다. <b>지시 전까지는 포티지 트리를 절대로 동기화 하지 마십시오.</b>
  

2014년 4월 25일 (금) 09:35 판

경고

  • 한 시스템에 두 개 이상의 패키지 관리자가 공존하면 돌이킬 수 없는 문제를 일으킬 수 있으니 젠투 리눅스로 설치했다가 다시 우분투로 돌아갈 생각이 있다면, 뒤로 가기 단추를 누르시는게 좋습니다.
  • 이 문서는 참고 용도입니다. 모든 부분을 신뢰하고 따라하시다 발생하는 문제는 본인에게 있습니다. 취하려는 행동의 의미에 대해 정확하게 파악하는 상황이 아니라면 절대로 시도하지 마십시오. 그래도 시도하시겠다면, 본인의 책임임을 인지한 상태에서 이 페이지의 토론장에 질문하시고 예상 결과를 반드시 확인하신 후 진행하십시오.
  • 완성되지 않은 문서입니다. 아직 활용의 가치가 없으므로 "뒤로 가기" 단추를 눌러주십시오. 문서가 완성되면 이 안내 문구는 제거됩니다.

소개

우분투 배포판은 배포판의 모토에서 밝혀진 바와 같이 만인을 위한 배포판이며, 심지어는 닭도 설치할 수 있다[1]는 데비안을 계승했습니다. 간단히 말해서 생각없이 쓰기엔 정말 좋은 배포판이 우분투입니다.하지만 12.10이후로 이런 공식이 깨졌죠. 네, 어쨌든 이 문서는 여러분을 악마의 길로 이끌어드리는게 목적입니다. 그 전에 몇가지 알아두시면 좋은 내용이 있어 간단하게 짚고 넘어가도록 하겠습니다.

설치 준비

생각할 필요가 없는 요소 - 디스크 분할 및 포맷

하나의 시스템에서 디스크를 분할하여 리눅스를 두군데 이상의 디스크 구역에 설치해서 사용한다. 이것은 하나의 시스템에 여러가지 버전의 윈도우를 설치해서 쓰는것과 비슷합니다만, 본질적으로 다른 면이 있다면, 윈도우는 버전이 바뀌면 시스템의 모든 파일의 내부 파일이 전부 바뀌고 디자인도 바뀝니다. 심지어 파일 시스템 구조도 바뀝니다. 그런데 리눅스는 배포판이 바뀐다고 해서 커널 버전이나 각 프로그램의 버전이 항상 다르다거나 하진 않습니다. 특히 같은 시기에 나온 다른 배포판을 설치하는 경우에는 커널 버전 뿐만 아니라 심지어는 내부에 설치된 라이브러리 바이너리 이런 요소들의 버전이 모두 같을 수가 있습니다.

구 버전의 커널을 공부한다거나 구 버전의 커널에 장치 드라이버를 만드는 방법을 만들어서 올리는 방법을 배운다거나 하는 개발이나 테스트 관련 몇 가지 특별한 이유 때문에 커널을 포함한 시스템의 각 구성요소의 버전이 완전히 다른 출시 시기 및 여러가지 특징면에서 판이한 서로 다른 배포판을 다른 파티션에 넣어 설치할 수도 있습니다. 이런 본질적인 이유가 아니라면, 취향의 문제이거나 애초부터 불필요하게 시스템 자원 낭비를 하는 것입니다.

그래서 이 지침서에서는 디스크 분할을 언급하지 않겠습니다. 애초부터 따로 설치할 여유를 두지 않겠다는 의미입니다. 왜냐면 이 문서는 우분투에서 젠투로 완전히 넘어오려는 모험을 감행해보려는 분을 위한 문서이기 때문입니다. 심지어는 gparted, gpt, mkfs 같은 프로그램의 사용 조차도 쓸모 없는 행위임을 인지하도록 해드리고자 합니다. 단지 여러분이 해야 할 일은 기존의 우분투/데비안에서 사용하던 apt 저장소 관리 시스템을 무력화하고 그 자리를 젠투에서 사용하는 portage로 대체할 뿐입니다.

이 쯤에서 생각해보는 우분투의 강점

어쨌든 젠투로 시스템을 옮겨가려면 젠투 이미지를 받아야 합니다. 문제는 여기에 있습니다. "인터넷에 어떻게 연결을 하는가"죠. 보통의 가정집에서라면 통신선 꼽으면 인증이 자동으로 이루어지고 컴퓨터를 켜자마자 인터넷이 되지만, 기업체나 대학교, 연구소 같은 경우는 보안을 위해 웹 인증 과정을 거치기도 합니다. 웹 인증 과정에서 ssl 연결을 통해 인증서 교환이 이루어지기도 하는데, 터미널 콘솔에서 사용하는 브라우저에서는 이 기능을 (애석하게도) 지원하지 않습니다. 따라서, 웹 인증을 해야 하는 곳에서는 부팅은 우분투 라이브 CD 같은 걸로 하고, 하드디스크를 직접 분할하고 초기화 하며, 마운트 과정을 거치고 나서, 네트워크 설정과 인증 과정을 거친 후에야 비로소 젠투 설치 과정에 들어갈 수 있습니다. 이때 눈부시게 활약을 하는 매체가 바로 우분투 CD 입니다. 물론 머신에 우분투를 설치해놓았다면 두말할 필요 없이 광미디어 이용시보다 상대적으로 우월한 성능의 강점을 취할 수 있습니다.

데이터 및 설정 백업

어디까지나 중요한 것은 데이터와 설정의 백업입니다. 특히 신경써야 할 부분은 /etc 와 /var 입니다. 시스템을 운용하시면서 디렉터리를 탐색하는 과정에서 불필요한 요소를 발견하는 시점이 되면 이미 젠투 시스템이 안정적으로 올라갔을 때입니다. 그러므로 젠투로 옮겨가는 과정에서는 절대 함부로 임의의 하위 디렉터리를 삭제하는 일이 없도록 하십시오. 나중에 문제가 발생했을 경우 복구하기 힘들어질 수 있습니다. 어쨌든 임의의 장소로 안전하게 백업하십시오.

젠투 이미지 받기

라이브 CD로 부팅을 하든 서버 CD로 부팅을 하든 부팅을 했으면 웹 브라우저를 통해 다음의 주소를 주소 열기 창에 복사 및 붙여넣기 후 접근하십시오.

http://www.gentoo.org/main/en/mirrors.xml

여러가지 미러 사이트를 보실 수 있습니다만, 개인적으로 추천하는 곳은 lecl.net과 jaist입니다. Darkcircle (토론) 2014년 4월 25일 (금) 15:58 (KST)

예전에는 받으셔야 할 파일이 스테이지, 스냅샷 두 가지가 있었으나 현재는 스테이지 하나만 받으시면 됩니다.

스테이지는 /gentoo-mirror-root/releases/[ARCH_NAME]/autobuilds/YYYYMMDD/stage3-ISA-YYYYMMDD.tar.bz2 에 있습니다.

본 설치 과정

이미지를 적당한 장소에 압축 해제하기

스테이지에는 현재 시스템에 존재하는 바이너리와 중복되는 핵심 프로그램 일부(컴파일러, 인터프리터, 라이브러리, 유틸리티 등)와 패키지 관리 프로그램 포티지가 내장되어 있습니다. 시스템 복원을 고려하지 않는다면 루트 위치에 그대로 풀으시면 됩니다. 웬만하면 별도의 디렉터리에 우선 압축 해제 하실 것을 권합니다. 이 작업은 매우 위험합니다. ELF 바이너리와 여러가지 라이브러리의 의존성을 심하게 꼬이게 할 수 있으며, 실행 즉시 디스크에 기록되므로 복구가 불가능합니다. 스냅샷에는 배포판에서 지원하는 각종 패키지 목록이 있고, 각 패키지별로 빌드 설정이 담긴 ebuild 파일과 패치 파일 모음이 있습니다. portage에서는 이 목록 참조하여 소스코드를 내려받고 필요한 경우 패치를 내려 받아, 소스코드의 압축을 푼 후 패치를 적용해줍니다. 이후에는 사용자의 설정에 따라 각 패키지별로 configure와 make를 실행합니다. 현재는 별도의 스냅샷을 받지 않고 emerge-websync로 해결하셔도 됩니다. 지시 전까지는 포티지 트리를 절대로 동기화 하지 마십시오.

중복 요소 우선 삭제

일부 혹은 전체 충돌 가능성이 있는 sys, tmp, proc, media, mnt, dev, home, boot, opt, root, run 요소는 삭제하는것이 바람직합니다.

필요 디렉터리 복사

지금 부터 시행하는 모든 절차는 루트 계정으로 진행해야 합니다.

  • 다음 절차에 따라 var 디렉터리 일부를 복사하십시오
#!/bin/bash

mkdir /var/db
cp -R ./var/db/pkg /var/db/.
cp ./var/db/Makefile /var/db/.
cp -R ./var/cache/edb /var/cache/.
cp -R ./var/lib/* /var/lib/.
cp -R ./var/log/* /var/log/.
  • etc 디렉터리를 통째로 복사한 후 기존의 백업 내용으로 다시한 번 덮어쓰십시오.
#!/bin/bash

cp -R ./etc /.
cp -Rf backup/etc /.
  • sbin bin usr lib32 (x86_64 의 경우 lib64와 lib 심볼릭 링크 포함) 디렉터리를 시스템에 덮어쓰십시오.

make.conf 설정

종전에는 /etc/make.conf 위치에 있었으나 최근에는 배포판 설정 파일의 위치 일원화 과정을 통해 배포판 관련 설정을 /etc/portage/ 아래로 모두 옮겨, /etc/portage/make.conf 위치에 있습니다. 정확하게는 여러분이 압축을 풀어놓으신 디렉터리/etc/portage/make.conf에 있습니다.

이 파일을 뜯어보자면 ...

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-O2 -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
USE="bindist mmx sse sse2"
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"

몇가지 경고문과 함께 여러가지 징그러운 키-값 쌍이 있습니다.

최신 버전을 활용하되 불안정함을 감수하겠다면 ACCEPT_KEYWORDS="~x86" 또는 (64 비트의 경우) ACCEPT_KEYWORDS="~amd64" 줄을 새로 추가하십시오.

라이선스의 제한을 받지 않고 자유로이 사용하려면 ACCEPT_LICENSE="*" 줄을 새로 추가하십시오.

프로세서 사양에 따라 MAKEOPTS 값을 추가하십시오. MAKEOPTS="-j2 -l3" 형식입니다. -j 값의 최적 값은 물리코어 수 + 1 (하이퍼스레드 기술 적용시 이 값의 2배), -l 값의 최적 값은 가상코어 수(하이퍼스레드 적용시 나타나는 코어 그래프 갯수) * 2 입니다. 예를 들어 i7-2600K의 경우 물리코어 4개가 있으며 하이퍼스레드를 지원하므로 MAKEOPTS="-j10 -l16" 입니다. 만약 물리코어가 6개라면 MAKEOPTS="-j14 -l24" 입니다.

CFLAGS의 -march 값을 바꿀 수 있습니다. 자세한 내용은 "gentoo CFLAGS" 키워드를 활용한 구글 검색 결과[2][3] 를 참고하십시오.


  1. https://kldp.org/node/42698
  2. https://wiki.gentoo.org/wiki/Safe_CFLAGS
  3. http://www.gentoo-wiki.info/Safe_Cflags