OpenRC/Baselayout 1 to 2 migration/ko

이 안내서는 OpenRC를 통해 baselayout-1 에서 baselayout-2 로 옮겨가는 방법을 안내합니다.

baselayout이 뭐죠?
Baselayout은 전체 시스템을 제대로 동작하기 위해 와 같은 기본 파일을 모아둔 모음입니다. 또한 젠투에서 활용하는 기본 파일 시스템 배치(예:, , , 디렉터리)를 제공하기도합니다.

OpenRC는 뭔가요?
OpenRC는 보통 라고 하는 시스템에서 제공하는 프로그램과 함께 동작하는 의존성 기반 rc (run command) 시스템입니다. OpenRC는 를 대체하지 않습니다. Gentoo/FreeBSD에서는 에서 제공하는 FreeBSD init 을 활용하지만, 젠투에서 사용하는 기본 init 시스템은 입니다.

왜 옮겨야 하나요?
원래 젠투 rc 시스템은 baselayout 1에 빌드했으며 로 작성했습니다. 몇가지 제한 사항이 있습니다. 예를 들면 각 시스템 콜은 부팅 과정에 접근해야 하는데 C 기반 콜 아웃을 추가해야합니다. 이 콜 아웃은 정적으로 연결하는데 rc 시스템이 팽창하는 문제를 야기합니다.

게다가 Gentoo/FreeBSD와 Gentoo 임베디드와 같은 다른 플랫폼에서의 경우는 bash 기반 rc 시스템을 요구할 수 없습니다. 이 때문에 C로 작성했고 POSIX 호환 쉘만 필요한 baselayout 2를 개발했습니다. baselayout 2를 개발하는 동안 baselayout이 젠투용 근본 파일과 파일 시스템 구성요소를 제공하고 rc 시스템이 꾸러미 자체에서 깨진다면 꽤 괜찮겠다 생각했습니다. 그래서 OpenRC가 생겼습니다.

OpenRC는 처음에는 Roy Marples가 2010년까지 개발했습니다. 그리고 지금은 Gentoo OpenRC Project에서 관리합니다. OpenRC는 현재 다양한 모든 젠투 변형 버전(Gentoo Linux, Gentoo/FreeBSD, Gentoo Embedded, Gentoo Vserver)과 FreeBSD, NetBSD 같은 다른 플랫폼을 지원합니다.

OpenRC로 옮겨가기
OpenRC를 옮겨가는 과정은 상당히 간단합니다. 꾸러미 관리자에서 일반 업그레이드 절차 일부를 끌어냅니다. 대부분 중요한 단계는  및  꾸러미를 설치하고 나서 이루어집니다. 시스템을 다시 부팅하기 전에 또는 유사 도구를 실행하여   에 있는 파일이 최신인지 확인하는 과정이 중요합니다. 이 과정을 실패하면 시스템을 부팅하지 못하게 만드는 결과를 초래 하고 아래 절차를 거쳐 시스템을 복구하기 위해 LiveCD가 필요합니다.

설정 파일을 업데이트 하고 나면 다시 부팅하기 전에 우선 확인해야 할 몇가지가 있습니다.

는 오래됐습니다. 이 파일에 들어간 설정은 에 적당한 설정 값으로 옮겨야합니다. 파일과 파일을 살펴보시고 설정을 옮기십시오. 끝나면 파일을 직접 제거하십시오.

커널 모듈
보통 부팅하는 과정에서 각각의 커널 모듈을 자동으로 불러올 때, 매개 변수를 전달할 모듈은 에 있습니다. baselayout-2에서는 이 파일을 더 이상 사용하지 않습니다. 대신, 자동으로 불러오는 모듈과 모듈 매개변수는 파일에 있으며, 커널 버전은 상관없습니다.

예전 방식의 설정 예제는 다음과 같습니다:

이걸 다음과 같이 바꾸면:

위 예제에서, 모듈과 모듈에 붙은 매개변수는 2.6.x 계열 커널로 전달합니다. 새 설정에서는 커널 버전을 기반으로 어떤 모듈이든 세밀하게 모듈과 매개변수를 다룰 수 있습니다.

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

부팅 런레벨
런레벨에서는 전체 머신에 중요한 몇가지 단계를 거칩니다. 예를 들어, 부팅을 시작할 때 루트 파일 시스템을 읽기/쓰기로 마운트했는지, 파일시스템 오류, 마운트 지점의 존재여부를 확인한 후 의사 파일 시스템을 시작합니다.

OpenRC에서 블록 저장 장치에 대한 볼륨 관리자 서비스는 더이상 부팅 과정에서 자동으로 실행하지 않습니다. LVM, RAID, swap, device-mapper (dm), dm-crypt 같은게 여기에 해당합니다. 시스템 관리자는 이 서비스에 대한 적당한 초기화 스크립트를  런레벨에 추가했는지 확인해야 하며, 그렇지 않으면 시스템을 부팅할 수 없습니다.

OpenRC 이빌드에서 이전 작업을 시도하는 동안, 관리자는 볼륨 관리 서비스를 제대로 옮겼는지 확인해야합니다:

,, , , 가 위 항목에서 빠져있다면 다음 명령을 실행하여  런레벨에 해당 항목을 추가하십시오:

시스템에서 mdraid, LVM 을 사용하는데 목록에 언급되지 않았다면 다음 초기화 스크립트를  런레벨에 추가해야합니다:

Udev
OpenRC는 를 기본으로 시작하지 않습니다. 는  런레벨에서 시작하도록 표시해야합니다. 앞서 를 활성화했고  런레벨에 추가했는지 OpenRC 이빌드에서 발견합니다. 하지만, 안전하게 처리하려면 가 있는지부터 확인하십시오:

