본문 바로가기

Linux/Archlinux

아치리눅스 설치하기

앞으로 티스토리 대신 blog.stackframe.dev에서 블로깅을 합니다. 이 블로그는 남겨 둘 예정입니다.

아치리눅스는 롤링 업데이트를 통해 상당히 빠른 속도의 업데이트를 지원합니다. 그러므로 배포판의 버전도 존재하지 않고 설치를 하게되면 무조건 최신의 시스템으로 이용할 수 있게 됩니다. 그리고 어떤 프로그램의 새로운 버전이 나왔을 때 레포지토리에 올라오는 속도도 다른 배포판들과 비교 불가능할 정도로 빠르기 때문에 새로운 기능을 빠르게 만나보기에도 좋습니다.


아치리눅스도 우분투나 CentOS처럼 설치를 위한 ISO 파일을 제공합니다. 다만 미니멀리즘을 추구하는 아치리눅스답게 GUI는 지원하지 않습니다.

목차

1. ISO 다운로드 && USB 설치

2. 설치 전 설정

3. 설치

4. 부트로더 설치

1. ISO 다운로드 && USB 설치

ISO 파일은 여기에서 다운받을 수 있습니다.  토렌트를 사용하거나 밑의 여러 미러 사이트들 중에 아무 곳에 들어가서 용량이 가장 큰 ISO 파일을 받으시면 됩니다.

이 ISO 파일을 USB에 설치하려면 윈도우즈에서는 이미지 라이팅 프로그램이 필요합니다. Universal USB installerUNetbootin 등 여러 종류의 프로그램들이 있는데 Rufus를 사용하는게 좋아보입니다.


이렇게 ISO를 선택하고 나머지 부분도 동일하게 설정하시면 됩니다. 그런다음 시작을 누르면 아래와 같은 창이 뜹니다.

이는 아치리눅스의 ISO가 하이브리드 이미지이므로 둘 중에 어떤 모드로 쓸지 선택하는 것입니다. 여기서는 DD 이미지 모드로 쓰기를 선택합니다.


만약 리눅스를 사용하신다면 dd 명령어를 이용하여 간편하게 설치하실 수 있습니다.

$ sudo dd bs=4M if={iso 경로} of=/dev/sd{장치} status=progress conv=fsync

이제 USB로 부팅하면 1단계는 완료한 겁니다.

2. 설치 전 설정

부팅이 완료되고 멋진(?) 검은 화면에 영어만 나와있는 프롬프트가 보인다면 2단계로 넘어갈 차례입니다.

아치리눅스는 기본적으로 인터넷에 연결되어 있어야 합니다. 와이파이를 잡을 수도 있지만 여기서 다루기엔 너무 난잡해 질 수 있기 때문에 적지는 않겠습니다. 와이파이를 사용하면 다운로드 속도도 느릴 수 있기 때문에 유선 연결을 권장합니다.


먼저 컴퓨터의 시계를 동기화시킵니다. 기본적으로 동기화가 되는 것으로 알고있지만 혹시 모르니 확인 차원에서 아래의 명령을 실행합니다.

# timedatectl set-ntp true

이제 파티션을 분할해야 합니다. 사실 저도 터미널에서 파티션을 분할하는건 썩 잘하지 못합니다. 막 분할하는 것은 잘 할 수 있겠는데 맨날 할 때마다 파티션 정렬이 어떻다느니... 같은 소리가 계속 나와서 그냥 속 편하게 GUI로 해버립니다. parted를 잘 쓰시지 못한다면 윈도우즈나 다른 리눅스에서 미리 파티션 분할을 한 뒤에 설치를 시작하시는 것이 가장 속 편할겁니다. 여기서는 설명하기 편하려고 한 디스크를 싹 다 밀고 설치하는 걸 기준으로 설명하겠습니다.


