본문 바로가기
IT & 전자기기/소프트웨어

Arch Linux 설치 가이드 1 (아치리눅스-윈도우 듀얼부팅)

by 카루 (Rolling Ress) 2023. 9. 16.
반응형
 

환영합니다, Rolling Ress의 카루입니다.

이전에 써둔 아치리눅스 설치 포스트가 너무 오래되어서, 다시 써보려고 합니다. 확실히 롤링 릴리즈 배포판이라 그런지 설치 방법도 계속 변하네요. 여튼, 시작하겠습니다.

목차

  • 라이브 부팅 및 설치 준비
  • 파티션 분할 및 마운트
  • 베이스 시스템 설치 및 설정
  • 부트로더 설치

만약 새로 Windows와 Arch Linux를 같이 설치하신다면, EFI 파티션은 적어도 512 MiB, 넉넉하게 1 GiB정도는 잡아두시기 바랍니다. 리눅스는 커널을 모두 EFI 파티션에 담아두기에, EFI 파티션이 작으면 큰 불상사가 일어날 수 있습니다.

아래 링크에서 아치리눅스를 다운받으시기 바랍니다. Rolling Release 배포판이므로 항상 최신 버전이 게시되어 있습니다. 이 글을 작성하는 시점에서는 2023.09.01 버전이 최신이군요.

다운받은 후 rufus를 이용하여 USB에 담아주시면 됩니다. Secure Boot를 해제하고 USB로 부팅해주세요.

라이브 부팅 및 설치 준비

첫 화면에서 Arch Linux Installation Media ~ 가 써있는 첫 번째 항목을 선택하시면 됩니다. 라이브 미디어인만큼, 시간이 좀 걸립니다.

성공적으로 부팅이 되었다면 Zsh이 맞이해줍니다. 맞습니다. GUI 따위는 없습니다. 모든 걸 CLI에서 해야 합니다.

# cat /sys/firmware/efi/fw_platform_size

코드 앞에 있는 '#'은 root shell임을 뜻합니다. 실제로 '#'을 입력하라는 뜻이 아닙니다.

위 명령어를 입력해주세요. 64가 뜬다면, 성공적으로 UEFI 64bit 부팅이 된 겁니다. 에러가 뜬다면 UEFI 모드로 부팅이 안 된 겁니다.

다음으로 와이파이에 연결해야 합니다. 유선 인터넷이 연결되어 있다면 이 절차(iwd)를 생략하셔도 됩니다. 무선 인터넷을 사용하는 경우, iwctl을 이용해 직접 인터넷에 연결해주어야 합니다.

# iwctl
 

이제 Zsh이 아니라 iwctl 쉘이 뜨게 됩니다.

[iwd]# device list

 무선 랜카드를 출력하는 명령어입니다. 마찬가지로 # 의 뒷부분만 입력하시면 됩니다. 저는 wlan0이 잡혔습니다.