가 목록에 없다면, 올바른 런레벨에 추가하십시오:

네트워크
baselayout과 OpenRC가 두 개의 다른 꾸러미로 갈라졌기 때문에 net.eth0 초기화 스크립트는 업그레이드 과정에서 나타나지 않습니다. 이 초기화 스크립트를 바꾸고 기본 런레벨에 넣으려면 다음 과정을 진행하십시오:

다른 네트워크 초기화 스크립트가 빠졌다면 다시 추가하기 위해 위 과정을 따르십시오. 간단하게,  를 빠진 네트워크 장치 이름으로 바꾸면됩니다.

(oldnet)은 더이상 bash 방식 배열 값을 설정에 활용하지 않습니다. 설정 방법을 알아보려면 파일을 검토하십시오. 변한 과정은 상대적으로 간단하며, 각각의 항목을 새로운 줄로 바꾸면 됩니다. 예를 들면 정적 IP 할당은 다음과 같이 바꿉니다:

시계
시계 설정은 에서 시간을 조절하는 시스템 자체 도구 이름으로 이름을 바꾸었습니다. 리눅스에서는 이며 FreeBSD에서는 입니다. 실제 시간(RTC) 칩이 동작하지 않는 시스템은 시스템을 끌 때 파일의 mtime을 기반으로 만드는 시스템 시간을 설정하는  를 사용하십시오. 의 초기화 스크립트는 그에 따라 이름이 바뀌므로 boot 런레벨에 시스템의 적절한 스크립트를 추가했는지 확인하십시오.

또한, 이 파일에서   변수는 더 이상 사용하지 않습니다. 이 내용은   파일에서 찾을 수 있습니다. 이 파일이 없다면, 적절한 시간대를 넣어 만들어야합니다. 각 파일을 열어보고 파일의 내용을 확인하십시오.

이 파일의 적절한 값은 디렉터리에 들어있는 시간대의 상대 경로입니다. 예를 들어 미국 동부 해안에 사는 사람이라면 다음 설정이 올바른 값이 됩니다:

XSESSION
변수는 더이상 에서 찾을 수 없습니다. 대신, 파일 (또는 이에 상응하는 파일)에서 사용자 기반으로 설정하거나, 또는 의 파일에서 시스템 전체적으로 활용하도록   변수를 설정할 수 있습니다.

전체 시스템에 대한 기본   값을 설정하는 예제입니다:

EDITOR 및 PAGER 변수
변수는 더 이상 에서 찾을 수 없습니다. 변수 및  변수는 에 기본값으로 설정합니다. 필요한 대로 설정한다면 파일(또는 이에 상응하는 파일)로 사용자 기반 설정을 하든지  파일을 만들어서 시스템 기본 값을 설정하십시오.

부팅 기록
앞에서 꾸러미를 활용하여 부팅 과정을 기록할 수 있었습니다. 그러나, OpenRC는 모든 기록 작업을 내부적으로 처리합니다. 따라서 의 역할을 뜯어볼 필요가 없습니다. 은 이제 안전하게 제거할 수 있습니다. 부팅 메시지를 계속 기록하고 싶으면,   파일의 적당한 변수 값을 설정하십시오. 기록 내용은 에 나타납니다.

과
OpenRC에서는 과  를 더이상 취급하지 않습니다. OpenRC 이전 작업을 진행하는 동안 이 파일을 에 옮기고  또는  접미사를 붙입니다. 그 다음 알파벳 순으로 실행처리합니다.

시스템 하위 유형: 특수한 가상화 사례
OpenRC 이전 버전에서는  함수의    호출을 활용하여 몇가지 초기화 스크립트를 건너 뛸 때 참고하는 가상화 기술의 다양한 형식을 발견합니다.

그러나, 0.7.0 릴리즈에서와 같이 관리자는 의  변수를 활용하여 하위 형식을 분명하게 설정해야 합니다. 하위 형식은 주어진 루트가 속한 가상화 환경과 일치해야하빈다. 보통, 가상 컨테이너에는 비어있지 않은  값을 넣습니다. 호스트 노트는  값을 가집니다.

발견 알고리즘은 새 하위 형식 도입 및 우선순위 발견을 신뢰할 수 없는 커널로의 변경 때문에 수동 설정 방식으로 바꾸었습니다.

오래된 설정 파일 지우기
이전 작업이 끝나면 아직 포티지에서 지우지 않은 파일이 시스템에 남습니다. 이들은 설정 파일 보호 기능이 동작하는 포티지가 보호한 설정 파일입니다.

대부분 볼만한 예제는 에서 온 입니다.

끝내기
설정 파일과 초기화 스크립트 업데이트가 끝나면, 마지막으로 할 일은 를 루트 권한으로 터미널에 입력하는 일입니다. 업그레이드를 하는 중에는 시스템 상태 정보를 보존하지 못하기 때문에 새로 부팅해야합니다.

멈춤 동작
명령으로 모든 의존 서비스를 내리지 않고 임시로 서비스를 멈출 수 있습니다. OpenRC에서  동작을 제거했습니다. 이 기능은 이전 baselayout에서도 동작하는 명령으로 지원합니다.

의 루트 파일 시스템 항목
이전에, 초기  항목을 에서 제거하고 실제  루트 항목만 남겨두었습니다. 중복 rootfs 항목은 시스템을 끄는 동안 다시 추가합니다. OpenRC에서는 initramfs와 tmpfs-on-root를 완전하게 지원하려면 두 항목이 있어야합니다. 이는 시스템을 끄는 과정을 처리하는 동안 기록 작업을 덜 처리해야 함을 의미합니다.