dd if=/dev/zero of=/dev/MY_DISK bs=4M status=progress && syncMY_DISK 확인하는 방법
(linux) lsblk 명령어로 확인 가능 (sudo 필요)
(mac) diskutil list 명령어로 확인 가능
macOS 환경에서 disk unmount 하는 방법
sudo diskutil umountDisk MY_DISK
굳이 젠투 부팅 디스크가 아닌 ubuntu, linux mint등을 사용해도 무관하지만 필자는 mac 환경에서 ssh를 통해 접근할 예정이므로 젠투 부팅 디스크 사용 예정
macOS와 gentoo의 멀티부팅을 예정하고 있다면 mac환경에서 disk utility 프로그램을 통해 미리 파티션을 나눈 뒤 진행
(gentoo minimal installation 기준으로 설명)
(optional) sshd 실행
/etc/init.d/sshd start 또는 rc-service sshd start 명령어로 ssh 데몬 실행
ssh 에서 사용해야 하므로 passwd root 명령어로 root 유저 password 설정
ip link 또는 iwconfig 명령을 통해 네트워크 인터페이스 이름을 확인 후 iwconfig MY_INTERFACE txpower 10 으로 지정
ip link 출력 예시
1: lo: ~~~~
2: wlp2s0: ~~~~
iwconfig 출력 예시
lo: ~~~~
wlp2s0: ~~~~
ip link set dev wlp2s0 up 명령으로 네트워크 인터페이스의 state up으로 변경
ap 포인트 목록 가져오기
iw wlp2s0 scan | grep -Po '(signal|SSID):\K.*
net-setup wlp2s0 명령으로 네트워크 설정을 해 주면 된다
iw dev wlp2s0 link 명령어로 네트워크 상태 확인 가능
이후 ssh로 연결 해야하므로, ip a 또는 ip addr 명령어로 wlp2s0 인터페이스의 ip 주소 (inet 필드에 있음) 찾아준 다음 ssh root@MY_ADDR 명령어로 진입해 주면 된다

lsblk 명령으로 현재 파티션 확인

멀티부팅할 계획이 없기 때문에 nvme0n1 깔끔하게 제거 하고 시작 (macOS 와 멀티부팅할 계획이 있는 경우, nvme0n1p4 또는 sda4 부분에서 /boot 파티션 제외 하고 작업하면 된다)
디스크 데이터 제거 (주의)
dd if=/dev/zero of=/dev/nvme0n1 bs=4M status=progress && sync
(디스크 정리 이후 lsblk output)

cfdisk /dev/nvme0n1 명령어로 nvme0n1 디스크 파티션 진행

gpt lable 선택한 다음 진입

efi에 1G, swap에 16G (권장 swap 크기 참고) 나머지 linux filesystem

type변경

EFI System, Linux swap, Linux filesystem(default)로 type 지정 해 준 다음 write, 이후 quit
cfdisk 작성 이후 lsblk 출력

파티션 포멧
mkfs.vfat -F32 /dev/nvme0n1p1
mkfs.ext4 -j /dev/nvme0n1p3
swap에 사용할 파티션을 제외하고 포멧을 해 준다음 swap 준비
mkswap /dev/nvme0n1p2
swapon /dev/nvme0n1p2
이후 lsblk로 확인해 보면

swap 처리가 된 것을 확인 가능하다
파티션 마운트
마운트될 폴더 만들기
mkdir --parents /mnt/gentoo/
/mnt/gentoo 에 메인 파티션 (/dev/nvme0n1p3) mount
mount /dev/nvme0n1p3 /mnt/gentoo
메인 파티션이 있는 폴더로 이동 후 gentoo downloads 에 있는 stage 받기
다운 받기 전 시간 설정
date 명령어로 시간 확인 가능
여기서는 ntp를 사용해서 자동으로 시간을 맞출것
chronyd -q 명령으로 ntp 설정 가능
다운 받을 폴더 (/mnt/gentoo/)로 이동
cd /mnt/gentoo
젠투 downloads 에서 stage tar 링크 복사 후 wget

stage 3 openrc 설치 예시
wget https://distfiles.gentoo.org/releases/amd64/autobuilds/20240229T194908Z/stage3-amd64-openrc-20240229T194908Z.tar.xz

다운로드가 완료되었으면
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner 명령으로 압축 해제
compile option 설정하기
vim 이 없어서 vi로 작성
vi /mnt/gentoo/etc/portage/make.conf 진입

