서브 운영체제로써의 리눅스 사용기

지난 글에서는 메인 운영체제로 리눅스를 사용하려 시도했었지만 여러가지 현실적인 문제로 인해 실패했었습니다. 그 후로 몇달 동안 윈도우만 쓰다가 이번에 서브 운영체제로 다시 리눅스를 사용하려 합니다.

배포판은 지난번과 마찬가지로 아치 리눅스입니다.

3개의 좋아요

설치 준비 및 네트워크 연결

설치 미디어로 부팅합니다. Secure Boot는 꺼줘야 합니다.

무선 네트워크 관련 내용. (일단은) 저는 더 이상 무선 네트워크를 사용하지 않습니다.

저는 지난번과 다르게 무선 네트워크를 사용하고 있기 때문에 Wi-Fi에 연결해줘야 합니다.

ip link

이 명령어를 입력해주면 현재 시스템에 설치된 네트워크 어댑터(랜카드)들이 나열됩니다. 무선 랜카드는 wlan0 이런 식으로 나오고요.

Wi-Fi 네트워크에 연결해줍시다.

iwctl
station wlan0 scan
station wlan0 connect (SSID)
exit

네트워크에 연결했다면 핑을 확인해봅시다.

ping 1.1.1.1

잘 연결된 것 같습니다.

64 bytes from 1.1.1.1 (생략) ...

현재 시간도 확인해보죠.

date

UTC로 뜨지만 시각은 잘 맞는 것 같습니다.

Thu May  8 07:24:11 UTC 2025
1개의 좋아요

파티션 작업

저는 현재 다음과 같은 드라이브를 사용 중입니다.

  1. 8TB HDD
  2. 250GB SATA SSD
  3. 2TB NVMe SSD

현재 250GB SATA SSD와 2TB NVMe SSD를 깨끗하게 지운 상태입니다. 2TB NVMe SSD에 윈도우와 리눅스를 설치하고, 250GB SATA SSD는 보조용 드라이브로 사용하겠습니다.

파티션 과정을 진행해 줍시다. 현재 2TB NVMe SSD는 /dev/nvme0n1으로, 250GB SATA SSD는 /dev/sdb로 인식되고 있습니다. 윈도우에서 사용할 파티션은 Microsoft basic data로 타입을 바꿔줘야 합니다.

fdisk /dev/nvme0n1
g (새 GPT 파티션 테이블)
n (새 파티션)
(엔터)
(엔터)
+260m (260MiB, SSD가 4Kn으로 인식되고 있기에 최소 260MiB가 필요함)
t (파티션 타입 바꾸기)
1 (EFI 시스템 파티션)
n
(엔터)
(엔터)
+95367m (100GB, 약 93.1 GiB)
n
(엔터)
(엔터)
(엔터, 남은 공간 전부 사용)
t
(엔터)
11 (Microsoft basic data)
w (변경 사항을 저장하고 끝내기)
fdisk /dev/sdb
g
n
(엔터)
(엔터)
+119209m (125GB, 약 116.4 GiB)
n
(엔터)
(엔터)
(엔터)
t
(엔터)
11
w

파티션을 만들어줬으니까 포맷을 해 줘야 합니다. 저는 리눅스 루트 파티션에는 F2FS를, 리눅스가 사용할 보조 파티션은 Btrfs로 포맷하겠습니다. 윈도우에서 사용할 파티션은 윈도우에서 포맷하도록 놔둡니다. EFI 시스템 파티션은 반드시 FAT32로 포맷해야만 합니다.

mkfs.fat -F 32 /dev/nvme0n1p1
mkfs.f2fs -l Linux -O extra_attr,inode_checksum,sb_checksum,encrypt,lost_found,verity,compression /dev/nvme0n1p2
mkfs.btrfs -L LSub /dev/sdb1

Btrfs를 잠시 마운트하여 서브볼륨들을 만듭시다.

mount /dev/sdb1 /mnt
btrfs subvolume create /mnt/@boot /mnt/@data /mnt/@project /mnt/@docker
btrfs subvolume set-default /mnt/@data
umount /mnt

