[UPDATED 18.02.17.] 최근 Linux 커널 버전의 문제인지 제대로 작동하지 않는 문제가 있어 이를 바로 잡았다. 잘못된 설명도 수정하였다.

[UPDATED 17.11.21.] xorg가 서버 유틸을 apps로 명칭을 변경하여 이를 반영하였다. 또한 불필요한 과정을 제거하고 Microcode를 설치하여 부트시 발생하는 에러를 잡았다.

지금껏 웹개발 환경을 Lubuntu로만 사용해왔다. 아무래도 Ubuntu가 편했고, 가벼웠기 때문이었다. 하지만 최근 개발을 위해 여러 프로그램을 빌드하다보니 Ubuntu가 썩 낭만적이진 않았다. 그러다 ArchLinux를 만났다. 일단 다른 것보다 내가 쓰는 모든 툴들이 단순히 Install만 하면 된다는 점은 큰 장점이었다. 수십번씩 컴파일하고 의존성 모듈을 설치하는 과정은 리눅스를 쓰는 이라면 충분히 공감할 것 같다.

하지만 Arch Linux의 가장 큰 문제는 설치였다. 다른 건 다 좋은데, 설치 과정이 다른 OS와 달리 파티션부터 본인이 다 설치해야했다. 사용하고는 싶은데, 진입 장벽이 높았다. 따라서 그간 설치 과정을 메모도 할 겸 이 글을 작성해본다.

과정은 크게 4단계로 나뉜다. 복잡한 것은 파티션 설정 정도다.

  1. 파티션 설정
  2. 언어 및 지역설정
  3. 호스트네임 및 네트워크 설정
  4. 유저 및 부트로더 설정
$ dhcpcd
$ ping -c 3 archlinux.org

먼저 인터넷이 제대로 작동하는지 확인한다.

$ lsblk

lsblk 명령어로 해당 파일 시스템을 확인한다. 이 때, sda이면 sda로 그게 아니면 vda로 적용한다.

$ cfdisk /dev/vda

파티션을 만들기 위해 cfdisk를 실행한다. 이후 dos 환경으로 작업을 이어간다. 기본적으로 메인 파티션, SWAP 파티션 그리고 보조 파티션을 만들어야 한다. 각각 비율은 10:1:9로 하는 것이 일반적이다. 모든 파티션엔 primary로 적용한다.

# 메인 파티션이 될 vda1을 추가한다. 반드시 bootable 옵션을 추가한다. 추가하면 * 마크가 보인다.
$ mkfs.ext4 /dev/vda1

# SWAP 파티션 차례다. Type -> (82) Linux swap를 적용한다.
$ mkswap /dev/vda2
$ swapon /dev/vda2

# 보조 파티션이다. 특별히 설정할 사항은 없다. 설정 후 write로 저장한다.
$ mkfs.ext4 /dev/vda3

이제 파일 시스템을 마운트한다.

# 메인 파티션을 마운트한다.
$ mount /dev/vda1 /mnt

# home 폴더를 만들고 이를 보조 파티션으로 마운트한다.
$ mkdir /mnt/home
$ mount /dev/vda3 /mnt/home

이제 Arch Linux를 올릴 준비가 되었다. 빠르게 다운로드하기 위해 가까운 미러 DB를 추가한다.

$ pacman -Sy
$ pacman -S reflector
$ reflector --verbose -l 5 --sort rate --save /etc/pacman.d/mirrorlist

이제 Arch Linux의 base를 설치한다. 가장 시간이 소요되는 구간이다.

$ pacstrap -i /mnt base base-devel

파티션을 인식하기 위해 fstab를 설치한다. 마운트된 디스크에 쉽게 접근할 수 없도록 chroot 명령어도 내린다.

$ genfstab -U -p /mnt >> /mnt/etc/fstab
$ cat /mnt/etc/fstab
$ arch-chroot /mnt

OS 언어와 위치를 설정한다.

$ nano /etc/locale.gen
# {# en_US.UTF-8 UTF8} 주석을 제거한다.

# 해당 설정을 locale.conf에 저장한다.
$ locale-gen
$ echo LANG=en_US.UTF-8 > /etc/locale.conf
$ export LANG=en_US.UTF-8

타임존도 설정한다. 시스템 시간은 bus 작업이 필요하므로 이후 진행한다.

$ ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
$ hwclock --systohc

32비트 프로그램을 돌릴 수 있도록 multilib를 허용한다.