MAKEOPTS="-j4" (ram % 2 한 수치를 넣어주면 된다)
dns info 복사
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
arch-chroot /mnt/gentoo /bin/bash
! arch-chroot가 없는 경우
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
! gentoo-installation media 외에 다른 live boot 사용하는 경우
test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
chmod 1777 /dev/shm /run/shm
이후에 chroot /mnt/gentoo /bin/bash 로 접근하면 된다
# profile 가져오기
source /etc/profile
# 표기에 (chroot) 추가
export PS1="(chroot) ${PS1}"
chroot 환경 진입 이후 boot 파티션 mount
mount /dev/nvme0n1p1 /boot
모종의 이유로 /boot dir가 없으면 mkdir /boot 으로 만들어 넣으면 된다
mount 이후 lsblk 출력

mkdir --parents /etc/portage/repos.conf
cp /usr/share/portage/config/repos.conf /etc/portage/repos.conf/gentoo.conf
cat /etc/portage/repos.conf/gentoo.conf 으로 설정 확인 가능

emerge-webrsync
/etc/portage/make.conf 에 직접 추가해도 되지만, app-portage/mirrorselect 이용하는게 편리함
# mirrorselect 설치
emerge --ask --oneshot app-portage/mirrorselect
# mirrorselect 실행
mirrorselect -i -o >> /etc/portage/make.conf
### space bar 로 선택 가능 ###
emerge --ask vim
eselect profile list
(2024 3월 기준 profile list 출력, 다를 수 있음)

hyprland 또는 sway desktop env 를 꾸릴 예정이므로, 필자는 /default/linux/amd64/17.1/desktop (5번) 선택
eselect profile set 5 (원하는 프로파일 넣어주면 된다)
32비트 라이브러리, 프로그램이 아예없는 pure한 64비트 환경을 이용하고 싶으면 no-multilib이 붙어있는 프로파일을, openrc가 아닌 systemd를 사용하고 싶으면 systemd가 붙어 있는 프로파일을 고르면 된다
CPU flag또한 직접 수정해도 되지만, cpuid2cpuflags 라는 패키지가 있기 때문에 emerge 해 준다음 사용 할 예정
# cpuid2cpuflags 패키지 emerge
emerge --ask --oneshot app-portage/cpuid2cpuflags
# cpu flag 설정
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
VIDEO_CARDS 수정
vim /etc/portage/make.conf

VIDEO_CARD="" 에 넣어주면 된다
! VGA 카드 모르는 경우 확인 방법
# lspci 설치
emerge --ask sys-apps/pciutils
# lspci 로 하드웨어 정보(VGA) 확인
lspci | grep VGA
! lspci 에서 NVIDIA GPU 보이지 않는 경우
# lshw emerge
emerge --ask sys-apps/lshw
### !!! emerge에 시간이 오래걸리므로, gentoo system 설치 완료 후 작업하는 것을 추천함 !!! ###
ACCEPT_LICENSE 수정
@GPL-COMPATIBLE
@FSF-APPROVED
@OSI-APPROVED
@MISC-FREE
@FREE-SOFTWARE
@FSF-APPROVED-OTHER
@MISC-FREE-DOCS
@FREE-DOCUMENTS.
@FREE
@BINARY-REDISTRIBUTABLE
@EULA
등 가능한 옵션이 존재, 필자는 전체 다 가능하게하는 "*" 옵션을 주겠음
vim /etc/portage/make.conf 에
ACCEPT_LICENSE="*" 추가
portageq envvar ACCEPT_LICENSE 로 설정값 확인 가능
emerge --quiet --ask --verbose --update --deep --newuse @world
locale-gen 수정
vim /etc/locale.gen