그리고 저는 윈도우를 설치했습니다. 리눅스와 윈도우를 멀티 부팅하려면 윈도우를 먼저 설치하는 것이 좋기 때문입니다.

1개의 좋아요

파티션 마운트 및 리눅스 설치

이제 파티션을 마운트해야 합니다.

mount -o compress_chksum,compress_algorithm=zstd:3,noatime,atgc,gc_merge /dev/nvme0n1p2 /mnt
mount --mkdir -o subvol=/@boot,compress=zstd:3 /dev/sdb1 /mnt/boot
mount --mkdir /dev/nvme0n1p1 /mnt/efi
mount --mkdir -t ntfs-3g -o ro /dev/sda2 /mnt/mnt/Data
mount --mkdir -o subvol=/@data,compress=zstd:3 /dev/sdb1 /mnt/mnt/data
mount --mkdir -o subvol=/@project,compress=zstd:3 /dev/sdb1 /mnt/mnt/project
mount --mkdir -o subvol=/@docker,compress=zstd:3 /dev/sdb1 /mnt/mnt/docker

스왑 파일을 만들고 활성화해줍시다.

mkswap -U clear --size 8G --file /mnt/swapfile
swapon /mnt/swapfile

이제 리눅스를 설치하겠습니다.

reflector -c KR -p https --sort score --save /etc/pacman.d/mirrorlist
pacstrap -K /mnt base base-devel linux linux-firmware linux-headers sudo git nano amd-ucode f2fs-tools btrfs-progs ntfs-3g networkmanager zsh grub efibootmgr os-prober

fstab을 생성해줍시다.

genfstab -U /mnt > /mnt/etc/fstab

이제 설치한 리눅스로 들어가겠습니다.

arch-chroot /mnt
1개의 좋아요

나머지 설치 진행

시간대를 설정해줍시다.

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

locale을 설정해줍시다.

nano /etc/locale.gen
(en_US.UTF-8 UTF-8의 주석 처리 해제)
(ko_KR.UTF-8 UTF-8의 주석 처리 해제)
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf

컴퓨터 이름을 설정합니다.

echo naLinux > /etc/hostname

사용자를 만들어줍시다.

useradd -m -G wheel,storage,power,audio,video -s /bin/zsh na1307
passwd na1307

sudoer를 설정해줍니다.

EDITOR=nano visudo
%wheel ALL=(ALL:ALL) ALL

네트워크를 활성화합니다.

systemctl enable NetworkManager

Btrfs를 사용할 것이므로 initramfs를 다시 생성해야 합니다.

nano /etc/mkinitcpio.conf
(HOOKS=(... btrfs))
mkinitcpio -P
1개의 좋아요

부트로더 설치 및 재부팅

부트로더는 GRUB를 사용하겠습니다. 왜 GRUB를 쓰냐면 테마를 커스텀 할 수 있기 때문입니다.

아까 pacstrap 단계에서 GRUB 설치 프로그램(?)은 이미 설치했습니다. (grub efibootmgr os-prober)

우리는 윈도우를 먼저 설치했기 때문에 GRUB에서 윈도우를 감지할 수 있게 해야합니다. 기본값도 윈도우로 설정해줍시다.

nano /etc/default/grub
GRUB_DEFAULT=2
(GRUB_DISABLE_OS_PROBER=false의 주석 처리 해제)

이제 GRUB를 설치합시다.

grub-install --efi-directory=/efi --bootloader-id=Linux
grub-mkconfig -o /boot/grub/grub.cfg

파티션을 언마운트하고 재부팅하겠습니다.

exit
umount /mnt/mnt/docker
umount /mnt/mnt/project
umount /mnt/mnt/data
umount /mnt/mnt/hdd
swapoff /mnt/swapfile
umount /mnt/efi
umount /mnt/boot
umount /mnt
reboot
1개의 좋아요

재부팅 후 작업

F2FS의 ATGC를 활성화해 줍시다.

sudo nano /etc/fstab
... gc_merge,atgc,discard ...
sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 rootflags=atgc"
sudo grub-mkconfig -o /boot/grub/grub.cfg

시계 동기화를 활성화해 줍시다.

