본문 바로가기
배포판

Gentoo Linux

by 다움위키 2023. 12. 12.

Gentoo Linux (/ˈɛnt/ JEN-too로 발음함)는 Portage 패키지 관리 시스템을 사용하여 구축된 리눅스 배포판입니다. 바이너리 소프트웨어 배포판과 달리, 소스 코드는 사용자의 환경 설정에 따라 로컬로 컴파일되고 종종 특정 유형의 컴퓨터에 최적화됩니다. 미리 컴파일된 바이너리는 일부 더 큰 패키지 또는 사용 가능한 소스 코드가 없는 패키지에 사용할 수 있습니다.

젠투 리눅스는 빠르게 헤엄치는 젠투 펭귄의 이름을 따서 지어졌습니다. 그 이름은 젠투의 주요 기능인 기계별 최적화의 잠재적인 속도 향상을 반영하기 위해 선택되었습니다. 젠투 패키지 관리는 모듈식, 이식-가능한, 유지 관리에 쉽고, 유연하도록 설계되었습니다. 젠투는 적응성 때문에 스스로를 메타 배포판이라고 설명하며, 대부분의 사용자는 시스템과 그들이 사용하는 응용 프로그램에 고유한 설정과 설치된 프로그램의 집합을 가지고 있습니다.

현재 제공되고 있는 젠투 리눅스의 스테이지 3을 사용한 기본 시스템 빌드는 Linux From Scratch의 과정을 대체하는 훌륭한 도구입니다. 이것은 LFS를 사용할 목적이 있을 때, 상황에 따라 젠투 리눅스를 고려해 볼 수 있다는 것을 의미하고, 다른 한편으로 젠투가 필요하지 않을 상황에는 LFS 역시 필요하지 않을 것임을 의미할 수 있습니다.

Installation

QEMU/KVM

  • 메모리 4G

설치 이미지 구하기

install-amd64-minimal 이미지를 다운로드합니다.

  노트북처럼 화면 크기가 작은 컴퓨터에서 기본 커널 옵션으로 부팅하면 fb화면이 너무 커서 화면을 넘치는 경우가 있습니다. 이때에는 grub 명령줄에서 gentoo-nofb로 커널로 부팅하는 것이 좋습니다.

설치 시작

부팅 후에, boot: 프롬프트에서 입력 없이 ↵ Enter를 누르고, Keymap에서도 기본값으로 진행합니다.

부팅이 완료되면 네트워킹이 동작하는지 확인을 하십시오. 설치 중에 다운로드를 해야 하므로 네트워크 없이 설치가 불가능한 이미지입니다.

네트워크 연결

  • ping -c 3 www.google.com

메시지가 출력되지 않으면, 자신의 네트워크 연결장치를 알아내어서 수동으로 연결해 주어야 합니다.

  • ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
  • dhcpcd enp1s0 (or net-setup enp1s0)
  • ping -c 3 www.google.com

파티션 UEFI를 사용할 때 3개의 파티션, EFI, swap, / 으로 나누고, BIOS를 사용할 때 2개의 파티션, /boot, swap, /로 나눕니다. 여기서는 BIOS를 사용합니다.

  • fdisk /dev/vda
n
p
1
Enter
+256M
n
p
2
Enter
+1G
t
2
82
n
p
3
Enter
Enter
p
wq

나누어진 파티션을 자기 역할을 할 수 있도록 파일 시스템을 만들고 마운트를 합니다.

  • mkfs.ext4 /dev/vda1
  • mkfs.ext4 /dev/vda3
  • mkswap /dev/vda2
  • swapon /dev/vda2
  • mount /dev/vda3 /mnt/gentoo

Installing a stage tarball

  AMD64 stage3 타르볼 정보를 먼저 확인하십시오!!

몇 가지 종류가 있지만, 데스크탑을 사용할 것이기 때문에, desktop-systemd를 받습니다: 아래 내용도 systemd에 맞는 내용으로 이루어져 있으므로, sysvinit를 사용하실 분들은 원본 매뉴얼을 참조하십시오.

이어서 아래와 같이 풀어줍니다.

  • tar xpvf stage3-*.tar.bz2 --xattrs-include='*.*' --numeric-owner
  • nano -w /mnt/gentoo/etc/portage/make.conf
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"

