이전 글(아치리눅스 설치 과정 10 - 필수 패키지 설치. 커널 등)에 이어...

 

fstab 파일 생성하기 (부팅시 자동 마운트 구축)

08번 글에서 mount 명령어를 통해 /mnt 파티션에 아치리눅스 설치용 파티션을 마운트했는데요,
이게... 재부팅을 하면 마운트가 풀립니다. 부팅이 안 되겠죠?
fstab 파일을 만들고 파티션을 등록하면 해당 파티션(파일시스템)은 마운트가 영구적으로 유지됩니다.

 

 

genfstab -U /mnt >> /mnt/etc/fstab

위 명령어를 입력하여 일괄 등록합니다.
(-U 옵션은 UUID로 등록하겠다는 뜻입니다. -L 옵션을 쓰면 label로 등록할 수 있는데, 우리는 파티션에 라벨을 지정하지 않았으므로 -U 옵션을 쓰는 겁니다.)

cat /mnt/etc/fstab

위 명령어를 입력하여 fstab 파일을 출력해서 살펴보고, UUID가 정확하게 등록됐는지 확인하기 위해...

 

 

lsblk -f /dev/sda

또는
blkid /dev/sda1 && blkid /dev/sda2 && blkid /dev/sda3

이런 식으로 UUID 확인 명령어를 입력한 다음, 출력되는 UUID와 대조해 봅니다.

nano /mnt/etc/fstab

문제가 있으면 위 명령어처럼 입력하여 에디터로 수정 후 빠져나옵니다.

 

fstab 생성 & 파일시스템(파티션) 등록 및 확인 끝.

 

Chroot (아치리눅스 설치한 시스템으로 Change root)

부트로더 설치를 해야 되겠고, 부트로더 설치 외에도 시스템 관리 작업들을 해야 되는 상황입니다.

https://wiki.archlinux.org/title/Chroot

▲ chroot를 해야 되는 다양한 이유(상황)들은 위 링크에서 읽어보시기 바랍니다.

 

 

arch-chroot /mnt

라고 입력하면 프롬프트가 [root@archiso /]# 로 바뀌어요.

 

타임존(Time Zone) : 시간대 설정

 

ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

이라고 입력하여 로컬타임에 아시아/서울 심볼릭링크를 생성합니다.

 

 

hwclock --systohc

라고 입력하여 /etc/adjtime 파일이 생성되게 합니다.

 

Localization (현지화. 로케일 설정)

 

nano /etc/locale.gen

nano든 vim이든 vi든 선호하는 에디터로 /etc/locale.gen 파일을 엽니다.

 

 

en_US.UTF-8 UTF-8

ko_KR.UTF-8 UTF-8