sudo timedatectl set-ntp true
1개의 좋아요

Docker 설치

Docker를 설치하여 그 안에서 AUR 빌드를 할 것입니다.

sudo pacman -S docker docker-buildx
sudo gpasswd -a $USER docker
sudo mkdir /etc/docker
sudo nano /etc/docker/daemon.json
{"data-root":"/mnt/docker","storage-driver":"btrfs"}
sudo systemctl enable --now docker

로그아웃 했다가 다시 로그인하면 Docker를 사용할 수 있습니다. 제가 AUR 빌드를 위해서 어떻게 Docker를 세팅하는지에 대해서는 여기에 적지 않습니다. 일반적으로는 그렇게 할 필요가 없기 때문입니다.

2개의 좋아요

한국어로 언어 바꾸기

sudo nano /etc/locale.conf
(en_US를 ko_KR로 변경)

재부팅하면 한글이… 반겨주지 않습니다. 콘솔 환경에서는 한글을 출력할 수 없기 때문입니다.

한글 폰트 설치

sudo pacman -S ttf-nanum ttf-d2coding

참고로 위에 적은 폰트 패키지들은 AUR 패키지이기 때문에(제가 사용하는 AUR 패키지들) 여러분들은 makepkg를 사용하여 직접 빌드하시거나 yay 등의 AUR 도우미를 사용하셔야 할겁니다. 앞으로도 이러한 패키지들이 자주 나올 것입니다. 저는 상술했듯이 Docker 안에서 빌드해서 로컬 패키지 저장소를 만드는 방법을 사용하고 있습니다.

데스크톱 환경 및 PipeWire 설치

한글 폰트를 설치했다고 해서 콘솔에 한글이 나오는 건 아닙니다. 데스크톱 환경을 설치해줘야만 합니다.

지난번에는 Xfce를 사용했지만 이번에는 Wayland를 사용하려고 GNOME을 설치하려 합니다. 근데 GNOME을 설치할 때 어째선지 PipeWire가 종속성으로 되어 있는 듯 합니다. 기본적으로 구형 세션 관리자인 pipewire-media-session이 선택되니 WirePlumber를 수동으로 지정해야 합니다.

sudo pacman -S gnome gnome-tweaks seahorse wireplumber
sudo systemctl enable gdm

그놈과 함께 설치할 앱들은 자유롭게 선택합니다. 또 jack 뭐시기가 나오는데 이때는 pipewire-jack을 선택합니다.

설치를 완료했으면 재부팅합니다.

1개의 좋아요

브라우저, VSCode 설치

sudo pacman -S microsoft-edge-stable-bin visual-studio-code-bin

microsoft-edge-stable-bin(AUR): 마이크로소프트 엣지
visual-studio-code-bin(AUR): 비주얼 스튜디오 코드

1개의 좋아요

한글 입력기 설치

이전에는 kime라는 한글 입력기를 사용했었지만 GNOME이 공식적으로 지원하는 한글 입력기는 ibus 뿐이기에 iBus를 설치해줍시다.

sudo pacman -S ibus-hangul

설치되었다면 /etc/environment에 다음 내용을 추가합니다.

export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus

그리고 재부팅합니다.

1개의 좋아요

기타 소프트웨어 설치

Oh My Zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

multilib 저장소 활성화

sudo nano /etc/pacman.conf
([multilib]와 그 다음 줄 주석 처리 해제)
sudo pacman -Sy

이모지 폰트

sudo pacman -S noto-fonts-emoji

Git Credential Manager (AUR)

sudo pacman -S git-credential-manager

Polychromatic (AUR)

sudo pacman -S polychromatic linux-headers
sudo gpasswd -a $USER plugdev

Dash to Panel

sudo pacman -S gnome-shell-extension-dash-to-panel

GRUB WhiteSur 테마

git clone https://github.com/vinceliuice/grub2-themes.git --depth=1
cd grub-themes
LANG=C.UTF-8 sudo ./install.sh -t whitesur -i whitesur -s ultrawide -b
cd ..
rm -rf grub2-themes

Yay (AUR)

sudo pacman -S yay
1개의 좋아요