Arch Linux 개발환경 구축

0xf4d3c0d3·2022년 1월 8일
0

블로그의 첫글로 아치리눅스 가상환경 구축을 정리하고자 한다. 재밌기도 하고 첫글의 주제로는 부담없이 글을 써볼 수 있을것 같다.

본 글은 VMware Workstation Player 16 + archlinux-2021.12.01-x86_64 기준으로 정리되어 있으니 나중에는 조금 수정이 필요한 부분이 있을 수 있음에 유의하라

1. Arch Linux 이미지 받기

https://archlinux.org/download/ 에서 토렌트로 받거나 HTTP Direct Downloads에서 적당한 한국 미러를 찾아 받을 수 있다. 여기서는 archlinux-2021.12.01-x86_64를 받았다.

2. 가상머신 생성

호스트에 직접 아치리눅스를 설치할수도 있지만 나는 보통 윈도우 호스트에 os별로 가상머신을 생성하여 대부분 작업을 가상머신 안에서 수행한다. 덕분에 리눅스환경에서 개발도 하고 윈도우환경에서 공공업무도 같이 볼 수 있다. 가상화를 따로 하지 않을거라면 이 단계는 생략해도 좋다.

가상화 프로그램엔 크게 VMware, VirtualBox가 있다. 여기서는 비상업적 용도에 한해 무료로 사용가능한 VMware Workstation Player를 기준으로 설명한다.

좌상단의 Player -> File -> New Virtual Machine을 눌러 새로운 가상머신을 생성하자.

Installer disk image file(iso)로 (1)에서 받은 이미지를 선택하고 나머지는 적당히 입력한다. 적당히 뭘 입력해야할지 모르겠다면 아래 사진을 참고하면 된다.

Memory나 Processors는 처음에 너무 짜게 할당되는데, 원활한 개발환경을 위해 넉넉히 할당해주자. 마지막 Customize Hardware에서 설정할 수 있다.

3. Arch Linux 설치

본격적으로 Arch Linux를 설치할 차례다. (2)에서 따로 booting usb를 만들었든, 가상머신을 생성했든 부팅하면 다음과 같은 화면이 보일것이다.

첫번째 메뉴를 선택하고 넘어가면 바로 셸로 떨어질 것이다. 이 단계에서 해야할 일은 Install guide - ArchWiki에 상세히 설명되어 있으니 읽어보면 좋다.

여기서는 필요한 부분만 설명하겠다.

3.1. 파티션 나누기

installation image에는 fdisk, cfdisk가 같이 들어있다. cfdisk는 curses기반 ui를 가지고 있어 사용하기 편하지만 글로 정리하기에는 fdisk가 나쁘지 않다.
fisk -l로 사용가능한 디스크를 확인하자. VMware라면 /dev/sda에 잡힐 것이고 호스트에서 SATA port 대신 NVM Express port를 사용한다면 /dev/nvme0n1 같은 곳에 잡힐 것이다. fdisk /dev/sda로 파티션을 만들어주자. 실행하면 fdisk 셸로 떨어지는데 여기서 m을 눌러 사용가능한 명령어들을 볼 수 있지만

n	add a new partition
p	print the partition table
w	write table to disk and exit

지금은 위 3개만 알고 있으면 된다.

여기서는 통째로 Linux Filesystem을 /dev/sda1에 생성했고 swap은 생략했다. 이렇게 생성한 파티션을 mkfs.ext4 /dev/sda를 통해 ext4 파일시스템으로 만들어준다.

3.2. 시스템 설정

(3.1)에서 생성한 파티션을 mount /dev/sda /mnt로 마운트 해준 뒤 pacstrap /mnt base linux linux-firmware vim grub으로 필요한 패키지들을 설치해준다. genfstab -U /mnt >> /mnt/etc/fstab 으로 fstab 파일을 생성해주고 arch-chroot /mnt로 새로 만든 시스템에 접속한다.

여기서는 명령어들의 나열이기 때문에 주석으로 설명하겠다.

# # 타임존 설정
# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime  # 타임존을 서울로 맞춘다.
# hwclock --systohc  # hwclock을 osclock에 맞춘다.

# # 로케일 설정
# vim /etc/locale.gen  # 필요한 locale들을 uncomment해준다. 여기서는 en_US.UTF-8, ko_KR.UTF-8을 사용
# vim /etc/locale.conf
# cat /etc/locale.conf
LANG=en_US.UTF-8
# locale-gen  # 로케일 생성