을 찾아서 주석(#)을 풀고, 저장 후 빠져나옵니다.
(nano 에디터 기준 Ctrl+W 눌러서 찾고, 수정 후 Ctrl+X -> y 눌러 저장종료)

 

▲ 주석이 풀려 있는지 확인.

 

 

locale-gen

이라고 입력하여 로케일을 생성합니다.

 

 

nano /etc/locale.conf

이라고 입력하여 locale.conf 파일을 생성하고,

 

 

LANG=ko_KR.UTF-8

LANG variable(LANG 변수)를 설정합니다. 적어주고, 저장 + 빠져나오세요.

 

locale.conf 에서 사용되는 다른 변수들에 대한 설명이 궁금하면 아래 링크의 글을 참고하세요.

https://wiki.archlinux.org/title/Locale#Setting_the_system_locale

 

사실, 로케일 설정 잘못하면 골치 아픈 일들이 종종 일어납니다.

영어 이외의 언어로 바꿨을 때 터미널 창에서 명령어가 안 먹힌다던가, 한글폰트가 없는 상태에서 한글이 출력되는 바람에 볼 수 없는 상황이 생기는 등등.

 

그럼에도 불구하고 LANG=en_US.UTF-8 로 설정하지 않는 이유는...
세팅을 완벽하게 끝냈을 때 한글 도움말을 볼 수 있어서 관리 효율성에서 이득이 있기 때문이고,
정 어려움이 있으면 1회성으로 locale 내부 변수들을 바꾸고 재부팅 전까지 사용할 수 있는 선택지가 있기 때문입니다.

우분투 리눅스, 터미널창 한글 출력을 영어로 바꾸는 방법 (1회성)

우분투는 /etc/default/locale.conf 아치는 /etc/locale.conf 로 설정파일 위치만 다를 뿐, 다루는 방법은 동일할 것으로 예상하는데, 어쨌든 본인이 영어가 더 익숙하면 LANG=en_US.UTF-8 로 설정해서 쓰십쇼. 강요하지 않습니다.

 

네트워크 환경설정

 

nano /etc/hostname

에디터를 열면서 /etc/hostname 을 만들고,

 

 

Arch-test(호스트이름)

이 컴퓨터를 잘 식별할 수 있게끔 로컬네트워크용 호스트이름을 적어주고 저장+빠져나옵니다.

정한 이름은 유무선공유기같은 로컬 네크워크에서 PC를 식별하는 용도로 사용되는데요,

 

▲ 우분투 리눅스 써봤다면 GUI에서 터미널을 띄웠을 때 "계정명@호스트이름~$" 형식으로 프롬프트가 표시되는 것을 자주 보셨을 테니 익숙할 겁니다.

 

아치리눅스 설치 가이드에 "새로 설치한 환경을 위한 네트워크 환경설정을 완료하세요. 적절한 network management 소프트웨어를 설치해야 될 수도 있습니다."라고 나와 있습니다. => 중요

 

유동IP 기반의 가정용 인터넷 회선, 또는 유무선 공유기로부터 IP 할당을 가변적으로 받는 경우라면

동적 IP 할당(가변적 IP 할당)을 알아차리도록 하는 작업을 해줘야 됩니다. DHCP 클라이언트라는 것을 설치하라는 뜻인데, 아치리눅스에는 다양한 DHCP 클라이언트들이 있습니다.

 

( 출처 : https://wiki.archlinux.org/title/Network_configuration#Network_managers )

 

아치리눅스 설치 과정에서 base 패키지 뭉치를 설치하면 systemd-networkd라는 네트워크매니저가 깔리는데, 이것은 systemd를 통해 부팅시마다 서비스로 DHCP 클라이언트 기능을 시킬 수 있습니다.

 

▼ 실제로 ArchLinux 설치용 USB로 부팅해봐도 systemd-networkd.service 라는 서비스가 백그라운드에서 돌아가고 있음을 확인할 수 있고,

▲ /etc/systemd/network 경로에 유선랜, 무선랜 관련 dhcp 클라이언트 파일들도 있음을 알 수 있습니다.

 

▲ 뿐만 아니라 아치리눅스 설치용 USB로 부팅한 상태에서는 dhcpcd 패키지도 깔려 있습니다. 비록 systemd 서비스는 비활성화되어 있으나, systemd-networkd.service의 백업 역할은 하고 있는 것이죠.

 

하지만...

 

▲ Chroot 상태에서 설정 중인 지금의 PC에는 /etc/systemd/network 경로에 systemd-networkd.service와 관련된 파일들이 없습니다. 심지어 dhcpcd 패키지도 설치되지 않았음. => 이 컴퓨터로 부팅시 99% 확률로 인터넷 안 될겁니다.

 

그래서 지금

https://wiki.archlinux.org/title/Systemd-networkd

를 참고하여 /etc/systemd/network 경로에 파일들을 구성하고 서비스에 등록해두는 과정이 필요한데...

봐도 모르겠고 귀찮죠? 그러면 설치용 USB에서 복붙하면 되는 겁니다.ㅎ

(잠깐 Chroot에서 빠져나와서 작업하고 다시 chroot로 돌아옵니다. 당황하지 마세요.)

 

 

exit

cp /etc/systemd/network/* /mnt/etc/systemd/network

arch-chroot /mnt

순서대로 입력합니다.

위 스샷에서 ls 명령어들은 확인하려고 넣어본 것이니 신경 안쓰셔도 됩니다.

 

arch-systemd-network-preset.zip
0.00MB

▲ 아치리눅스 USB /etc/systemd/network/ 파일들 추출한 것들. 필요하면 쓰세요.
/etc/resolv.conf 포함 (systemd-resolved 용)
/etc/resolv.conf 파일은 직접 복사하지 말 것. 내용만 참고하세요.

 

 

pacman -S dhcpcd

systemd-networkd 백업 차원에서 dhcpcd 패키지 설치합니다.

 

참고 문서 :

https://wiki.archlinux.org/title/Network_configuration

https://wiki.archlinux.org/title/Systemd-networkd

한글 튜토리얼 1 : https://dgkim5360.tistory.com/entry/enable-wireless-network-using-systemd-networkd-on-arch-linux

한글 튜토리얼 2 : https://www.bada-ie.com/su/?4FXWVLHdWcHg

https://wiki.archlinux.org/title/systemd-resolved

한글 튜토리얼 1 : https://stackframe.tistory.com/8

https://wiki.archlinux.org/title/Dhcpcd

 

 

무선랜카드(Wifi) 사용시, iwd 패키지를 설치합니다.

pacman -S iwd

 

 

윈도우든 리눅스든 hosts 파일을 구성해두면 보안에 좋습니다.

위의 Network_configuration 문서에서 5.3 localhost is resolved over the network 항목을 참고해서 적당히 추가해 봅시다.

 

 

nano /etc/hosts

에디터로 /etc/hosts 파일을 열고...

 

 

127.0.0.1        localhost

::1                   localhost

라고 추가하고 저장+빠져나옵니다. 로컬의 hostname 을 확인하는 것을(resolving) 허용하려면

127.0.1.1        Arch-test

처럼 추가합니다. 붉은색 표시한 것은 /etc/hostname 의 것과 일치시킵니다.

https://man.archlinux.org/man/hosts.5

호스트 파일에 대한 자세한 내용은 위 문서를 참고하시고...

 

▲ 참고용으로 우분투 리눅스 22.04 LTS의 /etc/hosts 파일 내용을 첨부합니다.

 

root 비밀번호 설정/변경

지금 사용하고 있는 root 계정의 비밀번호를 설정합니다.

 

 

passwd

라고 입력 후, 새로운 비밀번호를 2번 반복 입력합니다.

 

GRUB 설치 방법

마침내 부트로더(GRUB2)를 설치할 차례입니다!

 

저는 인텔 CPU 사용자인데요,

인텔/AMD CPU 사용자는 microcode 패키지를 먼저 설치해야 합니다.

 

 

pacman -Qs intel-ucode

라고 입력하여 인텔 마이크로코드가 설치되어 있는지 확인합니다. AMD는 amd-ucode겠죠? 저는 조회가 안 되어서

pacman -S intel-ucode

라고 입력하여 설치했습니다.

 

https://wiki.archlinux.org/title/GRUB

위 링크 설명을 참고하여 GRUB 설치를 구성해야 합니다.

(사실, GRUB 말고도 리눅스 부트로더 종류는 많습니다. https://wiki.archlinux.org/title/Arch_boot_process#Boot_loader )

 

 

pacman -S grub efibootmgr os-prober

라고 입력하여 grub 패키지와 efibootmgr 패키지를 설치합니다.

os-prober는 선택사항입니다. 윈도우/우분투 리눅스 등과 듀얼부팅/멀티부팅 환경 구성할 경우 해당 OS를 감지하여 grub 선택지에 추가해주는 기능을 합니다.

 

만약 os-prober를 설치했다면... 에디터로 /usr/bin/grub-mkconfig 파일을 엽니다.

nano /usr/bin/grub-mkconfig

그리고 GRUB_DISABLE_OS_PROBER="true" 부분을 찾아서... (Ctrl+W 누른 뒤 찾으면 됩니다.)

GRUB_DISABLE_OS_PROBER="false"

로 바꾼 다음 저장 + 빠져나옵니다.

 

▲ 실수 방지를 위해 EFI 파티션이 있는지, 마운트포인트 위치(/boot) 확인.

 

 

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Archgrub

08번 글 따르면서 /mnt/boot 경로에 EFI 파티션 마운트 했다면 위 명령어를,

grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=Archgrub

08번 글 따르면서 /mnt/efi 경로에 EFI 파티션 마운트 했다면 위 명령어를

입력하여 grub-install 진행합니다.

/boot 또는 /efi는 본인이 EFI파티션 마운트한 위치이고, Archgrub은 본인이 EFI파티션 살펴볼 때 식별하기 좋은 이름으로 정하세요.

 

※ 참고로 /mnt/efi 파티션에 EFI 파티션 마운트했을 경우, 다른 파티션에 두번째/세번째 아치리눅스를 추가로 설치하기 위해서는 Archgrub을 다른 것으로 바꾸면 됩니다.

 

※ 참고로 /mnt/boot 파티션에 EFI 파티션 마운트했을 경우, No space left on device 에러 뜨면서 진행이 안되는 것은 100MB efi 파티션 문제입니다. 윈도우 리눅스 듀얼부팅 구축하면 겪을 수 있는 증상인데, 아래 글을 참고하여 해결하고 넘어가면 됩니다.

- EFI 파티션 용량 확장(UEFI GPT EFI Partition Expand) GParted

 

▲ /boot 경로를 EFI 디렉토리로 지정했을 경우, EFI 하위에 Archgrub 디렉토리가 생성된 것을 확인할 수 있습니다.

 

▲ /efi 경로를 /EFI 디렉토리로 지정했을 경우, /efi 디렉토리와 /boot 디렉토리의 구성은 각각 이렇습니다.

 

계속 진행하지요.

 

 

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

라고 입력하여, 인텔/AMD CPU microcode가 부트로더 단에서 Early loading 되게끔 설정파일을 생성해 줍니다.

( 참고글 : https://wiki.archlinux.org/title/Microcode#Installation )

 

 

nano /boot/grub/grub.cfg

에디터로 열어서 확인해 볼까요?

CPU microcode가 grub.cfg에 자동 삽입된 덕분에 위 스샷에서처럼 "/블라블라-ucode.img" 이런 식으로 나오는 것을 볼 수 있는데, 처리가 잘 안됐다면 메뉴 엔트리마다 반복적으로 넣어야 되기 때문에 귀찮은 작업이 될 겁니다.

 

GRUB 설치 완료.

 

재부팅

 

exit

라고 입력하여 chroot 상태를 빠져나옵니다.

 

 

umount -R /mnt

라고 입력하여, /mnt 경로에 마운트했던 모든 파티션들을 (하위 파티션들 포함) 일괄 마운트 해제합니다(일괄 언마운트).

 

 

reboot (또는 poweroff 입력 후 USB메모리 뽑고 PC 켜기)
라고 입력하여 재부팅합니다. 마운트된 파티션이 남아있다면 systemd가 자동으로 언마운트할 것입니다.

설치용 USB를 제거하고 부팅한 뒤, 아치리눅스 설치된 PC에서 root 계정으로 로그인하면 됩니다.

 

 

▲ 얼레? GUI가 아니네?

 

만약 윈도우+Arch Linux 듀얼부팅 구축 중인데 재부팅 과정에서 GRUB 선택지에 윈도우가 없다면... 아래 스크린샷 참고하여 grub-update 하는 명령어를 다시 넣어 주세요.

 

LC_ALL=C grub-mkconfig -o /boot/grub/grub.cfg

 

다음글 : 아치리눅스 설치 과정 12 - 재부팅 후 인터넷 연결 안됨? (resolv.conf)

반응형