$ nano /etc/pacman.conf
# {# [multilib] and include = /etc/pacman.d/mirrorlist} 주석을 제거한다.

# 변경된 사항을 동기화한다.
$ pacman -Sy

호스트네임과 네트워크를 설정한다.

# 호스트네임을 설정한다.
$ echo {HOSTNAME} > /etc/hostname

# 네트워크 상태를 확인한다.
$ ip link

# 연결된 네크워크 포트로 변수를 지정한다.
$ systemctl enable dhcpcd@{ens3}.service

루트 비밀번호와 유저를 생성한다.

# 루트 비밀번호를 설정한다.
$ passwd

# 자동완성 기능을 추가한다.
$ pacman -S bash-completion

# 유저를 추가한다.
$ useradd -m -g users -G wheel,storage,power -s /bin/bash {USERNAME}
$ passwd {USERNAME}

# wheel 그룹 내 유저가 sudo 작업을 할 수 있도록 만든다.
#  {# %wheel ALL=(ALL)} 주석을 제거한다.
$ EDITOR=nano visudo

부트로더를 설정한다.

# 초기 ramdisk를 설정한다.
$ mkinitcpio -p linux

# 부트로더를 설정한다.
$ pacman -S grub os-prober

# 추가적으로 Microcode를 설치한다. 설치하지 않으면 부트시 에러가 발생할 수 있다.
$ pacman -S intel-ucode

$ grub-install /dev/vda
$ grub-mkconfig -o /boot/grub/grub.cfg

이제 작업은 끝났다. 디스크를 언마운트하고, 재부팅한다.

$ exit
$ umount -R /mnt
$ reboot

만일 재부팅 후 로그인이 되지 않는다면, linux 커널대신 linux-lts를 사용해 재설치한다.

$ pacman -S linux-lts
$ mkinitcpio -p linux-lts
$ grub-mkconfig -o /boot/grub/grub.cfg
$ pacman -Rs linux

추가로 데스크탑 환경이 필요하다면, lxde나 gnome 등을 설치하면 된다.

# 데스크탑 환경을 위해 기본적인 X Window System을 설치한다.
$ sudo pacman -S xorg-server xorg-xinit

# 사용중인 PC의 비디오 카드를 확인한다.
$ lspci | grep VGA

# xf86-video 드라이버 내역을 검색한다.
$ sudo pacman -Ss xf86-video | less

# 비디오 카드 드라이버를 설치한다. 적절한 드라이버가 없으면 vesa를 선택한다.
$ sudo pacman -S xf86-video-vesa

# 원하는 데스크탑 환경을 설치 후 재부팅한다.
$ sudo pacman -S lxde networkmanager
$ sudo systemctl enable lxdm.service
$ sudo systemctl enable NetworkManager.service
$ sudo reboot

이렇게 설치를 완료하고 나면 폰트가 로딩되지 않는 경우가 발생한다. 이럴 땐 폰트를 설치하면 된다. 여기선 ttf-d2coding을 설치한다.1 주의할 점은 반드시 X Window System 설정이 끝나고 설치해야 한다는 것이다. 그렇지 않으면 부트 지연이 발생한다.

$ pacman -S git
$ git clone https://github.com/nakoo/ttf-d2coding.git

$ cd ttf-d2coding
$ makepkg -si

시스템 시간을 하드웨어 시간과 맞춘다.

$ timedatectl set-ntp true

이제 한글을 입력할 수 있도록 nimf 입력기를 설정한다.

# nimf의 repository를 clone한다.
$ git clone https://aur.archlinux.org/nimf-git.git

# nimf 입력기를 설치한다.
$ cd nimf-git
$ makepkg -si

# ~/.xprofile에 아래 내용을 추가한다. 추가해야 모듈을 불러올 수 있다.
# 만일 자동으로 실행되지 않는다면 윗 줄에 **nimf-daemon**을 추가한다.
export GTK_IM_MODULE="nimf"
export QT4_IM_MODULE="nimf"
export QT_IM_MODULE="nimf"
export XMODIFIERS="@im=nimf"

이제 추가로 필요한 부분을 알아서 설치하면 된다. Arch Linux의 가장 큰 장점은 모든 repo가 연결되어 자동으로 모든 패키지를 업데이트 할 수 있다는 점이다. 따라서 필요하다면 pacman -Syu을 실행하면 된다.

  1. AUR 패키지가 구형이라서 직접 PKGBUILD를 만들었다.