사용할 언어의 코멘트(#) 풀어준 후 locale-gen 명령어 실행
eselect 로 locale 선택
eselect locale list

리스트를 확인한 후 사용할 언어를 eselect locale set NUMBER 명령어로 선택
필자는 en_US.utf8 을 사용할 예정이므로, eselect locale set 4으로 선택했음
env update 하기
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
emerge --ask sys-kernel/gentoo-sources 로 kernel source 를 emerge
emerge가 완료되면,
# 커널 리스트 확인
eselect kernel list
# 커널 선택 (심볼릭 링크 생성)
eselect kernel set NUMBER
# 심볼릭 링크가 생성되었는지 확인
ls -l /usr/src/linux
! 수동으로 설정할 경우
cd /usr/src/linux 명령어로 폴더로 이동 후
# kernel config
make menuconfig
# kernel config 완료 후
make clean
make
# make 완료 후 module_install
make modules_install
# /boot 에 이미지 복사
make install
genkernel 사용
# genkernel emerge
emerge --ask sys-kernel/genkernel
# genkernel 실행
genkernel --mountboot --install all
# 체크
ls /boot/vmlinu* /boot/initramfs*
ls /lib/modules
package.use 수정
vim /etc/portage/package.use/installkernel
# openrc, systemd-boot
sys-apps/systemd-utils boot kernel-install
sys-kernel/installkernel systemd systemd-boot
# systemd, systemd-boot
sys-apps/systemd boot
sys-kernel/installkernel systemd-boot
# grub
sys-kernel/installkernel grub
emerge --ask --oneshot sys-fs/genfstab
emerge 가 완료된 후
genfstab -U / >> /etc/fstab
echo HOST_NAME > /etc/hostname
# systemd
hostnamectl hostname HOST_NAME
vim /etc/hosts localhost aliases 수정

passwd 명령어로 password 추가
emerge --ask app-admin/sudo
emerge가 완료되면
# user 추가
useradd -m -g users -G wheel -s /bin/bash SOMEUSERNAME
# user password 추가
passwd SOMEUSERNAME
EDITOR=vim visudo 명령어로 visudo 수정
user privileage specification 부분을 찾아서 wheel group 접근 수정해줌
##
## User privilege specification
##
root ALL=(ALL:ALL) ALL
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL:ALL) NOPASSWD: ALL
## Uncomment to allow members of group sudo to execute any command
# %sudo ALL=(ALL:ALL) ALL
! openRC 사용시
/etc/rc.conf 파일에서 수정 가능
vim /etc/conf.d/keymaps 으로 keymap 수정
vim /etc/conf.d/hwclock 으로 하드웨어 clock 설정 가능
! systemd 사용시
systemd-machine-id-setup
systemd-firstboot --prompt
systemctl preset-all --preset-mode=enable-only
# 또는
systemctl preset-all
필자는 system logger, ntp 도구, network 도구정도만 설치한 후 진행하겠음 추가로 필요한 도구는 젠투 핸드북, 젠투 패키지 목록 참고 해서 필요한거 추가하면 된다 (emerge --ask PACKAGE_NAME 으로 설치 가능)
# 패키지 설치
emrge --ask app-admin/sysklogd net-misc/chrony net-misc/networkmanager net-wireless/wireless-tools
# sysklogd (system logger) 설정 (systemd 의 경우 기본 내장이므로, 설치할 필요 없음)
rc-update add sysklogd default
# chrony (ntp) 설정
# OpenRC
rc-update add chronyd default
# systemd
systemctl enable chronyd.service
# network manager
# OpenRC
rc-service NetworkManager start
rc-update add NetworkManager default
# systemd
systemctl start NetworkManager
systemctl enable NetworkManager
(grub 기준으로 설명)
패키지 설치
emerge --ask sys-boot/efibootmgr
uefi 설치 가능 여부 확인
ls /sys/firmware/efi
결과에 efivars가 존재하면 uefi로 설치 가능
uefi 설치가 가능한 경우 make.conf 수정 (GRUB_PLATFORMS="efi-64" 추가)
echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
또는 vim /etc/portage/make.conf로 파일을 열어 직접 GRUB_PLATFORMS="efi-64" 추가
이후 grub 설치
make.conf 수정한 경우 :emerge --ask --update --newuse sys-boot/grub
mack.conf 수정하지 않은 경우: emerge --ask sys-boot/grub
grub install
lsblk로 boot에 사용할 파티션이 어디에 mount되어 있는지 확인
lsblk 명령어로 확인 가능
UEFI
grub-install --efi-directory=/boot --bootloader-id=MY_OS_NAME --efi-directory 옵션에 lsblk로 찾은 boot 파티션 마운트 포인트 넣어주면 된다
DOS / legacy
grub-install /dev/sda --bootloader-id=MY_OS_NAME boot 파티션 이름을 넣어주면 된다
grub config 수정
vim /etc/default/grub 으로 파일을 열어서 수정 가능
grub.cfg 생성
grub-mkconfig -o /boot/grub/grub.cfg
chroot exit
exit
umount
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
umount 확인
lsblk
reboot
reboot