Arch Linux
아치 리눅스는 데비안 및 레드햇 기반 배포판들과 비교했을 때 몇 가지 독특한 장점이 있다.
이 장점들은 주로 시스템 관리, 사용자 제어, 최신 소프트웨어 제공 등의 측면에서 부각된다.
레드햇 또는 데비안 계열 배포판에서는 사용자의 편의를 위해 더 많은 기본 패키지 및 기타 설정을 포함하고 있기 때문에
시스템을 직접 커스텀하려는 일부 유저들에게는 불필요한 요소들이 많이 포함되게 된다.
반면, 아치의 경우 설치부터 시작해서 쓸만한 하나의 운영체제가 될 때까지의 과정이 비교적 쉽지 않고, 오래 걸리기도 하지만
그로인해 리눅스 시스템의 전반적인 이해와, 성취감을 느낄 수 있는 장점이 존재한다.
또한, 웬만한 설정 파일은 한 번씩 사용자의 손을 거치기 때문에 추후 발생한 문제에 대한 트러블슈팅도 문제없이 풀어나갈 확률이 높다.
그러면서도 이러한 종류의 배포판들이 주로 사용하는 소스 컴파일 프로그램 인스톨 방식이 아닌
바이너리 인스톨 방식을 디폴트로 사용하여, 세팅과 프로그램 인스톨이 매우 편리하면서도 커스텀 유저들의 요구 사항들도 충족 시켜준다.
설치 준비
설치 전 살펴봐야할 부분
UEFI/BIOS 호환성
최근 대부분의 PC는 UEFI를 지원하고 있지만, 구형 시스템의 경우 BIOS(레거시) 모드일 수 있습니다. 설치 과정에서 부팅 모드 설정이 중요하므로 꼭 확인해주세요.
저장 공간
최소 20GB 이상을 확보해주세요. 서버에 설치할 소프트웨어에 따라 더 많은 공간이 필요합니다.
네트워크 연결
필수입니다. 유선 랜 연결이 가장 안정적인데, 무선 랜의 경우에는 설치 초기 단게에서 무선 관련 드라이버를 잡아줘야 합니다.
초기 설치 때에는 가급적 유선 랜을 이용하여 설치해주세요.
그래픽 카드
추후 GUI를 구성할 예정이라면 장착된 그래픽 카드의 독점 드라이버를 설치해줘야 합니다.
(예시. NVIDIA GTX 1060 -> NVIDIA 관련 그래픽 드라이버)
부팅 USB 제작하기
ISO 파일 다운로드하기
- 아래 링크로 가서 South Korea라고 써있는 항목을 찾은 후 나열 되어있는 목록 중 최신 버전의
.iso
파일을 다운로드 받도록 합시다. - https://archlinux.org/download/
부팅 USB 제작하기
- 다운로드한 ISO 파일을 사용하여 부팅 가능한 USB 드라이브를 만들어줘야 해요.
- Windows: Rufus, Ventoy
- Linux/MacOS:
dd
, Ventoy
시스템 설치
1. 부팅 모드 (UEFI/BIOS) 확인
먼저 UEFI
설치가 가능한지 확인해볼게요.
UEFI
냐 BIOS
냐에 따라 설치 방법과 설치되는 파티션이 달라지므로 꼭 확인해야 합니다.
BIOS
로 부팅된 경우, 디스크 타입이 MBR로 설정해야 하고, 필요로 하는 파티션이 달라집니다.UEFI
로 부팅된 경우, 기본적으로 권장하는 설치 설정은 디스크 타입을 GPT로 설정해야 하고, 반드시 ESP 파티션을 가지고 있을 것을 요구해요.
부팅 USB로 부팅하셨다면 UEFI를 확인해봅시다.
ls /sys/firmware/efi/efivars
해당 명령어 실행 시 오류가 없다면, 시스템이 정상적으로 UEFI 모드로 부팅한 것이에요.
만약 디렉토리가 존재하지 않는다면 시스템이 BIOS모드로 부팅했을 가능성이 있으니 사용자의 메인모드를 확인해봅시다! (본 포스팅은 부팅 모드가 UEFI일 때에만 정상적으로 진행이 가능하니 참고해주세요.)
2. 인터넷 연결 점검
부팅이 정상적으로 되었다면, 제일 먼저 인터넷 연결을 확인해야 합니다.
인터넷 랜선이 서버와 유선으로 연결되어 있다면 자동 연결이 되지만, 무선 와이파이의 경우 수동으로 잡아줘야 합니다.
무선 와이파이를 연결하는 방법은 다음과 같습니다.
# iwctl 명령어를 사용하여 Wi-Fi에 연결해주세요.
iwctl
# 사용 가능한 장치가 있는지 확인해주세요.
[iwd]$ device list
# Wi-Fi를 스캔해봅시다.
[iwd]$ station <연결할 무선 랜카드 이름> scan
# 네트워크 목록 확인해볼게요.
[iwd]$ station <연결할 무선 랜카드 이름> get-networks
# Wi-Fi 연결을 해봅시다.
[iwd]$ station <연결할 무선 랜카드 이름> connect <연결할 네트워크 이름>
# 연결 상태 점검!
[iwd]$ ping archlinux.org
3. 시스템 시간 설정
정확한 시간 설정은 시스템 로그 및 여러 작업에 매우 중요하므로, 거주 중인 지역으로 타임존을 설정하여 현재 시간대와 꼭 동기화 해주세요.
timedatectl set-ntp true
timedatectl set-timezone Asia/Seoul
4. 디스크 파티션 구성
가장 중요하고 신중해야 하는 단계 중 하나입니다!
본 포스팅은 UEFI 시스템을 기준으로 설명할거에요
(BIOS 시스템은 MBR 파티션 테이블과 약간 다른 파티션 구성이 필요합니다.)
4-1. 구획 설명
디스크 파티션 구성할 때 어떠한 절차로 진행되는지 간략하게 짚고 넘어가볼게요.
파티션은 대용량 저장 장치(흔히 하드라 부릅니다.)를 어떠한 목적으로 나누어 사용할지에 대해 결정하는 순서입니다.
일반적으로는 다음과 같이 세 파트로 나뉘어요.
- 부팅을 위한 구획
- 데이터들이 저장될 구획
- 스왑 구획
먼저 부팅을 위한 구획에 대해 알아볼게요.
현재 내 부팅 모드가 UEFI
이고. 이대로 설치를 진행하려는 경우에는
ESP
라고 하여 EFI System Partitions
으로 설정해야 합니다.
ESP는 EFI System으로 타입이 설정된, FAT 파일 시스템으로 포맷된 파티션을 의미합니다.
(boot 폴더에 마운트 될 파티션을 말합니다.)
두번째로 데이터들이 저장될 구획에 대해 알아볼게요
해당 구획은 단순하게 Linux File System
이라는 타입으로 사용할 예정입니다.
이 두번째 파티션은 /(=root)
에 마운트 되어 모든 데이터가 저장될 구역이라고 생각하시면 됩니다.
마지막 스왑 구획에 대해 알아볼게요
해당 구획에 대한 파티션 역시 이름처럼 Linux Swap
이라는 타입을 붙이면 되겠습니다.
이 과정은 드라이브의 구획을 나누고 계획을 잡아두는 것 으로 실제 그 계획에 맞는 환경을 만드는 것은 다음 단계인 포맷에서 진행됩니다.
4-2. 파티션 설정하기
이제 본격적으로 디스크 파티션을 구성해보도록 하겠습니다.
cfdisk
1. 사용할 디스크 확인하기
lsblk
또는 fdisk -l
명령어로 설치할 디스크 장치 이름을 확인해야 합니다.
fdisk -l
lsblk
대용량 장치가 여러개일 경우 sda
, sdb
, sdc
.. 순으로 출력됩니다.
부팅을 위해 마운트한 USB가 아닌지 확실하게 확인하셔야 합니다. 보통 용량으로 확인하시면 별 문제 없을 겁니다.
그리고 다음 단계로 넘어가기 전에 파티션 용량을 어떻게 분배할지 생각해보고 넘어가시는 것을 추천드립니다.
2. 파티션 도구 실행
cfdisk [디스크 장치 이름]
# 예시
cfdisk /dev/sda
cfdisk
/ gdisk
둘 중에 한가지를 선택하셔서 진행하시면 되는데요.
초보자는 기본적인 표 형태의 인터페이스를 제공하는 cfdisk
를 추천하지만, 커맨드라인에 익숙하다면 gdisk
를 사용해보세요.
3. 파티션 테이블 선택
GPT(=GUID Partition Table)
: UEFI 시스템에서 권장되는 현대적인 파티션 테이블 방식입니다.
📢 Why GPT?
MBR(Master Boot Record) 방식보다 더 큰 디스크 용량을 지원하고, 더 많은 주 파티션을 생성할 수 있으며, 데이터 손상에 더 강합니다.
4. 파티션 구성 예시 (UEFI 시스템 기준)
본격적으로 파티션 구성을 하기 이전에 구성에 대한 예시를 표로 정리해봤습니다.
마운트 지점 (용도) | 파일 시스템 | 크기 | 유형 (cfdisk) / 코드 (gdisk) | 설명 |
---|---|---|---|---|
/dev/sda1 (부트로더) |
FAT32 | 512MB ~ 1GB | EFI System (EF00) | UEFI 펌웨어가 부트로더를 로드하는 데 사용되는 파티션입니다. 반드시 FAT32로 포맷해야 합니다. |
/dev/sda2 [SWAP] (스왑 공간) |
linux-swap | RAM 크기와 동일 또는 2배 | Linux swap (8200) | RAM이 부족할 때 하드 디스크의 일부를 RAM처럼 사용하는 공간입니다. (선택 사항이지만 권장) |
/dev/sda3 / (루트) |
ext4 (또는 btrfs, xfs 등) | 나머지 전체 공간 (또는 원하는 크기) | Linux filesystem (8300) | 시스템 파일, 프로그램 등이 설치되는 기본 파티션입니다. |
/dev/sda4 /home (홈) (선택 사항) |
ext4 (또는 btrfs, xfs 등) | 원하는 크기 | Linux filesystem (8300) | 사용자 데이터(문서, 사진, 설정 등)를 저장하는 공간입니다. 루트 파티션과 분리하면 재설치 시 데이터를 보존하기 용이합니다. |
파티션을 위처럼 나눈 이유?
- EFI 시스템 파티션 (
/dev/sda1
): UEFI 펌웨어가 부팅 파일을 찾기 위한 표준 규격입니다. - 스왑 파티션: 메모리가 부족할 때 시스템 안정성을 높여줍니다. SSD의 경우 과도한 스왑 사용은 수명에 영향을 줄 수 있으므로 사용 빈도와 크기를 고려해야 합니다. 최신 시스템에서는 RAM 용량이 충분하다면 스왑 파일을 사용하는 방법도 있습니다.
- 루트 파티션 (
/
): 운영체제의 핵심 파일들이 위치하는 곳입니다. - 홈 파티션 (
/home
): 사용자 개인 파일을 분리하여 관리하면 시스템 재설치 시 개인 데이터를 안전하게 보존할 수 있고, 백업도 용이합니다.
5. 파티션 할당하기
먼저 첫번째로 부트 파티션을 생성해보도록 하겠습니다.
512MB 정도의 용량을 할당하도록 할게요.
'NEW’선택
용량 크기를 입력
'TYPE’으로 커서를 옮긴 후 엔터
'EFI System’을 선택.
이 부분은 EFI System
이라 주로 파일을 저장하는 파티션이 아니니 용량을 크게 잡아줄 필요가 전혀 없습니다.
사실 512MB
할당한 것도 딱 적당한 수준이에욧
두번째로 만들 파티션은 swap 파티션입니다.
방향키를 아래로 내려 free space
를 향하게 하면 아래에 다시 new
버튼이 보일겁니다.
스왑도 주기억장치(RAM)처럼 2G, 4G 정도로 잡는게 좋습니다.
'NEW’
용량 크기를 입력
'TYPE’으로 ‘Linux Swap’
세번째로 만들 파티션은 home 파티션입니다. 해당 파티션을 만들지 않고 바로 루트 파티션을 생성하셔도 되는데요.
저는 홈 파티션도 생성해주도록 하겠습니다. 홈 파티션에는 15GB만 할당할게요.
```shell
'NEW’
용량 크기를 입력
'TYPE’으로 ‘Linux Filesystem’
마지막으로 만들 파티션은 루트 파티션입니다.
남아있는 용량 전체를 할당해주시면 돼요.
‘NEW’ 선택
용량 크기는 디폴트가 남아있는 최대 크기로 설정 되어있는지 확인해주고 그냥 ‘엔터’
'TYPE’은 ‘Linux FileSystem’
‘WRITE’를 선택
'QUIT’선택
gdisk
바로 상단의 cfdisk를 이용하신 분들은 이 파트는 넘어가시면 됩니다.
아래 명령어에 디스크 경로가 포함되는데 본인 환경에 맞는 것을 입력하시면 됩니다.
gdisk <디스크 이름>
# 예시
gdisk /dev/sda
모든 파티션은 ‘Primary’로 잡습니다.
이 유틸은 퍼스트 섹터와 라스트 섹터를 물어보는데 퍼스트 섹터에서 라스트 섹터에 해당하는 값을 입력을 하지 않도록 주의하시면서 천천히 진행하시기 바랍니다.
'o’를 입력 — 모두 지우고
(/dev/sda1 생성을 위해)
'n’ 입력 (New)
첫 번째 파티션이므로 ‘엔터’
(default가 1로 되어있는지 확인/아닐 경우 ‘1’을 입력)
첫 번째 섹터는 알아서 계산해주므로 ‘엔터’
라스트 섹터는 용량으로 입력 가능하므로 ‘+512mb’입력
파일시스템 코드로 ‘EF00’ 입력
'p’를 통해 제대로 나뉘었는지 확인
(표의 형태로 출력됨. /dev/sda1, EF00(혹은 EFI System), 512mb를 확인)
다시 ‘n’입력으로 /dev/sda2 생성 시작
기본 값으로 ‘2’가 되있는지 확인 후 ‘엔터’
첫 번째 섹터는 기본값대로 ‘엔터’
용량으로 입력 ‘+4G’
파일 시스템 코드로 ‘8200’ 입력
'p’를 통해 재확인후
/dev/sda3 생성을 위해 'n’
기본 값으로 ‘3’이 되있는지 확인 후 ‘엔터’
첫 번째 섹터는 기본값대로 ‘엔터’
이번엔 마지막 섹터까지 사용할 예정이므로 ‘-1’을 입력
파일 시스템 코드로 ‘8300’ 입력
마지막으로 ‘w’를 입력해서 ‘write
5. 파티션 포맷
포맷은 위에서 진행한 파티션 각각의 계획에 맞는 파일시스템으로 진행해주세요.
UEFI
환경에서 부팅 파티션은 FAT32
파일시스템을 원합니다.
따라서 아까 EFI 시스템으로 파티션을 계획했던 /dev/sda1
은 FAT32
로 포맷할 것이고,
기본 파일 시스템으로 쓰기로 했던 /dev/sda3
, /dev/sda4
는 최근 가장 범용으로 쓰이는 ext4
파일 시스템으로 포맷하면 됩니다.
스왑 파티션은 바로 다음 단계에서 포맷합니다. /dev/sda2
를 포맷하지 않도록 주의해주세요!
mkfs.vfat -F32 /dev/sda1
mkfs.ext4 -j /dev/sda3
mkfs.ext4 -j /dev/sda4
6. 스왑 생성
스왑 드라이브를 만들어주겠습니다.
스왑드라이브는 위의 포맷과 유사한 명령어를 수행한 이후, 켜주는 과정을 추가로 거칩니다.
아래 명령어에 디스크 경로가 포함되는데 본인 환경에 맞는 것을 입력해주세요
저는 /dev/sda2
파티션이 스왑 파티션이었습니다.
mkswap /dev/sda2
swapon /dev/sda2
7. 마운트하기
마운트는 저장 장치에 접근할 수 있는 경로를 디렉토리 구조에 편입시키는 작업을 의미합니다.
지금은 루트 폴더와 루트 아래의 부트 폴더, 그리고 홈 폴더만 마운트하면 됩니다.
아래 명령어에 디스크 경로가 포함되는데 본인 환경에 맞는 것을 입력해주세요.
# 루트 파티션 마운트
mount /dev/sda3 /mnt
# EFI 시스템 파티션 마운트 (부트 디렉토리 생성 후 마운트하기)
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
# 홈 파티션 마운트 (홈 디렉토리 생성 후 마운트하기 , 홈 파티션 만든 경우에만 진행)
mkdir /mnt/home
mount/dev/sda4 /mnt/home
8. 미러 리스트
미러 리스트는 아치에서 패키지 설치를 할 때 기본 데이터 베이스로 활용할 웹 서버를 나열해놓은 리스트입니다.
미러 리스트에 내가 사용할 서버가 가깝거나, 속도가 가장 빠르게 접속되는 것으로 적용되어 있어야 설치 환경에서 유리하겠죠?
이러한 이유로 미러 리스트 서버가 적힌 리스트를 수정해줘야 해요.
#vim -w /etc/pacman.d/mirrorlist
그리고 적기위해 'a' 키 누른다.
그리고 맨 위에 대한민국 서버 리스트를 적어줍시다.
Server = http://ftp.harukasan.org/archlinux/$repo/os/$arch
Server = https://ftp.harukasan.org/archlinux/$repo/os/$arch
Server = http://ftp.lanet.kr/pub/archlinux/$repo/os/$arch
Server = https://ftp.lanet.kr/pub/archlinux/$repo/os/$arch
Server = http://mirror.premi.st/archlinux/$repo/os/$arch
각 줄이 (~~~~)/$repo/os/$arch
로 끝나야 합니다! 철자 주의해주세요.
9. pacstrap
이번 단계에서는 본인에게 필요하다고 생각이 드는 패키지들을 아래 명령어에 추가하여 작성해주시면 됩니다.
첫줄은 기본이고 이 줄 뒤에 그 다음에 제시한 파일들을 여러개 제시하면 됩니다.
pacstrap /mnt base linux linux-firmware
nano(vim을 선택하실 분들은 제외)
vim(nano만 쓰실 분들은 제외, 둘다 선택 가능)
dhcpcd(networkmanager를 선택하실 분들은 제외)
networkmanager(dhcpcd를 선택하신 분들은 제외) -> 초보자들에게 추천드립니다
base-devel(대부분의 사용자는 필요할 것으로 예상)
man-db
man-pages
texinfo
dosfstools
e2fsprogs(여기까지는 대부분의 사용자에게 권장)
mdadm(lvm 구성할 예정이시라면 설치해주세요.)
lvm2
10. fstab 생성
시스템이 부팅될 때 어떤 파티션을 어디에 마운트할지 알려주는 설정 파일입니다.
genfstab -U /mnt >> /mnt/etc/fstab
-U 옵션
: UUID (Universally Unique Identifier)를 사용하여 파티션을 식별합니다.- 장치 이름(예:
/dev/sda1
) 대신 UUID를 사용하면 디스크 순서가 바뀌어도 파티션을 정확하게 찾을 수 있어 더 안정적입니다.
- 장치 이름(예:
- 왜 fstab을 생성하는가?
- 이 파일이 없으면 시스템이 부팅될 때 루트 파티션 외의 다른 파티션들(예:
/boot
,/home
,스왑 파티션
)을 자동으로 마운트하지 못합니다. 수동으로 마운트해야 하는 번거로움이 생기며, 시스템이 정상적으로 작동하지 않을 수 있습니다.
- 이 파일이 없으면 시스템이 부팅될 때 루트 파티션 외의 다른 파티션들(예:
아치 리눅스 진입
11. 루트로 아치 리눅스 진입하기
arch-chroot /mnt
시스템 내부로 들어오는 명령어 입니다. 아치 시스템에 접근한 후에 추가적인 설정을 해줄거에요.
참고로 소프트웨어는 여기와서 설치하셔도 무방합니다. usb의 아치리눅스 라이브에 들어온 것이라 설치 후에도 패키지가 남아있습니다.
12. 인터넷 확인
간혹 진입 전에는 인터넷이 잘되다가 진입 후에 갑자기 안되는 경우가 있어요. 확인해줍시다.
ping -c 3 www.google.com
13. 루트 비밀번호 설정
passwd
root 계정의 비밀번호를 설정해줘요.
14. Locale 설정
vim -w /etc/locale.gen
파일이 뜨면 화살표 키를 이용해 아래로 내려가 ‘en_US.UTF-8’
을 찾습니다. 'a'를 눌러 INSERT모드에 진입하시고 앞의 주석(‘#’)만 제거해주세요. 그리고 esc, :wq 입력 , ‘엔터’ 입니다.
locale-gen
15. 언어 설정
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
위 명령을 실행하여 현재 사용중인 쉘 환경(/bin/bash
)에서의 언어를 선언해줍시다.
16. 호스트네임 설정
echo <원하는이름> /etc/hostname
17. 하드웨어 시간 설정
휴대폰 등의 별도 디바이스를 통해 구글에 ‘current utc time’을 검색해 현재 utc 시간을 확인합니다. 아래 명령어를 utc 시간을 입력합니다. 순서는 (월일시분연도) 입니다.
예를 들어, 2024년 07월 20일 15시 30분은 ‘#date 072015302024’로 입력됩니다.
date (MMDDHHmmYYYY)
hwclock --systohc --utc
18. 로컬 타임 설정
하드웨어 시간을 utc
로 변경했으니 이제 한국 시간으로 맞춰줍시다.
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
19. 일반 사용자 추가
아래 명령어의 name
부분에 추가할 사용자 이름을 입력해주세요.
useradd -m -g users -G wheel -s /bin/bash (name)
그리고 passwd
뒤에 생성한 유저명을 적어 비밀번호를 바꿔줍시다.
passwd <name>
20. sudo 설정
sudo가 설치되지 않은 경우, pacman -S sudo
를 통해 설치합니다.
sudo 명령어 가능자에 본인을 추가하겠습니다.
sudoers 파일은 vim /etc/sudoers
커맨드로도 수정이 가능하지만,
원칙은 visudo
를 통해 수정하는게 맞습니다.
visudo
가 sudoers
파일의 문법적 오류 등을 점검하고 잠금하는 기능을 하기 때문에 임의로 vim /etc/sudoers
를 직접 수정하는 것은 권장하지 않습니다.
이제 내려가서 몇 가지를 수정해주시면 돼요.
##
## User privilege specification
##
root ALL=(ALL) ALL
## Uncomment to allow members of group wheel to execute any command
# %wheel ALL= (이렇게 주석처리 되있던 것을)
%wheel ALL= ('#'을 지워서 이렇게되도록 주석 제거 처리 해주면 됩니다.)
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
(위 설정은, wheel그룹이 '비밀번호도 필요없이' sudo만 붙이면 명령 실행이 가능하도록 합니다. 보안상의 이유로 강하게 비추천합니다. 어떤 변경을 하는 것인지 정확히 알고 계시는 분만 주석 제거하시기 바랍니다.)
21. 부트로더 설치
부트로더 설치에는 2가지 방법이 있습니다.
- 1. Grub을 사용해 부트
- 2. systemd-boot라는 systemd에 내장된 기능을 이용해 부트
grub 사용
설치 전에 레포지토리(아치리눅스 측 패키지 저장소)와 로컬 레포지토리(설치 중인 컴퓨터가 가진 패키지들의 정보)를 업데이트 및 동기화해줍시다.
pacman -Syu
pacman -S grub efibootmgr
이제 부트가 가능하도록 grub
을 설치할게요.
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch --recheck
추가적으로 vim -w /etc/default/grub
등을 통해, 부트로드의 기본 설정을 변경할 수 있습니다.
예를 들어, 부팅할 OS선택을 기다릴 시간을 0 또는 1초 처럼 짧게 변경하거나 할 수 있습니다. 초보자는 건드리지 않습니다.
설정이 완료된 경우, /etc/default/grub
을 기반으로 부팅을 위한 ‘파일’을 생성/설치합니다.
grub-mkconfig -o /boot/grub/grub.cfg
systemd-boot 사용
grub을 사용하지 않는 분들에게만 해당됩니다.
bootctl --path=/boot install
/boot/loader
의 /loader.conf
파일을 수정해야 합니다.
vim -w /boot/loader/loader.conf
그리고 파일을 다음과 같이 작성해주세요.
default arch
editor 1
timeout 3
디폴트 이후 arch에는 본인이 알아볼 이름을 넣으시면 됩니다. 보통은 arch를 이용합니다.
다만, 주의하실 점은 이 부분에 넣은 이름을 꼭 기억하셨다가 바로 뒤에 따라오는 과정에서 entries/abcd.conf
파일의 abcd에 동일하게 작성해 주셔야 한다는 점입니다. 지금 arch로 작성하시면 나중에 그냥 entries/arch.conf
파일을 만드시면 됩니다.
이제 로더 폴더 아래의 entries 폴더에 파일을 생성하고 수정하겠습니다.
vim -w /boot/loader/entries/arch.conf
아까 디폴트에 적었던 이름으로 파일을 생성해주시면 됩니다.
예를 들어, arch
가 아닌 linux
로 했다면 linux.conf
로 바꿔 적으시면 됩니다.
그리고 파일에 다음과 같이 작성해주세요.
title ArchLinux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/sda3 rw
22. exit
이제 chroot
환경에서 나가서 재부팅하는 단계입니다.
그러나! 지금 바로 재부팅 하지 마세요
재부팅 후 네트워크가 안잡히는 경우가 있기 때문에 마지막으로 네트워크를 잡아준 후 재부팅해주겠습니다.
여기서
(1) dhcpcd만을 사용하실 분,
(2) 데스크탑 사용자 중에서 Gnome, Plasma 등의 데스크탑 환경을 사용하지 않을 예정이신 분들이나,
(3) 유선 연결만 사용하시는 분들,
(4) networkmanager가 무엇인지 정확이 이해하고 있지만 사용하지 않기로 결정하셨던 분들은
systemctl enable dhcp
이 명령어를 입력해주고
그렇지 않고
(1) 노트북 사용자이거나,
(2) networkmanager의 편리한 기능을 활용하고 싶으신 분들,
(3) Gnome/Plasma처럼 networkmanager와 가깝게 개발되어 있는 데스크탑 환경을 사용하고자 하시는 분들은
systemctl enable NetworkManager.service
이 명령어를 입력해주세요.
그리고 exit
명령어를 통해 chroot
환경에서 빠져나옵시다!
23. umount
umount -lR /mnt
각 디렉토리에 마운트된 장치들을 모두 해제해주세요.
24. reboot
reboot
이제 마지막! 재부팅 해줍시다!
다시 켜지는 시점에는 설치 usb를 제거해주시면 됩니다.
이 이후에는 뭘 합니까?
현재 재부팅 후 접속하면 아무것도 없는 까만 화면의 cli를 접하시게 될텐데요.
지금 이 상태가 익숙하다면 그대로 서버를 운영하시면 되고,
GUI를 설치하고 싶다면 다음 단계들을 따라와주세요!
GUI 종류
찾아보시면 GUI에도 참 많은 종류의 DE(Desktop Environment), WM(Window Manager)가 있다는 것을 아실텐데요.
거기서 사람들이 자주 사용하는 DE,WM 종류에 대해서 알아보고 설치도 진행해보도록 하겠습니다.
DE (Desktop Environment)
- 데스크톱 환경: 창 관리자, 패널, 아이콘, 파일 관리자 등 통합된 데스크톱 환경을 제공합니다.
KDE Plasma (강력 추천)
- 이유: 매우 아름답고 현대적인 인터페이스를 제공하며, 사용자 정의 옵션이 풍부하여 사용자가 원하는 대로 거의 모든 것을 바꿀 수 있습니다. 기능이 많지만 최근에는 최적화가 잘 되어 비교적 가볍고 빠릿한 성능을 보여줍니다.
- Wayland 지원도 꾸준히 개선되고 있습니다. Arch Linux 사용자들 사이에서 인기가 매우 높습니다.
- 패키지: plasma-meta (기본 세트) 또는 plasma (더 많은 KDE 애플리케이션 포함)
GNOME
- 이유: 단순하고 현대적인 디자인을 추구하며, 사용하기 쉽습니다. Wayland를 기본으로 잘 지원하며, 터치스크린 환경에도 비교적 잘 어울립니다. 다만, 확장 기능을 통해 커스터마이징해야 하는 부분이 많고, KDE Plasma에 비해 무겁다는 인식이 있습니다.
- 패키지: gnome
Xfce
- 이유: 가볍고 빠르며 안정적입니다. 오래된 하드웨어나 저사양 시스템에서도 쾌적하게 작동합니다. 전통적인 데스크톱 인터페이스를 선호하는 사용자에게 적합합니다. 커스터마이징도 어느 정도 가능합니다.
- 패키지: xfce4 xfce4-goodies (추가 플러그인 및 유틸리티)
Cinnamon
- 이유: Linux Mint의 기본 DE로, 전통적인 Windows와 유사한 인터페이스를 제공하여 Windows 사용자에게 친숙합니다. GNOME 3 기반이지만 사용 편의성에 중점을 둡니다.
- 패키지: cinnamon
<br.
WM (Window Manager)
- 윈도우 매니저: 창을 관리하는 기능만 제공하며, 사용자가 직접 패널, 독 등을 구성해야 합니다. 더 가볍고, 키보드 중심의 작업 환경을 선호하는 고급 사용자들이 주로 사용합니다.
-i3wm (또는 i3-gaps)
- 이유: 타일링 창 관리자로, 창을 자동으로 배열해주어 마우스 사용을 최소화하고 키보드만으로 효율적인 작업이 가능합니다. 설정이 간단한 텍스트 파일로 이루어져 커스터마이징이 용이합니다. 매우 가볍습니다.
- 패키지: i3-wm 또는 i3-gaps (창 사이에 간격을 둠)
Sway
- 이유: i3wm과 호환되는 Wayland 기반 타일링 컴포지터입니다. i3wm의 장점을 그대로 가져오면서 Wayland의 이점을 누릴 수 있습니다.
- 패키지: sway
<br.
AwesomeWM
- 이유: Lua 스크립트로 고도의 커스터마이징이 가능한 타일링 창 관리자입니다. 유연성이 매우 높지만, 설정 난이도가 다소 있습니다.
- 패키지: awesome
GUI 설치하기
저는 KDE Plasma
를 설치해보도록 할게요.
1. Xorg (디스플레이 서버) 설치: Wayland를 사용하지 않는 대부분의 DE/WM은 Xorg가 필요합니다.
sudo pacman -S xorg-server xorg-apps xorg-xinit
Xorg는 리눅스에서 GUI 환경을 표시하고 입력 장치(키보드, 마우스)를 관리하는 기본적인 시스템입니다. DE나 WM은 이 Xorg 위에서 동작합니다.
2. KDE Plasma 설치
sudo pacman -S plasma-meta konsole dolphin
plasma-meta
: KDE Plasma 데스크톱의 핵심 구성 요소를 설치하는 메타 패키지입니다.konsole
: KDE의 기본 터미널 에뮬레이터입니다.dolphin
: KDE의 기본 파일 관리자입니다.- 왜 이 패키지들을 설치하는가? plasma-meta는 기본적인 데스크톱 환경을 제공하고, konsole과 dolphin은 GUI 환경에서 가장 자주 사용되는 터미널과 파일 관리자이기 때문에 함께 설치하는 것이 편리합니다.
3. 디스플레이 매니저 (로그인 화면) 설치 및 활성화
SDDM은 KDE Plasma와 잘 어울리는 디스플레이 매니저입니다.
sudo pacman -S sddm
sudo systemctl enable sddm
디스플레이 매니저는 부팅 후 그래픽 로그인 화면을 제공하고, 사용자가 로그인하면 선택한 데스크톱 환경을 시작시켜주는 역할을 합니다. systemctl enable sddm은 부팅 시 SDDM 서비스가 자동으로 시작되도록 합니다.
4. 재부팅
sudo reboot
재부팅하면 SDDM 로그인 화면이 나타나고, 사용자 계정으로 로그인하면 KDE Plasma 데스크톱 환경이 시작됩니다.
필수 패키지 설치 (한글 지원)
한글 글꼴
sudo pacman -S noto-fonts-cjk
한글 입력기
sudo pacman -S fcitx5-im fcitx5-hangul fcitx5-configtool
한글 입력기 설치 후, 환경변수 설정
sudo vim /etc/environment
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
재부팅하거나 재로그인하면 적용됩니다. Fcitx5 설정 도구를 실행하여 한글 입력기를 추가하고 단축키 등을 설정할 수 있습니다.
[번외] 부트로더 변경하기 (grub -> systemd-boot)
초기에 부트로더를 grub
으로 설정하였으나, 아치를 운영하면서 systemd-boot
부트로더로 변경하고 싶은 생각이 문득 들었습니다!
그래서 이번 챕터에서는 grub
부트로더를 systemd-boot
부트로더로 변경하는 방법에 대해서 알아보겠습니다.
먼저 작업하기 전에 확인해야 할 목록이 있습니다.
1. UEFI 부팅 여부 확인하기
ls /sys/firmware/efi
systemd-boot
부트로더는 BIOS 모드에서 지원되지 않습니다! UEFI 모드인지 먼저 확인해주세요.
2. EFI 시스템 파티션(ESP) 확인
현재 ESP가 어디에 마운트되어 있는지 확인해야 합니다.
findmnt /boot
findmnt /efi
출력에서 TYPE=vfat
인 파티션이 ESP입니다.
TARGET SOURCE FSTYPE OPTIONS
/boot /dev/sda1 vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro
저는 /dev/sda1
에 ESP가 마운트되어 있습니다.
이제 사전에 확인해야 할 목록은 전부 점검이 끝났습니다.
그럼 부트로더를 변경하러 가봅시다!
3. GRUB 제거 (선택적)
기존에 설치한 grub
부트로더를 삭제할겁니다.
꼭 삭제해야만 하는건 아니지만 깔끔하게 정리하기 위해서 전 삭제를 하겠습니다.
sudo pacman -Rns grub
4. systemd-boot 설치하기
systemd-boot
는 systemd
패키지에 설치되어 있으므로, 별도로 설치할 필요는 없습니다.
단순히 bootctl
명령어를 통해 설치를 진행합니다.
sudo bootctl install
위 명령어는 /boot/EFI/systemd
아래에 부트로더 파일을 설치하고, EFI 부트 항목을 생성합니다.
성공하면 이런 메시지가 나올거에요!
Created "/boot/EFI/systemd/systemd-bootx64.efi".
Created "/boot/loader/loader.conf".
5. /boot/loader/loader.conf
설정하기
sudo vim /boot/loader/loader.conf
아래 내용을 입력하세요.
default arch
timeout 3
editor no
6. 부팅 항목 entry 파일 생성
sudo vim /boot/loader/entries/arch.conf
아래 내용처럼 작성하기.
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=UUID=루트UUID rw
여기서 루트UUID
는 루트 디렉토리의 UUID를 입력하셔야 해요!
루트 UUID는 다음 명령어로 확인 가능합니다!
lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1 vfat FAT32 xx-xx-xx 335.4M 31% /boot
├─sda2 swap 1 xx-xx-xx-9399-5988bb656157 [SWAP]
├─sda3 ext4 1.0 xx-xx-xx-8d6d-ec32b8863287 11.1G 13% /
└─sda4 ext4 1.0 xx-xx-xx-86a8-23f2a29559f8 31G 0% /home
sr0 iso9660 Joliet Extension ARCH_202406 2024-06-01-09-07-18-00
제 경우에는 sda3
이 루트 파티션이네요! 해당 파티션의 UUID를 위 설정 파일에 입력하시면 되겠습니다~
7. 재부팅 및 확인
sudo reboot
재부팅 후 systemd-boot
메뉴가 뜨고, 정상적으로 Arch linux로 부팅된다면 성공입니다~
부팅이 성공되고 나서 아래 명령어를 실행해 부트로더가 정상적으로 변경되었는지 확인해보세요!
bootctl status
System:
Firmware: UEFI 2.70 (American Megatrends 5.17)
Secure Boot: disabled
TPM2 Support: yes
Boot Loader: systemd-boot 256
...
Default Boot Loader Entry:
title: Arch Linux
id: arch.conf
source: /boot/loader/entries/arch.conf
트러블슈팅
Proxmox Secure boot 이슈
Proxmox에서 VM에 아치 리눅스를 UEFI 모드로 설치하려고 BIOS를 UEFI
로 변경 후 부팅하였더니 다음과 같은 에러가 발생하였습니다.
failed to load boot0001 uefi qemu: access denied
이는 일반적으로 UEFI 펌웨어가 부팅 항목을 제대로 설정하지 못하거나, 권한 문제로 EFI 파일을 불러오지 못할 때 발생합니다
제 경우에는 다음과 같은 방법으로 해결되었습니다.
보안 부팅 (Secure Boot) 비활성화
Proxmox의 OVMF에서 Secure Boot가 활성화되어 있으면 UEFI 부팅이 거부될 수 있습니다.
EFI 디스크를 추가했으면, Secure Boot 설정을 끌 수 있는 옵션이 VM BIOS 설정에 생깁니다.
부팅 시 ESC 키를 눌러 OVMF 메뉴 → Device Manager → Secure Boot Configuration → Secure Boot [Disable]