[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks

 

본인의 무선 랜카드가 wlan0이 아니라 다른 것으로 잡힌 경우, 해당 이름으로 바꿔주세요. 이 두 줄을 입력하면 네트워크를 스캔하고, 사용 가능한 네트워크 SSID를 출력해줍니다.

[iwd]# station wlan0 connect SSID

 wlan0은 자신의 무선 어댑터 이름으로, SSID는 연결하고자 하는 네트워크의 이름으로 바꾸어주세요. 비밀번호가 걸려있는 경우 이 명령어 입력 후 Passphrase를 입력하는 칸이 나옵니다.

 
[iwd]# 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

우선 장착된 스토리지를 확인합니다. 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
# mkswap /dev/nvme0n1p5
# swapon !$ (!$: 위의 마지막 매개변수를 그대로 사용)
 

파티션 번호와 파일시스템을 잘 확인해주세요. 이때 루트 파티션의 경우 대부분의 시스템에서 ext4를 사용하지만, zfs나 btrfs를 써도 무방합니다. 다만 안정성이나 성능 등 여러 문제가 있을 수 있으므로 자신의 상황을 잘 고려하여 파일시스템을 선택하기 바랍니다.

# mount /dev/nvme0n1p6 /mnt
 

/ 파티션(루트 파티션)이 될 파티션을 /mnt 폴더에 마운트해주세요.

# mount --mkdir /dev/nvme0n1p1 /mnt/boot

# 다른 파티션도 마운트하는 경우
# mount --mkdir /dev/nvme0n1pX /mnt/home
 

다음으로 efi 파티션을 마운트하겠습니다. mount에 --mkdir 옵션을 주면 자동으로 디렉터리를 생성하여 마운트해줍니다. /home, /usr/local, /tmp 등 별도의 파티션을 생성한 경우 여기서 모두 마운트합니다.

베이스 시스템 설치 및 설정

# pacstrap -K /mnt base linux linux-firmware # 반드시 설치해야 하는 패키지입니다.
# pacstracp /mnt vim nano networkmanager man-db man-pages # 기타 중요한 패키지입니다.
# pacstrap /mnt base-devel # AUR을 사용하는 경우 설치해야 할 수 있습니다.
 

-K 플래그는 pacman의 키링을 새로 설정하는 플래그입니다. base 패키지는 커널이나 펌웨어 등 기초적인 것들을 모아둔 패키지입니다. 여기에 추가로 텍스트 에디터(nano), man 페이지, 네트워크 매니저 등을 추가로 설치해주겠습니다. 또한 아치리눅스의 경우 AUR을 사실상 필수로 사용하게 되므로, base-devel 패키지도 설치하도록 하겠습니다. 각자 상황에 맞게 조정하기 바랍니다.

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

fstab을 설정합니다. 부팅시 fstab 설정에 따라 파티션을 자동으로 마운트합니다. 이 파일이 잘못되는 경우 제대로 부팅이 되지 않습니다. -U 대신 -L을 이용해 UUID가 아닌 Label을 이용해 fstab을 생성할 수도 있으나, 저는 충돌할 일이 없는 UUID를 선호합니다.

# nano /mnt/etc/fstab
UUID=XXXXXXXX    /     ext4    defaults,discard      0 1
UUID=XXXXXXXX    /boot vfat    rw,relatime,discard   0 2
...

 /mnt/etc/fstab을 열고, TRIM을 지원하는 SSD를 사용하는 경우 마운트 옵션 끝에 discard를 추가해줍니다. 이때 공백이 있으면 안 됩니다.

여기서 Windows와 Arch Linux가 공유할 파티션을 사용하는 경우, 이 파티션을 임의의 폴더에 마운트한 뒤 Download, Document, Pictures 등의 폴더를 bind하여 마운트할 수도 있습니다.

# 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 ZenBookArch > /etc/hostname
 

호스트 이름을 설정합니다. 여러분이 사용하는 컴퓨터의 이름이 됩니다. nano로 /etc/hostname 파일을 직접 작성하셔도 됩니다.

# passwd
 

루트 계정의 패스워드를 설정합니다. 두 번 입력하시면 됩니다.

# useradd -m -G wheel -s /bin/bash karu
# passwd karu

-m : 홈 디렉터리를 생성합니다. 제 경우 /home/karu가 됩니다.

-G : 그룹을 설정합니다. wheel은 sudo를 사용할 수 있습니다. (추가 설정 필요)

-s : 기본 쉘을 설정합니다. Zsh를 사용하신다면 /bin/bash 대신 /bin/zsh를 사용하시면 됩니다.

그리고 새로 생성한 계정의 패스워드를 설정합니다.

# 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에서 커널을 직접 부팅(!)시킬 수도 있습니다. EFISTUB이라고 하는데, 여기에 파라미터나 마이크로코드를 작동할 수 있게 얹은 게 UKI입니다. 다만 EFISTUB이나 UKI를 사용하는 경우 윈도우와 듀얼부팅이 안 됩니다. 아치리눅스만 쓸 경우 좋은 선택이 될 수 있습니다.

# 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를 설치하시기 바랍니다.

# bootctl install
 

systemd-boot 부트로더를 설치합니다.

# systemctl enable systemd-boot-update​

systemd 버전 250부터 자동 업데이트 서비스를 지원합니다. 이걸 켜주면 부팅시마다 자동으로 업데이트 해줍니다. 이 외에 pacman hook을 설정하는 방법도 있지만, 생략하겠습니다.

# nano /boot/loader/loader.conf

loader.conf를 설정합니다.

default auto-windows
timeout 0
# console-mode max
editor 0

default: 기본 부팅 옵션입니다. 윈도우를 원하는 경우 auto-windows로, 리눅스로 설정하는 경우 arch.conf로 설정합니다. 뒤에서 작성할 파일명과 이름이 같아야 합니다.

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
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

혹시 모를 상황을 대비하여 fallback 엔트리도 만들어줍니다.

title Arch Linux (fallback initfamfs)
linux /vmlinuz-linux
initrd /intel-ucode.img (인텔 사용자)
initrd /amd-ucode.img (AMD 사용자)
initrd /initramfs-linux-fallback.img
options root=UUID=XXXXXXXXXXXXXXXXXX rw

fallback이 추가된 것을 확인할 수 있습니다. 이 정도 되면 이제 기본 설치는 거의 끝났다고 보시면 됩니다.

# systemctl enable NetworkManager
# exit
 

네트워크 관리자를 활성화하고, chroot 된 시스템을 나갑니다.

# umount -R /mnt
# reboot

아치리눅스 시스템을 마운트 해제하고, 재부팅합니다. 설치 USB는 제거하셔도 됩니다.


수고하셨습니다. 이제 아치리눅스 설치에 성공하셨습니다. 다만 이대로 사용하기에는 무리가 있죠. 아직 GUI 환경도 설치하지 않았으니까요. 이어서, 필수적이지는 않지만 중요한 설정들을 다루고자 합니다. 다음 글에서 뵙겠습니다.

반응형


같이 보면 좋은 글


댓글