아치리눅스를 부팅하기 위해서는 "/"를 담당하는 파티션과 "/boot"를 담당하는 파티션 2개만 만들면 됩니다. 물론 사용자의 취향에 따라서 /tmp도 따로 만들 수 있지만 그냥 넘어갑시다.


먼저 lsblk 명령어로 어떤 장치들이 연결되어 있는지 확인해 봅니다. 여기서 설치할 디스크의 이름을 확인합니다. ex) sdb sdc ...

그리고 parted 명령어로 해당 디스크를 설정하러 들어갑니다.

# parted /dev/{디스크 이름}

그럼 아래와 같은 모습이 나왔을 겁니다.

GNU Parted 3.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

파티션을 분할하기 전에 파티션 테이블을 GPT로 만들어줍니다. 요즘 메인보드들은 대부분 UEFI 부팅을 지원하고, GPT 테이블이 예전의 MBR 파티션 테이블보다 장점이 더 많으므로 앞으로 저장장치를 포맷할 때는 이 파티션 테이블을 사용하는게 여러모로 이득입니다. GPT로 포맷하는 명령어는 mklabel gpt입니다.

(parted) mklabel gpt

이제 파티션을 만들 차례입니다. 파티션 만들기는 mkpart로 진행하면 됩니다.

(parted) mkpart Partition name? []? boot File system type? [ext2]? vfat parted: invalid token: vfat File system type? [ext2]? fat32 Start? 1M End? 513M

(parted) set 1 ESP

New state? on/[off]? on

(parted)

저는 디스크의 앞 1M 정도 여유를 두고 512M 크기의 파티션을 만들었습니다. 이 파티션은 부팅에 사용되므로 ESP 플래그도 설정해 줍니다. 이번에는 / 에 할당될 파티션입니다.

(parted) mkpart Partition name? []? root File system type? [ext2]? ext4 Start? 514M End? 63.9G (parted) print Model: Generic MassStorageClass (scsi) Disk /dev/sdc: 63.9GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 513MB 512MB fat32 boot, esp 2 514MB 63.9GB 63.3GB ext4 (parted) quit

#

파티션 분할은 모두 완료되었고 파티션 포맷을 해야합니다. /boot는 efi 파일이 들어가야하기 때문에 fat32로, /는 ext4로 포맷합니다. 포맷 명령어는 각각 mkfs.vfat, mkfs.ext4 입니다.

# mkfs.vfat /dev/sdc1
mkfs.fat 4.1 (2017-01-24)
# mkfs.ext4 /dev/sdc2
mke2fs 1.44.4 (18-Aug-2018)
Creating filesystem with 15466240 4k blocks and 3866624 inodes
Filesystem UUID: 93fff6e4-da13-4ac9-ac1f-40a680b96b12
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done   
#

이걸로 설치 전 준비는 완료되었습니다.

3. 설치

드디어 본격적인 OS 설치입니다. 아치리눅스 설치는 pacstrap 이라는 명령어로 이루어집니다. 하지만 이 명령을 실행하기 전에 미리 설정할 것이 있습니다.

pacstrap은 인터넷에서 패키지들을 다운로드 받아 설치하는데, 기본적으로 해외 서버가 우선하게 되어있습니다. 그러므로 미러 리스트인 /etc/pacman.d/mirrorlist 파일을 수정하여 한국 서버만 남겨두는 것이 설치 시간 절약에 도움이 됩니다.

그리고 이전에 만들었던 파티션들을 마운트시켜 둬야 설치를 진행할 수 있습니다. 저는 /mnt 디렉토리에 마운트하겠습니다.

# mount /dev/sdc2 /mnt
# mkdir /mnt/boot
# mount /dev/sdc1 /mnt/boot

파티션들이 /mnt 디렉토리에 계층 구조에 맞게 마운트가 완료되었습니다. 이제 pacstrap을 실행시킬 시간입니다.

# pacstrap /mnt base