MAKEOPTS는 1개당 2GiB의 램이 소모되므로 자신의 램에 따라 설정할 수 있습니다. 가능한 많이 설정해야 컴파일 시간을 줄일 수 있습니다.

젠투 베이스 시스템 설치

  국내 미러는 Korea로 나오지 않고 아래쪽에 South Korea로 나옵니다.
  • mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

젠투 이빌드 저장소

  • mkdir --parents /mnt/gentoo/etc/portage/repos.conf
  • cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

DNS 정보 복사

  • 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

새로운 환경을 진입

  • chroot /mnt/gentoo /bin/bash
  • source /etc/profile
  • export PS1="(chroot) ${PS1}"

부팅 파티션 마운트

  • mount /dev/vda1 /boot

포티지 설정

웹에서 이빌드 저장소 스냅샷 가져와서 설치하기

  • emerge-webrsync

적절한 프로파일 선택 stable, exp가 있으며, 주로 stable를 사용하는 것이 좋겠고, 나머지는 자신의 선택에 따라 결정하십시오. 여기서는 gnome, systemd를 사용합니다:

  • eselect profile list
  • eselect profile set 7
  • eselect profile list

7번으로 변경되었는지 확인하십시오 @world 세트 업데이트

  • emerge --ask --verbose --update --deep --newuse @world

USE 변수 설정

  • emerge --info | grep ^USE
  • nano -w /etc/portage/make.conf

USE="X amd64 gnome gtk"

Systemd를 초기화 시스템으로 사용

시간대 설정

  • ls /usr/share/zoneinfo
  • ln -sf ../usr/share/zoneinfo/Asia/Seoul /etc/localtime

로케일 설정

  • nano -w /etc/locale.gen
en_US.UTF-8 UTF-8
ko_KR.UTF-8 UTF-8
  • locale-gen
  • eselect locale list
  • eselect locale set 4

en_US.utf-8으로 설정해 줍니다.

  • nano -w /etc/env.d/02locale
LANG="en_US.utf8"
LC_COLLATE="C"
  • env-update && source /etc/profile && export PS1="(chroot) ${PS1}"

리눅스 커널 설정

펌웨어 설치

  • emerge --ask sys-kernel/linux-firmware

커널 옵션을 일일이 확인하는 것이 상당히 귀찮을 수 있습니다. 핸드북에서 제공하는 기본 설정을 사용하시고 자신의 디바이스에 맞게 수정할 필요가 있습니다. 이 과정이 쉽지 않기 때문에, 젠투의 기본 설정을 그대로 사용할 수 있습니다:

  • emerge --ask sys-kernel/gentoo-sources
  • emerge --ask sys-apps/pciutils
  • echo "sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE" | tee -a /etc/portage/package.license
  • emerge --ask sys-kernel/genkernel
  • nano -w /etc/fstab
/dev/vda3	/		    ext4		defaults,noatime		0 1
/dev/vda1   /boot       ext4        defaults,noatime        0 2
/dev/vda2	none		swap		sw		                0 0
  • eselect kernel list
  • eselect kernel set 1
  • genkernel all

시스템 설정

호스트이름

  • nano -w /etc/conf.d/hostname

hostname="gentoo" 네트워크 설정

  • nano -w /etc/conf.d/net

config_enp1s0="dhcp" dns_domain_lo="homenetwork" nis_domain_lo="localdomain" DHCP

  • emerge --ask net-misc/dhcpcd
  • systemctl enable --now dhcpcd

hosts 파일

  • nano -w /etc/hosts

127.0.0.1 gentoo

시스템 정보

루트 암호

  • passwd

init와 부팅 설정

  • systemd-firstboot --prompt --setup-machine-id
  • systemctl preset-all

시스템 도구 설치

시스템 로거

  • emerge --ask app-admin/syslog-ng
  • systemctl enable syslog-ng@default

크론 데몬(선택)

  • emerge --ask sys-process/cronie
  • systemctl enable cronie

부트로더 설정

Grub2 설치

  • emerge --ask --verbose sys-boot/grub:2

설치

  • grub-install /dev/vda

