환영합니다, Rolling Ress의 카루입니다.
이전에 써둔 아치리눅스 설치 포스트가 너무 오래되어서, 다시 써보려고 합니다. 확실히 롤링 릴리즈 배포판이라 그런지 설치 방법도 계속 변하네요. 여튼, 시작하겠습니다.
※ 2024. 09. 29 업데이트: 새롭게 수정한 부분이 있어 글을 업데이트합니다.
목차
- 라이브 부팅 및 설치 준비
- 파티션 분할 및 마운트
- 베이스 시스템 설치 및 설정
- 부트로더 설치
- AUR 헬퍼 설치
만약 새로 Windows와 Arch Linux를 같이 설치하신다면, EFI 파티션은 적어도 512 MiB, 넉넉하게 1 GiB정도는 잡아두시기 바랍니다. 아치리눅스는 커널을 모두 EFI 파티션에 담아두기에, EFI 파티션이 작으면 큰 불상사가 일어날 수 있습니다.
아래 링크에서 아치리눅스를 다운받으시기 바랍니다. Rolling Release 배포판이므로 항상 최신 버전이 게시되어 있습니다. 이 글을 작성하는 시점에서는 *2024.09.01 버전이 최신이군요.
다운받은 후 rufus를 이용하여 USB에 담아주시면 됩니다. Secure Boot를 해제하고 USB로 부팅해주세요.
라이브 부팅 및 설치 준비
첫 화면에서 Arch Linux Installation Media ~ 가 써있는 첫 번째 항목을 선택하시면 됩니다. 라이브 미디어인만큼, 시간이 좀 걸립니다. 램디스크를 만들고 부팅하는 작업이 필요하기 때문입니다.
성공적으로 부팅이 되었다면 Zsh이 맞이해줍니다. 맞습니다. GUI 따위는 없습니다. 모든 걸 CLI에서 해야 합니다. *최근 들어 archinstall 이라는 인스톨러가 기본적으로 내장되어 더 이상 삽질을 하지 않아도 됩니다. 다만 일반적인 아치리눅스의 설치와는 다른 방식으로 진행되며 기본 설정값 또한 차이가 있습니다. 본 가이드를 통해 아치리눅스를 설치할 수 있다면 굳이 인스톨러를 이용하는 건 추천드리지 않습니다.
부팅 모드 확인
cat /sys/firmware/efi/fw_platform_size
위 명령어를 입력해주세요. 64가 뜬다면, 성공적으로 UEFI 64bit 부팅이 된 겁니다. 에러가 뜬다면 UEFI 모드로 부팅이 안 된 겁니다.
인터넷 연결
다음으로 와이파이에 연결해야 합니다. 유선 인터넷이 연결되어 있다면 이 절차(iwd)를 생략하셔도 됩니다. 무선 인터넷을 사용하는 경우, iwctl을 이용해 직접 인터넷에 연결해주어야 합니다.
iwctl
이제 Zsh이 아니라 iwctl 쉘이 뜨게 됩니다.
device list
무선 랜카드를 출력하는 명령어입니다. 저는 wlan0이 잡혔습니다.
station wlan0 scan
station wlan0 get-networks
본인의 무선 랜카드가 wlan0이 아니라 다른 것으로 잡힌 경우, 해당 이름으로 바꿔주세요. 이 두 줄을 입력하면 네트워크를 스캔하고, 사용 가능한 네트워크 SSID를 출력해줍니다.
station wlan0 connect SSID
wlan0은 자신의 무선 어댑터 이름으로, SSID는 연결하고자 하는 네트워크의 이름으로 바꾸어주세요. 비밀번호가 걸려있는 경우 이 명령어 입력 후 Passphrase를 입력하는 칸이 나옵니다.
exit
iwd 쉘을 나갑니다.
ping -c 3 archlinux.org
인터넷 연결을 확인합니다. 연결이 제대로 되지 않은 경우 다시 iwd 쉘을 실행해서 확인해보세요.
시간 설정
timedatectl
timedatectl을 통해 시간이 정확한지 확인해주세요.
timedatectl set-local-rtc 1
그냥 이 상태로 설치를 진행하면 나중에 Windows에서 시간이 안 맞는 경우가 생깁니다. 위 명령어를 입력해주세요. Real Time Clock을 활성화하는 코드입니다.
파티션 분할 및 마운트
EFI 환경에서 윈도우는 최소 4개의 파티션, 아치리눅스는 최소 3개의 파티션을 사용합니다. 이때 두 운영체제에서 EFI 파티션은 공용으로 사용할 수 있습니다. 즉, 다음과 같은 파티션으로 구성됩니다.
- 윈도우 파티션: EFI(시스템), MSR, 주 파티션, 복구 파티션
- 리눅스 파티션: EFI(/boot), /(루트), swap
- EFI(윈도우, 리눅스 공용) / MSR(윈도우) / 윈도우 / 복구(윈도우) / 루트(리눅스) / 스왑(리눅스)
fdisk -l # 파티션 타입 확인
lsblk -f # 파티션 레이블 확인
두 명령어 중 아무거나 쓰셔도 됩니다. 장착된 스토리지를 확인합니다. SATA 장치를 쓰고 있다면 /dev/sdX (sda, sdb, ...)와 같이 뜨고, NVMe SSD를 쓰고 있다면 /dev/nvme0n1 등으로 뜹니다. 저는 /dev/nvme0n1 장치를 사용하겠습니다.
sfdisk /dev/nvme0n1 > nvme0n1.dump
혹시 모를 상황을 대비해 파티션 테이블을 백업합니다.
이후부터는 각자 상황에 따라 다르게 진행해야 합니다. 아예 초기화하고 아치리눅스만 설치한다면 조금 더 쉽긴 합니다. gdisk /dev/nvme0n1 입력 > o 입력 > y 입력 후 파티션 설정해주면 되는데
(종료시에는 p > w > y), 여기선 윈도우와 부팅할 것이므로 파티션 테이블을 건드리지 않는 선에서 작업해야 합니다. 할당되지 않은 공간이 있다면 새로 할당해주세요. 이때, 파티션에 해당하는 코드를 지정해주어야 합니다.
<예시>
n # 파티션 새로 만들기
(엔터) # 파티션 번호를 할당하는 과정입니다
(엔터) # 첫 섹터는 자동으로 맡기세요
+512M # 512MB 할당
ef00 # EFI system partition 할당
n
(엔터)
(엔터)
+8G
8200 # Linux Swap 할당
n
(엔터)
(엔터)
(엔터) # 남는 용량 전부
(엔터) # 자동으로 알맞는 파일 시스템이 선택됨
p # 파티션 구성 확인
w # 디스크에 작성
(경고 메세지가 나오면 y 입력 후 엔터)
- EFI 파티션: 코드 EF00 (EFI system partition)
- SWAP 파티션: 코드 8200 (Linux Swap)
- 나머지(/ 파티션 등): 기본값
mkfs.fat -F 32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p6 # 또는 mkfs.btrfs /dev/nvme0n1p6
mkswap /dev/nvme0n1p5
파티션 작업이 완료되면 포맷을 해주세요. ext4가 가장 무난하나, 고급 사용자의 경우 BtrFS를 추천드립니다. 파티션 번호와 파일시스템을 잘 확인해주세요. 파일시스템에 따라 안정성이나 성능 등에서 차이를 보일 수 있으므로 자신의 상황을 잘 고려하여 파일시스템을 선택하기 바랍니다.
e2label /dev/nvme0n1p6 "Arch Linux" # ext4
btrfs filesystem label /dev/nvme0n1p6 "Arch Linux" # BtrFS
xfs_admin -L "Arch Linux" /dev/nvme0n1p6 # XFS
fatlabel /dev/nvme0n1p1 "EFI" # fat
ntfslabel <device> <label> # NTFS
swaplabel -L "Linux Swap" /dev/nvme0n1p5 # SWAP
파티션 레이블을 지정합니다. 파일시스템에 따라 명령어가 다르니 잘 확인하세요. 필수적인 부분은 아닙니다.
swapon !$ # !$: 위의 마지막 매개변수를 그대로 사용
Swap을 작동시킵니다.
mount /dev/nvme0n1p6 /mnt
mount --mkdir /dev/nvme0n1p1 /mnt/boot
mount --mkdir /dev/nvme0n1pX /mnt/home # 다른 파티션도 마운트하는 경우
/ 파티션을 /mnt 폴더에 마운트해주세요. 이후 efi 파티션을 마운트합니다. mount에 --mkdir 옵션을 주면 자동으로 디렉터리를 생성하여 마운트해줍니다. /home, /usr/local, /tmp 등 별도의 파티션을 생성한 경우 여기서 모두 마운트합니다.
lsblk -f
lsblk를 이용하여 원하는 곳에 잘 마운트 되었는지 확인합니다.
베이스 시스템 설치 및 설정
본격적으로 아치리눅스를 설치하겠습니다. 그 전에 빠른 다운로드를 위해 reflector를 설치하겠습니다. Syu가 아닌 Syy이므로 잘 보고 입력하시기 바랍니다. (Syy: 강제 갱신) 그리고 미러리스트를 업데이트합니다.
pacman -Syy reflector
cp /etc/pacman.d/mirrorlist{,.bak}
reflector -c "KR" -f 7 -l 5 -n 7 --save /etc/pacman.d/mirrorlist
c는 country, f는 fastest, l은 latest, n은 number의 축약형 옵션입니다.
기본 패키지 설치
pacstrap -K /mnt base linux linux-firmware # 반드시 설치해야 하는 패키지입니다.
pacstrap /mnt vim nano networkmanager man-{db,pages} git ntfs-3g # 중요한 패키지입니다.
pacstrap /mnt base-devel # AUR을 사용하는 경우 설치해야 할 수 있습니다.
-K 플래그는 pacman의 키링을 새로 설정하는 플래그입니다. base 패키지는 커널이나 펌웨어 등 기초적인 것들을 모아둔 패키지입니다. 여기에 추가로 텍스트 에디터(nano), man 페이지, 네트워크 매니저 등을 추가로 설치해주겠습니다. 또한 아치리눅스의 경우 AUR을 사실상 필수로 사용하게 되므로, base-devel 패키지도 설치하도록 하겠습니다. 각자 상황에 맞게 조정하기 바랍니다.
fstab 설정
genfstab -U /mnt >> /mnt/etc/fstab
nano !$
fstab을 설정합니다. 부팅시 fstab 설정에 따라 파티션을 자동으로 마운트합니다. 이 파일이 잘못되는 경우 제대로 부팅이 되지 않습니다. -U 대신 -L을 이용해 UUID가 아닌 Label을 이용해 fstab을 생성할 수도 있으나, 저는 충돌할 일이 없는 UUID를 선호합니다.
fstab이 열렸으면, /boot 파티션의 umask와 dmask가 0022로 되어 있을 텐데 이걸 0077로 바꾸어주세요. 이렇게 하지 않으면 systemd-boot 부트로더를 설치할 때 경고가 발생합니다. 원래는 여기서 추가로 discard 옵션을 넣었으나, 최근 들어 자동으로 TRIM 옵션을 넣어주는 것을 확인했습니다. Windows와 Arch Linux가 공유할 파티션을 사용하는 경우, 이 파티션을 임의의 폴더에 마운트한 뒤 Download, Document, Pictures 등의 폴더를 bind하여 마운트할 수도 있습니다. 이때 ntfs-3g로 마운트한 파티션에는 windows_names 옵션을 넣어주어야 나중에 Windows에서 문제가 발생하지 않습니다.
UUID=xxxxxx /home/shared ntfs-3g defaults,windows_names,discard,uid=1000,gid=984,umask=022 0 0
/home/shared/Downloads /home/karu/Downloads none defaults,uid=1000,gid=984,umask=022,bind 0 0
시스템 진입
arch-chroot /mnt
모든 설정이 끝났으면 새로 설치한 아치리눅스 시스템으로 진입합니다. Zsh에서 Bash로 쉘이 바뀝니다. 이제 여기는 우리가 실제로 사용할 아치리눅스가 설치된 공간입니다. 여길 망가뜨리면 컴퓨터가 멀쩡할 리가 없으니 조심해서 다뤄주세요.
시간대 및 로케일 설정
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
hwclock --systohc
시간대와 UTC를 설정합니다. 한국이 아닌 다른 지역에서 거주하는 경우 적당히 zoneinfo를 바꾸어주세요.
nano /etc/locale.gen
locale.gen 파일을 수정합니다. Ctrl+W 키를 누른 뒤 ko_KR을 입력한 뒤 엔터를 눌러주세요. 그 후 ko_KR.UTF-8 앞의 주석을 지워주시면 됩니다. Ctrl+X, Y, (엔터)를 순서대로 눌러주시면 저장됩니다. 저는 ko_KR.UTF-8, en_US.UTF-8 두 가지를 사용중입니다.
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
설정한 로케일을 생성 후 기본 로케일을 설정합니다. 저는 en_US를 사용하겠습니다. ko_KR로 사용하면 tty 콘솔 모드에서 글자가 와장창 깨지더라고요.
호스트 네임 설정
echo ArchLinux > /etc/hostname
호스트 이름을 설정합니다. 여러분이 사용하는 컴퓨터의 이름이 됩니다.
계정 설정
passwd
루트 계정의 패스워드를 설정합니다. 두 번 입력하시면 됩니다. 패스워드는 보이지 않습니다.
pacman -S zsh # zsh 사용자
useradd -m -G wheel -s /bin/zsh karu # /bin/bash도 좋습니다
passwd karu
-m : 홈 디렉터리를 생성합니다. 제 경우 /home/karu가 됩니다.
-G : 그룹을 설정합니다. wheel은 sudo를 사용할 수 있습니다. (추가 설정 필요)
-s : 기본 쉘을 설정합니다. bash를 사용하신다면 /bin/zsh 대신 /bin/bash를 사용하시면 됩니다.
그리고 새로 생성한 계정의 패스워드를 설정합니다.
일부 설치 가이드의 경우 wheel 외에 audio,video 등 다른 그룹에도 사용자를 넣으라고 하는데, 그렇게 하면 안 됩니다. 나중에 충돌이 일어나 시스템이 망가질 위험이 있습니다.
EDITOR=nano visudo
참고로 그냥 저렇게 끝내면 나중에 사용자 계정에서 sudo를 사용할 때 sudoers 파일에 없다는 오류가 뜹니다. /etc/sudoers 파일을 편집해줘야 하는데, 이 파일을 직접 손대면 안 되고 visudo라는 명령어를 통해 편집해야 합니다. 이름 그대로 vi로 편집하게 되는데, nano로 편집하고자 한다면 앞에 EDITOR=nano를 붙여주세요.
%wheel ALL=(ALL:ALL) ALL 앞의 주석을 지워줍니다. 패스워드를 사용하고 싶지 않다면 이것 말고 하단의 주석을 삭제하시면 되는데, 추천하지는 않습니다.
부트로더 설치
GRUB이 아닌, systemd-boot를 사용합니다. 일반적인 리눅스는 대부분 GRUB을 사용하고 있죠. 아치리눅스는 미니멀함이 철학인 배포판인 만큼, systemd-boot를 선호하는 분들이 많습니다. 가볍고, 빠릅니다. 여기선 systemd-boot로 설치하는 방법을 소개하겠습니다.
참고로 원하는 경우 부트로더 없이 UEFI에서 커널을 직접 부팅(!)시킬 수도 있습니다. EFI stub이라고 하는데, 여기에 파라미터나 마이크로코드를 작동할 수 있게 얹은 게 UKI입니다. 다만 EFI stub이나 UKI를 사용하는 경우 윈도우와 듀얼부팅이 안 됩니다. 아치리눅스만 쓸 경우 좋은 선택이 될 수 있습니다.
[선택 1] EFI boot stub 설치 (efibootmgr)
pacman -S efibootmgr
efibootmgr --create --disk /dev/nvme0n1 --part (efi파티션 숫자) --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=/dev/nvme0n1pX initrd=\initramfs-linux.img'
## 예시
efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=/dev/nvme0n1p6 initrd=\initramfs-linux.img'
경고: 위 구문은 efibootmgr를 이용하여 EFISTUB를 이용하실 분들만 입력하세요. 그렇지 않은 분들은 아래의 systemd-boot를 설치하시기 바랍니다.
[선택 2] systemd-boot 설치 (bootctl)
bootctl install
systemctl enable systemd-boot-update
systemd-boot 부트로더를 설치하고, 자동 업데이트를 설정합니다. systemd 버전 250부터 자동 업데이트 서비스를 지원하기에 이걸 켜주면 부팅시마다 자동으로 업데이트 해줍니다. 이 외에 pacman hook을 설정하는 방법도 있지만, 생략하겠습니다.
nano /boot/loader/loader.conf
## /boot/loader/loader.conf
default @saved # auto-windows
timeout 0
console-mode max # max, keep : FHD 이하는 max 추천
editor 0
loader.conf를 설정합니다.
default: 기본 부팅 옵션입니다. 윈도우를 원하는 경우 auto-windows로, 리눅스로 설정하는 경우 arch.conf로 설정합니다. 뒤에서 작성할 파일명과 이름이 같아야 합니다. 지난번에 부팅한 옵션을 원하는 경우 @saved를 사용합니다.
editor : 엔트리 수정 가능 여부입니다. 1은 수정 가능, 0은 수정 불가입니다.
pacman -Syu intel-ucode # Intel CPU 사용자
pacman -Syu amd-ucode # AMD CPU 사용자
다음으로 마이크로코드를 설치합니다. 자신의 CPU에 맞추어 둘 중 하나의 명령어를 입력합니다.
nano /boot/loader/entries/arch.conf
title Arch Linux
sort-key arch
linux /vmlinuz-linux
initrd /intel-ucode.img # 인텔 사용자
initrd /amd-ucode.img # AMD 사용자
initrd /initramfs-linux.img
options root=UUID=XXXXXXXXXXXXXXXXXX rw
새로운 부팅 엔트리를 작성하겠습니다. 2행에서 vmlinu'Z'가 맞으니 잘 보고 적어주세요. 3, 4행은 둘 중 하나만 작성해야 합니다. 마지막 줄은 자신의 루트 파티션이 맞도록 수정하시면 됩니다. UUID는 fstab을 보면 확인할 수 있습니다.
nano /boot/loader/entries/arch-fallback.conf
title Arch Linux (fallback initfamfs)
sort-key arch-fallback
linux /vmlinuz-linux
initrd /intel-ucode.img # 인텔 사용자
initrd /amd-ucode.img # AMD 사용자
initrd /initramfs-linux-fallback.img
options root=UUID=XXXXXXXXXXXXXXXXXX rw
혹시 모를 상황을 대비하여 fallback 엔트리도 만들어줍니다. fallback이 추가된 것을 확인할 수 있습니다. 이 정도 되면 이제 기본 설치는 거의 끝났다고 보시면 됩니다.
bootctl list
우리가 등록한 옵션이 잘 등록되었는지 확인합니다.
네트워크 및 블루투스 설정
pacman -S bluez{,-utils}
systemctl enable NetworkManager bluetooth
exit
umount -R /mnt
reboot
이제 본격적으로 설치 시스템과 현재의 아치 시스템을 분리하겠습니다. NetworkManager과 블루투스를 실행해준 뒤, chroot된 시스템을 나갑니다. 그럼 다시 Zsh이 뜰 거예요. 여기서 마운트 된 모든 디스크를 분리해주고, 재부팅합니다. 이제 설치 USB는 제거하셔도 됩니다. 굳이 재부팅하지 않고 systemctl start 해서 계속 진행할 수도 있는데, 추천드리지는 않습니다. 특히 하단에서 root를 쓰면 안 되는 상황이 생겨서요.
재부팅 후, 이제부터는 root가 아닌 자신의 계정으로 로그인하시기 바랍니다. 저는 karu 계정을 사용하도록 하겠습니다.
$ ping -c 3 archlinux.org
$ nmcli device wifi list
$ nmcli device wifi connect <SSID> password <PASSWORD>
$ nmcli connection show
재부팅 하고, 아까 만든 계정으로 로그인합니다. Zsh을 설치한 경우 처음에 안내문이 나올텐데, q를 눌러 나가주시면 됩니다. 이 설정은 다음 글에서 하겠습니다.
Wi-Fi가 다시 안 될 겁니다. 거듭 말씀드리지만 랜선을 이용하신다면 문제가 없습니다. ping을 해보고, 오류가 나면 수동으로 Wi-Fi 네트워크에 연결해주세요. 명령어 자체는 비슷합니다.
AUR 헬퍼 설치
원래 여기서 끊고 2편으로 넘어갔으나, yay 설치까지는 끝내도 될 것 같아서 내용을 추가합니다. 아치리눅스의 꽃은 AUR, Arch User Repository입니다. 사실 아치 공식 레포만 치면 패키지가 그렇게 많은 편은 아니에요. 그러나 AUR 덕분에 아치에서는 수없이 많은 패키지를 사용할 수 있습니다. 다만 말 그대로 Official이 아닌 User 레포이기 때문에, 패키지 설치 및 사용시 문제가 발생할 수 있습니다. AUR과 관련된 문제는 아치위키나 포럼 등에서 도움을 받을 수 있기에 이를 이용하면 도움이 됩니다.
AUR 헬퍼가 없다면 브라우저에서 https://aur.archlinux.org에 접속하여 검색 후 일일이 패키지를 다운받아야 하지만, 우린 그런 수고를 하지 않겠습니다.
su karu
재부팅하지 않고 여기까지 계속 내려왔다면, 이제는 새 계정을 사용해주세요. karu 대신 여러분의 아이디를 넣으면 됩니다. 비밀번호는 아까 정한 비밀번호를 입력해주세요.
$ git clone https://aur.archlinux.org/yay-bin
$ cd yay-bin
$ makepkg -si
$ cd ..
$ rm -rf yay-bin
makepkg는 패키지를 만들어 설치하는 명령입니다. 절대로 여기에 sudo를 쓰시면 안 됩니다. root 계정으로 makepkg를 실행하셔도 안 됩니다. 보안상의 위험 때문에 그렇습니다. 혹여나 PKGBUILD 파일에 시스템을 날려버릴 수 있는 코드가 삽입되었을 수도 있으니까요. (AUR은 공식 레포가 아닌, 이용자들이 자유롭게 올리는 레포임을 항상 명심해두어야 합니다) 이런 이유 때문에 root 계정으로 makepkg를 실행하는 건 막혀 있습니다.
$ yay
시스템 업데이트는 yay 한 방이면 끝납니다.
[선택사항] 부팅시 neofetch 자동 실행
$ sudo pacman -S neofetch
$ echo "neofetch --os_arch off --speed_shorthand on --cpu_temp C --shell_version off" >> ~/.zprofile
.zprofile은 Zsh로 로그인을 했을 때 실행되는 파일입니다. Bash를 쓴다면 .bash_profile이 그 역할을 합니다. TTY에서 로그인한 경우 neofetch를 실행하여 Welcome Screen을 만들 수 있습니다.
수고하셨습니다. 이제 아치리눅스 설치에 성공하셨습니다. 다만 이대로 사용하기에는 무리가 있죠. 아직 GUI 환경도 설치하지 않았으니까요. 이어서, 필수적이지는 않지만 중요한 설정들을 다루고자 합니다. 다음 글에서 뵙겠습니다.
'Linux' 카테고리의 다른 글
Arch Linux 설치 가이드 3: LTS 커널과 기타 설정 마무리 (2) | 2024.09.30 |
---|---|
Arch Linux 설치 가이드 2: Wayland GUI 환경설정과 드라이버 설치 (2) | 2024.09.30 |