안녕하세요 잼니크입니다.
Gentoo 리눅스 설치를 시작해 보겠습니다!!!!!!라고 패기 넘치게 도전하는 당신께... 먼저 빌드 지옥에 강력한 구원자를 하나 투입하고 시작하겠습니다.
설치를 진행하기 전, 왜 이런 썰들을 풀고 있냐면... 처음 설치 하시는 분들에게는 생소하겠지만... 아무것도 모르고 Gentoo 설치를 하면 빌드 지옥에서 정신 못 차리고 도망가게 됩니다...
젠투를 설치해서 사용해보신 분들은 아마도 대부분 동의하시겠지만... 빌드에 시간이 상상이상으로 많이 들어갑니다... 제 생각에는 가장 큰 진입 장벽인 거 같습니다. 웹킷 엔진이 포함된 브라우저를 빌드한 적이 있었는데 당시에 꼬박 3일(!!!!!!!)이 걸렸습니다. 그 대신 얻는 건, 필요한 것들만 설치한 투명한 리눅스 시스템을 얻을 수 있습니다.
하지만 너무 걱정하지 마십시오! 빌드지옥의 강력한 구원자를 하나 만들 생각입니다. 뭐... 연습(?)겸해서 제 PC 중 하나에 Gentoo를 먼저 설치한 다음, Gentoo에 컴파일 작업을 나눠서 처리할 수 있는 distcc를 설치해서 최종 목표인 마개조 되어있는(?) 인텔 태블릿이 컴파일할 때 작업을 같이 처리하도록 하려고 합니다. 웬만큼 느려도 마개조(?) 태블릿 보다는 빠를게 분명하기에, 속도를 올릴 겸, 실전으로 들어가기 전 먼저 연습할 겸 설치를 진행하려고 합니다.
그러면 먼저 gentoo를 설치해야겠죠!?
1. 구원자 Gentoo 사전 준비 사항
구원자 Gentoo (이하 구원자)라고 별명을 지어보겠습니다 ㅋㅋㅋ 저는 VMware를 이용해서 가상머신으로 진행하겠습니다.
자원은 다음과 같이 할당 했습니다.
CPU | Mem | Disk | NIC |
8core | 16GB | 40GB | Bridged, 1NIC |
먼저 Gentoo 이미지를 구해 봅시다! 다운로드는 아래 주소로 가서 ISO 파일을 준비해 봅니다.
https://www.gentoo.org/downloads/
Downloads – Gentoo Linux
News and information from Gentoo Linux
www.gentoo.org
우리는 Intel (또는 AMD) CPU를 사용할 것이 맞으므로... amd64(arm64아닙니다...)에서 Minimal Installation CD 또는 LiveGUI USB Image 중 하나를 선택해서 다운로드합니다.
사실 Gentoo 설치 메뉴얼에 처음 나오는 내용이 굳이 Gentoo에서 제공하는 이미지 말고 리눅스를 부팅할 수 있으면 된다고 되어 있긴 합니다만... 그래도 혹시 모르니 둘 중에 하나를 선택합니다.
저는 어짜피 마개조탭을 설치할 때 LiveGUI를 써야만 하기 때문에... Minimal Installation CD로 부팅해서 진행하겠습니다.
링크에 들어가서 아래와 같이 선택해서 다운로드하도록 합니다. 다운로드하는 동안 우리에게 맞는 설치 매뉴얼을 열어봅시다. 그림 아래에 링크를 놓겠습니다.
아! 이 메뉴얼은 Gentoo Handbook이라고 부릅니다.
https://wiki.gentoo.org/wiki/Handbook:AMD64
Gentoo AMD64 Handbook - Gentoo Wiki
The Gentoo Handbook is an effort to centralize documentation into a coherent handbook. This handbook contains the installation instructions for an Internet-based installation and some additional sections for working with Gentoo's native software tools such
wiki.gentoo.org
시간이 된다면 Installing Gentoo 항목을 보고 이런 순서로 설치되는구나... 그리고 첫 번째 챕터와 두 번째 챕터 정도는 읽어봅시다.
첫 번째 챕터: About the Gentoo Linux installation
두번째 챕터: Choosing the right installation medium
이미지 다운로드가 끝나면, 가상머신을 생성 후 부팅해 줍니다... (참 쉽죠?!)
그러면 영롱한 Gentoo 리눅스의 화면을 볼 수 있습니다... 아래처럼 말이죠!
그리고 제가 중요한 부분을 표시해 놨습니다.
어!? 설치 화면 맞나요?! 보통은 Anaconda(https://en.wikipedia.org/wiki/Anaconda_(installer)를 이용해서 설치가 되는데... 그냥 쉘이 떠 버립니다... 궁금하신 분들은 아래 링크에서 확인해 주세요. (아! 그 설치해 주는 프로그램을 Anaconda라고 하는군요 하고 넘어가면 됩니다~)
Anaconda (installer) - Wikipedia
From Wikipedia, the free encyclopedia Free and open-source system installer for Linux distributions Anaconda is a free and open-source system installer for Linux distributions. Anaconda is used by Red Hat Enterprise Linux, Oracle Linux, Scientific Linux, R
en.wikipedia.org
제가 중요한 부분을 표시해 놨습니다. 저는 가상머신을 부팅시키고 SSH 클라이언트를 통해 설치를 진행할 것이므로 (그게 압도적으로 편해서...) 네트워크에 연결하고, SSH 서버를 기동시 키고, root 사용자로 접근해서 설치를 진행할 예정입니다.
위 그림에서 빨간색으로 표시한 것은 각각에 해당되는 것들입니다. (눈썰미가 있으신 분들은 눈치채셨겠군요)
차례 차리 실행해 보겠습니다!
2. 구원자 Gentoo SSH 서버 기동까지
지금 이 내용은 Gentoo Handbook의 세 번째 챕터(Configuring the network)의 내용을 담고 있습니다.
먼저, 네트워크 설정을 진행해 보겠습니다.
아직은 네트워크 장치의 이름을 모르므로... 네트워크 장치의 이름을 확인해 줍니다
ifconfig
네트워크 장치 이름을 알기 위해 ifconfig를 입력해 보니 제 장치의 이름은 enp2 s1입니다. lo는 루프백장치(또는 로컬호스트 나 IP 주소 127.0.0.1)입니다.
어!? 다행히 저는 네트워크 장치를 찾아서 IP 주소까지 설정이 되어 있습니다!?
하지만 이 글을 보시는 분들은 인식이 안되어 있을 수 있으니... 설정부터 진행해 보겠습니다.
# 장치 이름은 enp2s1
net-setup enp2s1
그럼 갑자기!? 뭔가 엔틱 한 화면이 아래처럼 뜹니다.
네트워크 설정 할래? 의 질문에는 좋았어!(Yes!)로 답해 줍시다.
그러면 아래와 같은 창이 뜹니다.
이 화면은 네트워크 연결이 유선인지, 무선인지(Wifi), 무선일 경우 암호가 필요한지를 선택하는 화면입니다.
유선은 1번, 무선이지만, 암호가 필요 없을 경우 2번, 암호가 있을 경우 3번을 선택해 줍니다.
구원자 Gentoo에서는 유선이라... 유선으로 선택했습니다.
(무선이라고 해도 두려워하지 마시고... 그래봐야 와이파이 이름이랑 암호 정도 물어보는 게 다입니다)
결국에는 위 그림이 나오게 됩니다.
IP 주소를 DHCP(Dynamic Host Configuration Protocol)를 통해 알아서 설정하려면 1번을, 특정하게 원하는 IP가 있을 경우 2번을 선택해 줍니다! (OK!)
지금은 설치가 목적이기 때문에 DHCP를 선택하겠습니다.
그러면 아래와 같이 됩니다.
설명대로 ifconfig로 잘 설정되어 있는지 확인해 봅니다.
일단은 IP 주소를 DHCP를 통해 잘 받아왔습니다.
외부와 통신이 되는지 테스트를 해 봅시다!
잘 됩니다!
이제 그다음으로 SSH 서버를 기동 할 차례입니다.
아까 본 기동 명령을 실행해 봅시다. (어!? 왜 systemctl 안 써요?! 왜냐하면 안쓰니까요)
# SSH 서버 기동
/etc/init.d/sshd start
하지만 아직 접속은 안됩니다... 왜냐하면.. 아직 우리가 사용 중인 아이디랑 암호를 모르기 때문입니다.
사실 첫 화면에서 root 사용자를 쓰고 있고, 암호는 자동 생성되어 있기 때문에 암호를 만들어 쓰라고 친절하게(?) 적혀 있습니다.
# root 사용자 암호 생성
passwd root
잘 되었습니다.
이제 가만히 놔두고, SSH 클라이언트로 접속해 보겠습니다.
여기까지 나왔으면 이제 대략 설치할 준비가 되었습니다!
3. 구원자 Gentoo 디스크 파티션 설정
설치를 본격적으로 들어갑니다. 젠투 핸드북의 4번째 챕터인 Preparing the disks 부분입니다.
들어가면 공부할 게 많군요... 생소한 키워드부터 뭐가 좀 많긴 한데... 가상머신이라 무난하게 넘어갈 수 있습니다.
먼저 디스크를 확인해 줍니다. 일단 40GB를 할당했다는 걸 기억하고 시작하겠습니다!
fdisk -l
찾았습니다! 디스크의 위치는 /dev/sda이고, 용량은 40 GiB입니다.
파티션 계획은 아래와 같이 했습니다.
파티션 | 파일시스템 | 크기 | 설명 |
/dev/sda1 | xfs | 1G | 리눅스 부팅에 필요한 커널과 커널 모듈, 펌웨어 등을 저장 |
/dev/sda2 | swap | 1G | 스왑메모리 영역 |
/dev/sda3 | xfs | 나머지 공간 | 루트(/) |
매뉴얼에 권장값이랑 sda2를 다르게 세팅하려고 합니다. 젠투 핸드북에서는 2GB 또는 그 이하의 메모리를 가지고 있을 경우 메모리의 2배로 잡고, 필요에 따라 8GB 이상으로 설정하라고 되어 있습니다. 주로 최대절전모드(hibernation) 기능 때문인데... 구원자 Gentoo에게 지옥으로부터 우리를 구해야 하는데 최대절전모드로 쉬게 할 수는 없잖아요?!
그래서 swap을 안 잡아도 될 것 같지만, 혹시 몰라 1GB를 준비했습니다
파티션을 생성해 봅시다!
먼저 부팅을 위한 파티션을 만들어 보겠습니다.
fdisk /dev/sda
: n
: P
:
: +1G
그다음은 스왑 공간을 만들겠습니다.
: n
: P
: 2
:
: +1G
마지막으로 루트(/) 파티션입니다. 용량을 최대로 잡았습니다.
: n
: p
: 3
:
:
마지막으로 디스크에 파티션레이아웃을 저장해야 합니다.
그다음, fdisk -l로 다시 보면 파티션이 나눠진 것을 볼 수 있습니다.
: w
fdisk -l
이제 각 파티션 별로 파일시스템의 종류를 선택하고, 포맷을 해야 합니다.
일단은 젠투핸드북이랑 똑같이 했습니다. 젠투 핸드북에 파일시스템별로 소개를 하고 있습니다. 시간 날 때 봐 두면 좋을 것 같습니다.
mkfs.xfs /dev/sda1
mkswap /dev/sda2
swapon /dev/sda2
mkfs.xfs /dev/sda3
자 이제 파티션 설정이 끝났습니다!
스왑파티션은 벌써 준비가 되어 있습니다.
이제 준비한 파티션에 Gentoo를 얹을 차례입니다.
4. Gentoo 얹기!
Gentoo 얹기는 사실 제가 쓰는 말입니다. Gentoo 설치를 위해서는 빌드가 필요하고, 필드를 위한 컴파일러나 기타 도구가 필요합니다. 하지만 아무것도 없는 상태에서는 불가능하겠죠...
그래서 stage 파일을 이용해서 기본적인 구성에 필요한 것을 복사해서 시작합니다. 복사하려면 공간이 필요하기 때문에... 파티션 준비를 먼저 한 것이고요.
그럼 이걸 마운트 해서 사용할 수 있게 만들어야 합니다.
mkdir --parents /mnt/gentoo
mount /dev/sda3 /mnt/gentoo
cd /mnt/gentoo
chronyd -q
이렇게 하면 Gentoo 설치 디스크의 /mnt/gentoo 경로를 구원자 Gentoo를 위해 사용할 수 있게 됩니다.
chronyd -q 명령은 시간 동기화를 하는 명령입니다. 바로 아래에 스테이지 파일을 다운로드하는데, 웹브라우저에서 다운로드하는 거랑 동일하게 보통은 HTTPS 프로토콜을 통해 다운로드합니다. HTTPS 프로토콜을 사용하기 위해서는 시간이 정확해야 하기 때문에 시작 전에 시간을 동기화합니다.
스테이지 파일을 다운로드하으로 가 봅시다!
만약 쉘에서 바로 다운로드하으려면 links 브라우저를 통해 다운로드할 수 있습니다. 저는 wget으로 받을 겁니다
# 쉘에서 직접 접속 할 경우
links https://www.gentoo.org/downloads/mirrors/
미러 주소인 https://www.gentoo.org/downloads/mirrors/로 들어가면 국가와 미러 사이트를 들어갈 수 있습니다.
미러에서 Asia > KR을 찾아 클릭하면 아래와 같은 페이지의 한국 미러 목록을 볼 수 있습니다.
이거 중에서 아무거나 선택해도 좋습니다. 카이스트는 URL이 잘못되었네요... (나중에 메일 보내서 써야겠군요)
저는 일단 lanet.kr에서 받으러 갔습니다.
들어가면 당황스러운 화면이 나옵니다...
당황하지 말고... /releases/amd64/autobuilds/current-stage3-amd64-openrc/ 까지 들어옵니다.
그러면 저 아래에.... xz로 끝나는 스테이지 파일이 있습니다.
이걸 wget으로 가져옵니다.
wget https://ftp.lanet.kr/pub/gentoo/releases/amd64/autobuilds/current-stage3-amd64-openrc/stage3-amd64-openrc-20250330T165244Z.tar.xz
명령과 URL은 남겨 놓지만... 나중에는 사용이 안될 겁니다.
그때는 당황스러운(?) 화면에서부터 들어가서 URL을 따 오시면 됩니다.
다운로드하는 동안 젠투 매뉴얼로 돌아가서 OpenRC에 대한 내용을 읽어 봅시다.
대충 적자면... 요즘 리눅스는 init 시스템으로 systemd를 사용하지만 Gentoo의 경우 예전부터 사용해 오던 init과 호환되 계 만들었다~ 뭐 그런 이야기입니다. 그 외에도 읽어볼 만한 게 있으니 링크를 참고하세요.
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Stage#OpenRC
Installing the Gentoo installation files - Gentoo Wiki
Choosing a stage file Tip On supported architectures, it is recommended for users targeting a desktop (graphical) operating system environment to use a stage file with the term desktop within the name. These files include packages such as sys-devel/llvm an
wiki.gentoo.org
다운로드가 끝났다면 압축을 풀어봅니다.
# 젠투 핸드북에서 v 옵션만 제거함
tar xpf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt/gentoo
젠투 핸드북에 있는 v옵션을 사용하지 않고 압축을 해제했습니다. 젠투핸드북에 옵션별로 설명해 줍니다.
v 옵션은 압축을 해제한 파일의 경로를 출력하는데... 파일이 어마아마하게 많아서 출력하면 느려지기 때문에 빠른 작업을 위해 옵션을 제거했습니다.
어!? 그런데... 갑자기 왠 stage3일까요?
원래 stage 1과 2도 있었지만... 특수한 목적이 있지 않는 한 현재는 사용하지 않습니다. 뭐... 아는 분은 알아서 쓰겠지만요... 이 문서를 보고 할 분들은 아니니... 우리는 stage3을 씁니다. (그리고 우리에게는 emerge world 가 있습니다... 뭔지는 좀 더 뒤에 나옵니다)
자 이제 패키지를 위한 설정을 진행해 봅시다!
Gentoo의 패키지 관리자인 portage는 다른 리눅스의 패키지 관리 시스템과 다른 부분이 있습니다. 보통 리눅스 배포판들은 커뮤니티에서 제공하는 바이너리를 이용해서 설치합니다. 다시 말하면, 압축을 풀어 파일을 옮기는 것과 비슷합니다. 그러나 portage는 바이너리 대신 소스코드를 가져와서, Gentoo 커뮤니티에서 수정한 부분을 원본 소스코드에 반영하고, 빌드를 수행합니다.
리눅스 커널이나 웹킷엔진같이 거대한 결과물은... 엄청 느릴 수 있는 단점이 있지만 빌드를 위해 컴파일러 최적화 옵션을 적어서 CPU에 맞는 최적화가 가능합니다.
그럼 설정을 진행해 보겠습니다.
nano /mnt/gentoo/etc/portage/make.conf
# 아래와 같이 기입
COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
RUSTFLAGS="${RUSTFLAGS} -C target-cpu=native"
LC_MESSAGES=C.utf8
MAKEOPTS="-j7"
저는 위와 같이 설정 파일을 작성했습니다.
COMMON_FLAGS는 CPU 최적화를 위한 옵션입니다. 같은 Intel (또는 AMD) CPU라고 하더라도, CPU 마다 구조와 사용할 수 있는 명령이 다릅니다. 이 옵션을 통해 직접 CPU 모델을 정하거나 저처럼 적을 경우 알아서 CPU에 맞는 값을 찾아서 사용합니다.
MAKEOPS는 컴파일할 때 병렬로 작업할 수를 정합니다. 예전 가이드에서는 사용하는 CPU(코어) 숫자 -1이 무난하고 일반적이라고 했었습니다. 제 경우는 8 core 이므로... 7을 적었습니다.
자세한 내용은 젠투 핸드북에서 읽어보시기 바랍니다.
링크: https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Stage#Configuring_compile_options
Installing the Gentoo installation files - Gentoo Wiki
Choosing a stage file Tip On supported architectures, it is recommended for users targeting a desktop (graphical) operating system environment to use a stage file with the term desktop within the name. These files include packages such as sys-devel/llvm an
wiki.gentoo.org
자 그럼 이제 Gentoo 기본 시스템을 준비해 봅시다!
5. 구원자 Gentoo 기본 시스템 준비
자 이제부터는 부팅디스크에서 앞에서 얹은 Gentoo를 사용하는 시간입니다.
젠투 핸드북의 6번째 챕터의 내용입니다. (https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Base)
Installing the Gentoo base system - Gentoo Wiki
Chrooting Copy DNS info One thing still remains to be done before entering the new environment and that is copying over the DNS information in /etc/resolv.conf. This needs to be done to ensure that networking still works even after entering the new environ
wiki.gentoo.org
매뉴얼을 읽으면서 차근차근 실행시켜 봅시다!
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
mount --bind /run /mnt/gentoo/run
mount --make-slave /mnt/gentoo/run
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
chroot 명령아래에 export까지 실행되면, 설치 이미지가 아닌 스테이지 파일을 통해 설치한 것을 가지도 동작하게 됩니다.
마지막으로 부트로더를 위한 폴더를 만들어 줍니다.
그다음, portage 저장소를 최신으로 업데이트해 줍시다.
몇 가지 방법은 있지만 처음 설치하는 분들은 emerge-webrsync 가 보통 빠릅니다. 왜냐하면 stage 파일에서 패키지 저장소가 없기 때문에 전부 다 받아야 하는데, 이럴 경우 압축한 파일을 한 번에 던지는 게 젤 빠른 것으로 예상됩니다.
mount /dev/sda1 /boot
emerge-webrsync
다음은 프로파일을 설정합니다. 프로파일을 보기 위한 목록을 요청합니다.
eselect profile list
일단 올바른 프로파일로 세팅되어 있습니다.
잘 보면 여러 옵션이 있는데, 먼저는 기본적인 걸로 선택했습니다.
그다음 드디어 빌드를 하나 해 볼 시간이 왔습니다.
아래와 같이 입력하면 됩니다.
emerge --ask --oneshot app-portage/cpuid2cpuflags
cpuid2cpuflags
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
CPU 플래그 값을 준비하는 과정입니다. y를 누르고 엔터를 누르면 됩니다.
빌드가 완료되었으니 확인해 봅시다.
그다음은 시간과 문자열을 맞춰 줍시다!
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
이제 다음 단계로 전체 빌드로 한번 바이너리를 갈아엎습니다.
명령이 무려 emerge world입니다. (세상으로 모습을 드러내다 뭐 그런 건가요?!)
emerge --ask --verbose --update --deep --changed-use @world
이 명령을 실행하면 stage3로 설치한 바이너리를 모두 새로 빌드해서 대체하는 명령입니다.
일단 수시간 걸릴 수 있으므로 시작하면 쉬면서 젠투 핸드북을 찬찬히 읽어봅니다.
명령 내려놓고 저도 잠시 쉬다가 다음 글에서 뵙겠습니다.
(8개면 할만한 거 아냐?)
사실 이건 그냥 최신 패키지가 있는지 검색해서 업데이트 하는 명령입니다 ㅋㅋㅋ
이건 얼마 안걸려요
마지막으로 아래 명령을 실행 해 줍니다 .
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
이번 글은 여기까지 마무리 하고, 다음 글에서는 커널을 설치할 예정입니다.
감사합니다.
'IT > Linux' 카테고리의 다른 글
Gentoo 리눅스(7): 잠시 문제를 해결해 봅시다! (0) | 2025.04.05 |
---|---|
Gentoo 리눅스(6): 빌드지옥의 강력한 구원자 (2) (0) | 2025.04.05 |
Gentoo 리눅스(4): 설치를 위한 사전 작업(진짜 삽질을 시작해 봅시다!) (2) | 2025.03.29 |
Gentoo 리눅스설치(3): 설치할 기기를 찾았습니다. (2) | 2025.03.29 |
Gentoo 리눅스설치(2): 시작이 반입니다! (2) | 2024.04.25 |