Trans:OpenRCMigration

Gentoo Korea Wiki
Darkcircle (토론 | 기여)님의 2012년 7월 21일 (토) 04:36 판 (새 문서: = Baselayout과 OpenRC 설정 가져오기 안내서 = == 배경 == === Baselayout이란 뭔가요? === Baselayout은 /etc/hosts와 같이 모든 시스템에서 기능을 올바르...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 가기 검색하러 가기

Baselayout과 OpenRC 설정 가져오기 안내서

배경

Baselayout이란 뭔가요?

Baselayout은 /etc/hosts와 같이 모든 시스템에서 기능을 올바르게 동작하기 위해 필요로 하는 기본 파일 모음을 제공합니다. 또하 젠투에서 사용하는 (/etc, /var ,/usr, /home과 같은)파일 시스템 배치를 제공하기도 합니다.

OpenRC란 뭔가요?

OpenRC는 시스템에서 제공하는 보통 /sbin/init인 init 기능이 어떤 것이냐에 대해서는 상관 없이 동작하는 의존성 기반 rc 시스템입니다만 /sbin/init을 대체할 수 없습니다. 젠투 리눅스에서 사용하는 기본 init은 sys-apps/sysvinit 이고, Gentoo/FreeBSD는(이하 젠투프비라고 합니다) sys-freebsd/freebsd-sbin이 제공하는 FreeBSD init을 사용합니다.

그래서, 왜 설정을 가져와야 하나요?

본래 젠투의 rc 시스템은 baselayout 1에 빌드했고 완전히 bash 스크립트로 작성했습니다. 이는 약간의 제한 요소가 있었습니다. 예를 들어 각각의 시스템 호출들은 시동하는 동안에 접근할 필요가 있고 추가할 C 기반의 콜 아웃이 필요합니다. 이들 각각의 콜 아웃은 점차적으로 rc 시스템을 보기 흉하게 커지도록 정적으로 링크했었습니다.

게다가 젠투프비와 젠투 임베디드 같은 플랫폼으로 젠투를 확장했을 때 Bash 기반 rc 시스템을 요구하는 것은 불가능하게 되었습니다. 이는 C기반으로 작성하였고 POSIX 호환 쉘만을 요구하는 Baselayout 2를 개발하는 요인이 되었습니다. Baselayout 2를 개발하는 동안 젠투용 기반 파일과 파일시스템 배치를 Baselayout이 대부분 제공했다면 더 좋았을 것이라는 판단을 하게 됐고, rc시스템은 패키지 내부에서 깨졌습니다. 그래서 OpenRC를 보유하게 된 것입니다.

OpenRC는 초기에 Roy Marples가 2010년까지 개발했고 지금은 젠투 OpenRC 프로젝트 에서 관리하고 있습니다. OpenRC는 현재 다양한 모든 젠투 시스템(젠투 리눅스, 젠투프비, 젠투 임베디드 젠투 V서버)과 FreeBSD와 NetBSD 같은 다른 플랫폼을 지원합니다.

OpenRC로 설정 가져오기

OpenRC로 설정을 가져오는 것은 무지 쉽습니다. 꾸러미 관리자에 보통 업그레이드 과정의 일부가 될 것입니다. 실제로 가장 중요한 과정은 {{{1}}}sys-apps/openrc 꾸러미를 설치하고난 다음입니다. 재시동을 하기 전에 dispatch-conf를 실행하고 /etc가 최신인지를 확인하는 것이 매우 중요' 합니다. 이 과정을 실패하면 시동할 수 없는 시스템이 될 것 이며, 시스템을 복구하기 위해 젠투 라이브CD를 사용하고 아래의 과정을 수행하는 것이 필요할 것입니다.

/etc/conf.d/rc

/etc/conf.d/rc는 이미 오래됐으며 여기에 있는 설정 내용들은/etc/rc.conf에 적당한 설정으로 가져다 놓을 필요가 있을 것입니다. /etc/rc.conf와 /etc/conf.d/rc의 내용을 쭉 살펴보시고 설정 내용을 가져다 놓으시기 바랍니다. 이 과정이 끝나면 /etc/conf.d/rc를 삭제하십시오.

커널 모듈

보통 시동시 각각의 커널 모듈을 자동으로 불러오고 싶을 경우, 여러분이 불러오고 싶은 모듈에 대한 인자들과 함께 커널 모듈을 /etc/modules.autolod.d/kernel-2.6에 놓을 것입니다. baselayout-2에서는 이 파일을 더 이상 사용하지 않습니다. 대신 자동으로 불러올 모듈과 모듈 인자들은 커널 버전에 상관 없이 /etc/conf.d/modules에 놓입니다.

예전 방식의 설정 파일은 다음과 같을 것입니다.


코드 예제 2.1: /etc/modules.autoload.d/kernel-2.6
ivtv

cx88_dvb video_br=2


위 예제는 바꾼 결과는 다음과 같습니다.


코드 예제 2.2: /etc/conf.d/modules
# 시동시 자동으로 불러올 모듈

modules_2_6="ivtv cx88_dvb"
# 모듈 인자
module_cx88_dvb_args_2_6="video_br=2"


위의 예제에서 2.6 버전의 커널에 대한 모듈과 인자들만이 전달될 것입니다. 새 설정내용에서는 커널 버전에 따라 모듈과 인자를 세밀하게 조절할 수 있습니다.


중요: module* 변수는 누적할 수 없습니다. 좀더 버전에 특화된 변수의 내용이 좀 더 일반적인 변수를 덮어쓸 것입니다.



참고: ModuleModules의 차이를 숙지하여 주십시오.


좀 더 자세한 예제는 다음과 같습니다.


코드 예제 2.3: /etc/conf.d/modules의 자세한 예제
# 2.6.23-gentoo-r5에 대한 ivtv만 불러옵니다

modules_2_6_23_gentoo_r5="ivtv"
# (-gentoo-r5 말고) 2.6.23 커널에 대한 cx88_dvb만을 불러옵니다
modules_2_6_23="cx88_dvb"
# 2.6.x대 버전의 커널에서 x가 23이 아닌 경우 tun과 usbserial만을 불러옵니다
modules_2_6="tun usbserial"
# 이 외의 경우에 ochi1394와 ieee1394를 불러옵니다.
modules="ohci1394 ieee1394"

# 2.6.23-gentoo-r5에 대해 pass video_br=2 인자 값을 cx88_dvb에 전달합니다
module_cx88_dvb_args_2_6_23_gentoo_r5="video_br=2"
# 2.6.x 버전대 커널에 대해 vendor와 product 인자를 전달합니다
module_usbserial_args_2_6="vendor=0x1410 product=0x2110"
# ieee1394에 debug라는 값을 전달합니다
module_ieee1394_args="debug"


런레벨 시동

boot 런레벨은 모든 장치에 대해 중요한 여러단계를 수행합니다. 예를 들어 루트 파일 시스템을 읽기/쓰기로 마운트 했는지 확인하고, 이 파일시스템의 오류를 검사하며, 마운트 지점을 사용할 수 있는지 확인하고, /proc 가상 파일시스템을 시동시 시작합니다.

OpenRC에서는 여러분의 블록 저장장치 에 대한 볼륨 관리 서비스를 더이상 시동시 자동으로 실행하지 않습니다. lvm, raid, swap, device-mapper(dm), dm-crypt와 같은 것들이 여기에 포함됩니다.이들 서비스에 대한 적당한 초기화 스크립트가 boot 런레벨에 있는지 반드시 확인해야 하며, 그렇지 않으면 시스템을 시동할 수 없을 것입니다!

OpenRC ebuild는 이 설정 내용 가져오기를 시도해볼 것이며 여러분은 모든 볼륨 관리 서비스에 대한 설정이 제대로 옮겨졌는지 검증해야 합니다.


코드 예제 2.4: boot 런레벨에 있는 모든 서비스 표시하기
# ls -l /etc/runlevels/boot/


root, procfs, mtab, swap, fsck가 위 목록에 보이지 않는다면 이들을 boot 런레벨에 추가하기 위해 다음 명령을 수행합니다.


코드 예제 2.5: boot 런레벨에 중요한 서비스 추가하기
# rc-update add root boot

# rc-update add procfs boot
# rc-update add mtab boot
# rc-update add fsck boot
# rc-update add swap boot


mdraid와 lvm을 사용하는 것을 알고 있고 위 목록에서 보지 못했다면, 초기화 스크립트를 boot 런레벨에 추가하기 위해 다음 명령을 수행해야 합니다.


코드 예제 2.6: boot 런레벨에 mdraid와 lvm 추가하기
# rc-update add mdraid boot

# rc-update add lvm boot