pacstrap이 끝나면 아치리눅스에 사용될 파티션들을 /mnt/etc/fstab 에 기록해야 합니다. 이걸 간편하게 하기 위해서 genfstab이라는 명령어가 지원됩니다.

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

이제 arch-chroot로 /mnt를 /로 변경합니다.

# arch-chroot /mnt

시스템의 시간대를 설정하기 위해서 /usr/share/zoneinfo에 있는 지역들 중에서 적절한 것으로 /etc/localtime에 심볼릭 링크를 겁니다. 저는 서울 시간대로 설정했습니다.

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

그리고 하드웨어 시간을 조정합니다.

# hwclock --systohc

시스템에서 사용하는 로케일을 설정하기 위해서 /etc/locale.gen 파일을 수정해야합니다. 이 파일 안에는 모든 로케일들이 주석처리되어 있는데 저희는 혹시나 사용하게될지도 모르는 한국어(ko_KR.UTF-8)와 필수적인 영어(en_US.UTF-8)를 주석해제 해야합니다.기본적으로 vi와 nano라는 터미널 텍스트 편집기가 들어있으니 수단과 방법을 가리지 말고 수정합니다.


그런다음 locale-gen 명령어로 업데이트합니다.

# locale-gen

시스템에서 기본적으로 표시할 언어는 영어를 사용하는게 여러모로 편하므로 /etc/locale.conf 에 "LANG=en_US.UTF-8"을 넣습니다.

# cat "LANG=en_US.UTF-8" >> /etc/locale.conf

시스템의 이름을 설정하기 위해 /etc/hostname을 수정합니다. 저는 이 시스템의 이름을 archlinux로 설정했습니다.

# cat "archlinux" > /etc/hostname

시스템의 로컬 라우팅 테이블을 위해 /etc/hosts 파일도 아래와 같이 수정합니다. archlinux로 되어있는 부분은 위에서 hostname에서 설정한 이름으로 대체하면 됩니다.

127.0.0.1 localhost ::1 localhost 127.0.1.1 archlinux.localdomain archlinux

부팅하기 위해 initramfs 파일이 필요하므로 mkinitcpio 명령어로 생성합니다.

# mkinitcpio -p linux

OS 설치의 마지막으로 root 계정의 비밀번호를 설정합니다.

# passwd

4. 부트로더 설치

이제 진짜 마지막으로 부트로더를 설치합니다. 부트로더에는 가장 유명한 grub 이 있습니다만 저는 grub보다 관리하기 편하고 체계적인 systemd-boot를 선호합니다.


systemd-boot는 아치리눅스에 기본적으로 포함되어 있습니다. 먼저 efi 부트매니저를 설치하기 위해 bootctl 명령어를 사용합니다.

# bootctl --path=/boot install

그리고 아치리눅스의 부팅 선택 메뉴를 만들기 위해 /boot/loader/entries/archlinux.conf에 아래와 같이 입력합니다. 주의할 점은 {uuid}는 /etc/fstab에 "/"로 할당되어 있는 파티션의 UUID={...} 로 적혀있는 부분을 그대로 입력해야 합니다.

title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=UUID={uuid} rw

부트로더 설정을 위해 /boot/loader/loader.conf를 아래와 같이 수정합니다.

default  archlinux
timeout  3
editor   no

이제 리부팅을 해서 정상적으로 로그인 화면이 뜨면 성공입니다.




적고보니 상당히 복잡한 것처럼 느껴집니다. 그래도 이 글을 보고 계신다면 이미 우분투같이 유저친화적인 배포판에 만족하지 못하고 세세하게 직접 설정하는 배포판을 찾아 떠돌아다니시는 중일겁니다. 그런 분들께 아치리눅스는 상당히 매력적인 배포판일 것이라 믿어 의심치 않습니다.

'Linux > Archlinux' 카테고리의 다른 글

아치리눅스 pacman 사용하기  (0) 2018.12.24