# # 네트워크 설정
# vim /etc/hostname  # hostname을 입력한다. 여기서는 arch-example로 한다.
# ip l  # 네트워크 인터페이스 확인. 여기서는 ens33라 한다.
# vim /etc/systemd/network/ens33.network  # dhcp 설정을 해준다. 내용은 다음을 참고
# cat /etc/systemd/network/ens33.network
[Match]
Name=ens33

[Network]
DHCP=yes

# 루트 비밀번호 설정
# passwd

# microcode 설치
# pacman -S intel-ucode  # intel의 microcode를 설치한다. amd라면 amd-ucode 사용

# 부트로더 설정
# grub-install --target=i386-pc /dev/sda  # 파티션이 아니라 디스크임에 유의
# grub-mkconfig -o /boot/grub/grub.cfg  # 안해주면 부팅이 안되니 꼭 해주자

이제 ctrl+d로 빠져나와 reboot로 재부팅을 해주면 GRUB 메뉴가 뜰텐데 선택지는 "Arch Linux" 하나므로 그냥 넘어가자.

그러면 로그인 셸만 덩그러니 남는데 id는 root pw는 위에서 설정한 비밀번호를 사용한다.

몇가지 추가적인 설정이 더 필요해, 이 상태에선 인터넷이 되지 않는다. dhcp 설정은 위에서 해줬으니

# systemctl enable systemd-networkd  # 내장 network daemon 활성화
# systemctl start systemd-networkd  # 내장 network daemon 시작
# vim /etc/resolv.conf  # 네임서버 추가. 여기서는 nameserver 1.1.1.1 사용

를 해주면 기본적인 Arch Linux 설치가 끝난다.

3. 유저 & 그룹 관리

Install guide - ArchWiki를 다 끝냈으면 General recommendations - Archwiki 문서를 볼 수 있다. 그 중 가장 기본이 되는 유저와 그룹관리는 짚고 넘어가겠다.

# useradd -m <유저명>
# passwd <유저명>
# vim /etc/sudoers  # wheel group의 주석을 풀어주자
# usermod -aG wheel group <유저명>  # 해당 유저가 sudo 권한에 접근 가능하도록

필요하다면 chsh -s `command -v zsh` 로 기본 셸을 변경할 수 있다.

4. GUI 환경 구축

위 환경까지 하고 마치고 "원활한 작업환경"이라 하기엔 무리가 있다. Display server를 위해 Xorg를 설치하자. 10년전에 새로(?) 나온 Wayland도 있지만 아직까지 다소 불안정하다고 하니 그건 써볼 사람만 써보자.

pacman -S xorg-server xorg-xinit xterm으로 필요한 패키지를 설치한다.

그리고 바로 startx를 실행해 Xorg를 띄울 수도 있지만 어디 내놔도 부끄러운 화면만 덩그러니 WM이든 DE든 추가적인 작업이 필요하다. 다양한 선택지가 있지만 여기선 내가 항상 애용하는 i3-gaps를 소개한다.

pacman -S i3-gaps i3status rofi noto-fonts로 해당 패키지들과 필요한 폰트를 설치하고 관련 설정들을 초기화 해주자. 아래를 계속 진행하기 전에 (3)에서 생성한 유저로 로그인을 먼저 한다.

~/.zprofile (bash라면 ~/.bash_profile)에 다음과 같이 추가한다.

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
	exec startx
fi

~/.xinitrc에는 다음과 같이 추가한다.

exec i3

다시 재부팅 후 해당 유저로 로그인을 하면 i3 config을 생성할건지와 win, alt중 어떤 키를 mod 키로 사용할건지 물어보는데 적절히 자기가 원하는 취향에 맞게 설정해주면 다음과 같은 화면을 볼 수 있다.

마우스도 안먹히고 키도 안먹히는 것 같지만 아래 key binding을 참고하면 중요한것을 볼 수 있다.

Mod+Return 조합으로 다음과 같이 터미널을 새로 열 수 있다.

Mod+h는 수직으로 분할, Mod+v는 수평으로 분할한다. 이렇게 분할된 윈도우들은 Mod+←, ↑, →, ↓로 포커스를 이동하고, Mod+Shift+←, ↑, →, ↓로 윈도우 자체를 이동할 수도 있다. Mod+f로 전체화면으로 전환하거나 Mod+1, 2, 3...으로 워크스페이스를 전환하는 등 유용한 기능들이 더 많지만 자세한 내용은 위 그림과 i3 - user guide를 참고하라.

마지막으로 위 과정을 모두 수행했으면 ~/.config/i3/config에 기본적인 i3 설정 파일이 생성되었을 것이다. 적절한 에디터로 해당 파일을 열어 #start dmenu 부분을 ... --no-startup-id rofi -show run으로 수정해주자. 이제 Mod+d를 누르면 임의의 프로그램을 터미널없이 실행시킬 수 있다.

