검은 천사의 블로그

아치리눅스 +1

설치 전 준비 작업 

- 무선 네트워크 환경, 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