설정

  • grub-mkconfig -o /boot/grub/grub.cfg
  • cat /boot/grub/grub.cfg

커널 정보 등이 제대로 설정되었는지 확인하십시오.

부팅이 되지 않습니다. 루트 디바이스를 올리지 못하는데, 젠투 커널 옵션을 확인해서 커널 컴파일을 다시 해야 할 것으로 보입니다.

젠투 커널 커널 컴파일은 시간 소모적이기 때문에, 젠투에서 제공하는 바이너리 커널을 이용할 수 있습니다. 젠투 설치 이미지로 부팅하고, chroot로 접근합니다.

  • emerge --ask sys-kernel/gentoo-kernel-bin
  • emerge --depclean
  • emerge --ask @module-rebuild
  • emerge --config sys-kernel/gentoo-kernel-bin
  • grub-mkconfig -o /boot/grub/grub.cfg
  • exit
  • reboot

시스템 다시 부팅

  • exit
  • cd
  • umount -l /mnt/gentoo/dev{/shm,/pts,}
  • umount /mnt/gentoo{/boot,/sys,/proc,}
  • reboot

마무리

사용자 추가 root로 로그인하십시오:

  • useradd -m -G users,wheel,audio -s /bin/bash ID_name
  • passwd ID_name

디스크 정리 타르볼 제거

  • rm /stage3-*.tar*

After Installing

  • emerge -q app-admin/sudo

네트워크 설정

  • ip addr
  • systemctl enable dhcpcd
  • systemctl start dhcpcd

X 윈도우 설치

  • emerge --ask x11-base/xorg-server

Enlightenment 설치

  • USE="-pulseaudio" emerge --ask media-sound/mpg123
  • USE="minimal" emerge --ask media-libs/libsndfile
  • nano /etc/portage/package.use/efl

dev-libs/efl drm glib ibus xim

  • emerge dev-libs/efl
  • emerge --ask enlightenment

입력기 설치

  • emerge ibus-hangul

터미널 설치

  • emerge --ask terminology

enlightenment 실행합니다.

  • nano ~/.xinitrc
eval "$(dbus-launch --sh-syntax --exit-with-session)"
export XMODIFIERS="@im=ibus"
export QT_IM_MODULE=ibus
export GTK_IM_MODULE=ibus
exec enlightenment_start
  • startx

글꼴 설치

  • emerge --ask media-fonts/terminus-font
  • emerge --ask media-fonts/ttf-bitstream-vera
  • emerge --ask media-fonts/nanumfont
  • emerge --ask media-fonts/ubuntu-font-family
  • emerge --ask media-fonts/noto-cjk

설치 후에 Settings->Settings Panel->Language->Input Method Settings를 열어서 ibus를 선택하고, Setup Selected Input Method를 누릅니다. Input Method -> Add를 눌러서 Korean으로 검색한 후에, Korean을 눌러서 Hanugl을 선택하고 Add를 누릅니다.

Enlightenment Acpid 오류

  • sudo emerge --ask acpid
  • sudo systemctl enable acpid

정리

  • emerge --ask app-portage/gentoolkit
  • emerge --update --deep --newuse @world
  • emerge --depclean
  • revdep-rebuild

그 후

  • emerge layman -pv
  • emerge layman
  • emerge --ask firefox
  • etc-update

-5

  • emerge --ask firefox
  • emerge --ask gvim

ebuild 만지기

  • ebuild /usr/portage/sys-apps/util-linux-2.25.2-r2.ebuild fetch
  • ebuild /usr/portage/sys-apps/util-linux-2.25.2-r2.ebuild unpack
  • ebuild /usr/portage/sys-apps/util-linux-2.25.2-r2.ebuild compile
  • ebuild /usr/portage/sys-apps/util-linux-2.25.2-r2.ebuild install
  • ebuild /usr/portage/sys-apps/util-linux-2.25.2-r2.ebuild qmerge
시간이 많이 걸리는 패키지를 컴파일할 때 오류가 발생하면, 오류를 수정한 후에 세번째 compile부터 qmerge까지 수동으로 진행해서 패키지를 컴파일할 수 있습니다.

External links

Official documentation Unofficial documentation and other resources Articles and media coverage