5. yay & chrome 설치

Arch에는 커뮤니티 주도로 관리되는 Arch User Repository (AUR) 레포지토리가 있다. 아쉽게도 내장 패키지 관리자(pacman)로는 쓸 수 없고 AUR helper를 따로 써야 한다. helper 없이 직접 소스를 받아 설치하는 방법도 있지만 귀찮으니 미리 준비해두자.

여러 helper들이 있지만 가장 인기 많은 yay를 추천한다.

pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

설치는 위와 같이 한다. yay가 없으면 다른 AUR package들도 위와 같이 코드를 받고 직접 설치해야 하는데 여간 귀찮은 작업이 아닐 수 없다. 이번엔 yay를 가지고 google chrome을 깔아보자. 사용법은 pacman과 동일하다. yay -S google-chrome 면 된다.

이제 Mod+d로 rofi를 꺼내 google-chrome-stable을 실행하면 인터넷 브라우저를 볼 수 있다.

6. 한글 설정

(5)를 보면 한글이 깨지는 것을 볼 수 있다. 아직 한글 폰트가 없어서 그렇다. 한글 폰트는 AUR에 있기 때문에 yay전에 일부러 언급하지 않았다. yay -S ttf-nanumgothic_coding를 설치하고 크롬을 다시 켜보면 한글이 제대로 보인다.

그러나 아직 한글을 입력할 방법이 없다. 여러 입력기가 있지만 그 중 하나인 uim을 소개한다.

yay -S uim로 uim을 설치한다. 설치가 끝나면 uim-pref-gkt3로 설정창을 열자.

Global settings -> specify default IM 체크 -> Default input method: Byeoru
Global settings -> Enabled input methods Edit -> "Byeoru"만 남기기

이제 Shift+space로 한영키를 전환할 수 있다. 혹시 나처럼 CapsLock을 한영 전환키로 쓰고 싶다면 아래 작업도 같이 해주면 된다.

아까 열었던 설정창을 다시 열어 Byeoru key bindings 1에 들어가면 Byeoru on/off 키를 설정하는 것이 보인다. 근데 여기서 CapsLock을 눌러도 별다른 키가 인식되지 않을 수 있다. 키 설정이 필요하다.

먼저 /usr/include/linux/input-event-codes.h 에서 HANGEUL의 키코드를 알아낸다. 내 환경에선 122다.

그리고 CapsLock을 한번 눌러보고 journalctl을 실행한뒤 G를 누르면 Unknown key pressed.. Use 'setkeycodes 72 <keycode>'... 라는 메시지를 볼 수 있다.

scancode는 72, keycode는 122. 필요한 정보는 모두 얻었으니 설정만 해주면 된다.

sudo vim /etc/systemd/system/setkeycodes.service로 서비스를 하나 다음과 같이 생성한다.

[Unit]
Description=Change keycodes at boot

[Service]
Type=oneshot
ExecStart=/usr/bin/setkeycodes 72 122

[Install]
WantedBy=multi-user.target

그리고 sudo systemctl enable setkeycodes로 해당 서비스를 활성화 시킨 뒤 재부팅 해주자.

다시 설정창을 열어서 키설정을 해주면 CapsLock이 hangul키로 잘 인식되는 것을 확인할 수 있다. 이제 Mac에서처럼 CapsLock으로 한영 변환을 편하게 할 수 있다 :)

7. open-vm-tools 설치

가상머신을 쓸때 없어서는 안될 기능 두가지는

  1. 호스트 <-> 가상머신 간 클립보드 공유
  2. 가상머신 윈도우 크기에 맞춰 해상도 조절

이를 위해 yay -S open-vm-tools gtkmm3로 필요한 패키지를 설치해주자.

그리고

$ sudo systemctl enable vmtoolsd
$ sudo systemctl start vmtoolsd

$ sudo systemctl enable vmware-vmblock-fuse
$ sudo systemctl start vmware-vmblock-fuse

로 해당 서비스들을 활성화 시킨다.

그리고 i3 config을 열어 마지막에 exec --no-startup-id vmware-user-suid-wrapper를 추가해준뒤 재부팅한다.

이제 임의의 해상도로 쾌적하게 즐길 수 있다.

8. 기타 설정

위에서 추가로 해보면 좋을 것들로

  1. i3, i3status, terminal emulator, autologin, grub, editor 설정
  2. docker, pulseaudio, flameshot, guake, fzf 설치

가 있겠다.

0개의 댓글