아치리눅스 설치하기
설치 전 준비 작업
- 무선 네트워크 환경, SSD 2개, Windows11과 듀얼 부팅 환경이다.
- 아치리눅스 설치 전 파티션 작업 및 무선 네트워크 접속까지 마칠 것이다.
현제 내 시스템이 UEFI 부팅 환경인지 알아보기. (구형 PC가 아니라면 별 문제가 없을 것이다.)
$ ls /sys/firmware/efi
출력 결과에서 'efivars' 디렉토리가 보인다면 현재 UEFI 부팅 환경인 것이다.
현재 시스템에 설치되어 있는 SSD를 확인하기 위해 lsblk 명령어로 확인한다.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 5G 0 part
├─sda2 8:2 0 16G 0 part [SWAP]
└─sda3 8:3 0 217.5G 0 part /
nvme0n1 259:0 0 465.8G 0 disk
├─nvme0n1p1 259:1 0 100M 0 part /boot/efi
├─nvme0n1p2 259:2 0 16M 0 part
├─nvme0n1p3 259:3 0 465G 0 part
└─nvme0n1p4 259:4 0 644M 0 part
아치리눅스를 sda에 설치할 것이며, 파티션 작업 및 마운트가 되어 있기 때문에 같이 나오는 것이다. cfdisk 명령어로 파티션 분할 작업을 진행하면 된다. (sda에 아치리눅스를 설치할 것이고 nvme0n1에는 윈도우11이 설치되어 있다.)
cfdisk로 원하는 파티션 크기를 설정하면 된다.
$ cfdisk /dev/sda
분할한 파티션을 포맷한다.
$ mkfs.ext4 -j /dev/sda3 // 파티션 ext4로 포맷한다.
$ mkswap /dev/sda2 // 스왑파티션 생성
무선네트워크 연결하기
$ icwctl
[iwd]#
[iwd]# device list // 무선랜카드 이름을 확인한다.
[iwd]# station {랜카드 이름} scan // 연결 가능한 네트워크를 검색.
// 검색 결과값이 없을 수도 있다.
[iwd]# station {랜카드 이름} get-networks // 연결 가능한 SSID를 검색한다.
[iwd]# station {랜카드 이름} connect {SSID} // 원하는 SSID로 연결한다.
// 암호가 필요한 경우 암호 입력 메세지가 출력된다.
[iwd]# exit
$ ping -c 3 www.google.com // 네트워크 연결 유무룰 확인한다.
아치리눅스 기본 시스템 설치하기
'/etc/pacman.d/mirrorlist'를 수정해 패키지 미러사이트를 추가 또는 삭제할 수 있다. 설치 진행에 있어서 큰 체감을 느낄 수 없기 때문에 수정없이 진행할 것이다.
아치리눅스를 설치할 파티션을 마운트하고 base 패키지 설치
$ mount /dev/sda3 /mnt // 아치리눅스를 설치할 파티션을 /mnt로 마운트한다.
$ swapon /dev/sda2 // 생성한 스왑파티션을 사용하기 위한 명령어이다.
$
$ pacstrap -K /mnt base base-devel linux linux-firmware vim nano networkmanager
// networkmanager은 리눅스에서 인터넷 연결에 필요한 패키지이다.
UEFI 부팅을 위해 EFI 파티션 마운트하고 fstab 파일 만들기
# mkdir /mnt/boot/efi
# mount /dev/nvme0n1p1 /mnt/boot/efi // nvme0m1p1은 사용자마다 다르게 표시 될 수 있다.
# // lsblk 명령어를 통해 자신의 efi 파티션을 파악해두는 것이 좋다.
# genfstab -U /mnt >> /mnt/etc/fstab // 각 파티션을 UUID로 마운트하겠다는 의미이다.
// 참고: UUID vs partuuid로 검색
아치리눅스 내부 시스템으로 진입(변경)하기
# arch-chroot /mnt
# passwd // root 비밀번호 설정
아치리눅스 언어 환경 설정하기
# nano /etc/locale.gen // nano 대신 vim으로 대체 가능하다.
* locale.gen 파일에서 아래의 문장을 찾아 주석(#)을 찾아 제거한다.
#en_US.UTF-8
#ko_KR.UTF-8
변경사항 적용하기 위해 아래의 명령어를 입력한다.
# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8
호스트네임(PC이름) 설정 및 시간 동기화
# echo arch > /etc/hostname
# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localetime // 참고: 'TAB'키를 누르면 자동완성해준다.
# hwclock --systohc
일반 사용자를 추가하고 비밀번호 설정하기
# useradd -m -g users -G wheel -s /bin/bash {username}
# passwd {username}
root 또는 추가한 사용자 비밀번호를 만들지 않고 재부팅했다면, 아래와 같은 순서대로 하면 비밀번호를 재설정할 수 있다.
아치리눅스 설치 매체로 부팅 > 설치한 파티션 마운트 > 시스템 내부로 진입(arch-chroot) > passwd 명령어로 비밀번호 생성
* 참고: 비밀번호를 생성하지 않고 재부팅하면, 비밀번호가 임의로 설정되기 때문에 정상적인 방법으로는 이 비밀번호를 알 방법이 없다.
sudo 설치 및 셋팅
# pacman -S sudo
# EDITOR=nano visudo // 또는 EDITOR=vim visudo
#
// 아래의 문장을 찾아 주석(#)을 제거
# %wheel ALL=(ALL): ALL
Grub 설치
# pacman -S intel-ucode
# pacman -S grub efibootmgr os-prober intel-ucode
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch --recheck
// grub-install 명령은 EFI 파티션에 부팅 파일을 저장하기 위한 명령어이다.
// --bootloader-id={적당한 이름} 으로 하면 된다.
// 이후 /boot/efi/EFI을 보면 {적당한 이름} 디렉토리가 보일 것이다.
멀티 부팅 메뉴 적용
# nano /etc/default/grub // Windows와 듀얼부팅을 위해 Grub 설정 수정
//
// -------------------------
// #GRUB_DISABLE_OS_PROBER=false // 이 문장을 찾아 주석을 제거, 주석 해제를 하지 않으면 듀얼 부팅이 불가능하다.
// -------------------------
//
# grub-mkconfig -o /boot/grub/grub.cfg
마무리하고 재부팅하기
# systemctl enabel NetworkManager.service // 부팅후 네트워크 매니져가 실행될 수 있게 하기
#
# exit
# umount -lR /mnt
# reboot
지금까지의 과정 정리
$ ls /sys/firmware/efi // UEFI 부팅 여부 확인
// efivars 디렉토리가 보인다면 UEFI 부팅 상태이다.
$ lsblk // 아치리눅스를 설치할 장치명 확인
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 5G 0 part
├─sda2 8:2 0 16G 0 part [SWAP]
└─sda3 8:3 0 217.5G 0 part /
nvme0n1 259:0 0 465.8G 0 disk
├─nvme0n1p1 259:1 0 100M 0 part /boot/efi
├─nvme0n1p2 259:2 0 16M 0 part
├─nvme0n1p3 259:3 0 465G 0 part
└─nvme0n1p4 259:4 0 644M 0 part
$ cfdisk /dev/sda // 파티션 크기 및 갯수 설정
$ mkfs.ext4 -j /dev/sda3 // 파티션 ext4로 포맷한다.
$ mkswap /dev/sda2 // 스왑파티션 생성
$ icwctl
[iwd]#
[iwd]# device list // 무선랜카드 이름을 확인한다.
[iwd]# station {랜카드 이름} scan // 연결 가능한 네트워크를 검색.
// 검색 결과값이 없을 수도 있다.
[iwd]# station {랜카드 이름} get-networks // 연결 가능한 SSID를 검색한다.
[iwd]# station {랜카드 이름} connect {SSID} // 원하는 SSID로 연결한다.
// 암호가 필요한 경우 암호 입력 메세지가 출력된다.
[iwd]# exit
$ ping -c 3 www.google.com // 네트워크 연결 유무 확인
$ mount /dev/sda3 /mnt // 아치리눅스를 설치할 파티션을 /mnt로 마운트한다.
$ swapon /dev/sda2 // 생성한 스왑파티션을 사용하기 위한 명령어이다.
$
$ pacstrap -K /mnt base base-devel linux linux-firmware vim nano networkmanager
// networkmanager은 리눅스에서 인터넷 연결에 필요한 패키지이다.
# mkdir /mnt/boot/efi
# mount /dev/nvme0n1p1 /mnt/boot/efi // nvme0m1p1은 사용자마다 다르게 표시 될 수 있다.
# // lsblk 명령어를 통해 자신의 efi 파티션을 파악해두는 것이 좋다.
# genfstab -U /mnt >> /mnt/etc/fstab // 각 파티션을 UUID로 마운트하겠다는 의미이다.
// 참고: UUID vs partuuid로 검색
# arch-chroot /mnt
# passwd // root 비밀번호 설정
# nano /etc/locale.gen // nano 대신 vim으로 대체 가능하다.
// en_US.UTF-8, ko_KR.UTF-8을 찾아 주석을 제거
# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8
# echo {사용할 이름} > /etc/hostname // 피씨 이름 설정
# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localetime // 참고: 'TAB'키를 누르면 자동완성해준다.
# hwclock --systohc
# useradd -m -g users -G wheel -s /bin/bash {username}
# passwd {username}
# pacman -S sudo
# EDITOR=nano visudo // 또는 EDITOR=vim visudo
// %wheel ALL=(ALL): ALL을 찾아 주석(#)을 제거
# pacman -S intel-ucode
# pacman -S grub efibootmgr os-prober intel-ucode
# grub-install --target=x86_64-efi --bootloader-id=arch --recheck
// grub-install 명령은 EFI 파티션에 부팅 파일을 저장하기 위한 명령어이다.
// --bootloader-id={적당한 이름} 으로 하면 된다.
// 이후 /boot/efi/EFI을 보면 {적당한 이름} 디렉토리가 보일 것이다.
# pacman -S grub efibootmgr os-prober intel-ucode
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch --recheck
# nano /etc/default/grub // Windows와 듀얼부팅을 위해 Grub 설정 수정
// #GRUB_DISABLE_OS_PROBER=false을 찾아 주석을 제거
// 주석 해제를 하지 않으면 듀얼 부팅이 불가능하다.
# grub-mkconfig -o /boot/grub/grub.cfg
# systemctl enabel NetworkManager.service // 부팅후 네트워크 매니져가 실행될 수 있게 하기
#
# exit
# umount -lR /mnt
# reboot