메인 운영체제로써의 리눅스 적응기

네, 뭐 여러가지 생각을 했는데요. 결국은 윈도우와 리눅스를 멀티부팅 시키기로 결정했습니다.

크게 보면 세가지 이유가 있는데,

  1. VMware Workstation이 심각하게 불안정합니다. 뭐만 하려 하면 자꾸 튕기더라고요. 윈도우와는 다르게 프로그램 자체가 굉장히 불안정 한 것 같습니다. 가상 머신이 꺼지지는 않는게 위안이라 해야 하나…
  2. 유니티에서 윈도우용 IL2CPP 빌드가 불가능합니다. 윈도우용 IL2CPP 빌드를 하려면 MSVC 컴파일러가 필요한데 당연하게도 이건 윈도우에서만 지원하니… 같은 이유로 Native AOT 빌드도 불가능합니다.
  3. Resource Hacker 등 일부 윈도우 프로그램은 와인으로도 실행이 불가능했습니다.

이를 위해서 새로운 SSD를 주문했고. 오늘 도착했습니다. 장착은 지금 당장 하지는 않고 나중에 하게 될 것 같은데, 그렇게 하면 지금 쓰고 있는 SSD는 서브 SSD로 격하해서 윈도우를 설치하게 될 것 같습니다. 메인 SSD는 리눅스를 깔고 리눅스를 메인으로, 윈도우를 서브로 쓸거고요.

Slog는 계속 쓸 것 같습니다. 어차피 메인으로는 리눅스를 쓸 거니까요.

그리고 아마도 압축 프로그램이 필요할 것 같은데 윈도우의 알집이나 반디집 같은 프로그램이 리눅스에서는 없는 것 같습니다. 그래서… 아마도 직접 만들지 않을까 싶습니다. 물론 C#으로요.

4개의 좋아요

어… 윈도우를 다시 깔았는데 문제가 생겼네요. 리눅스 커널의 NTFS 드라이버가 불안정한지 제 8TB 하드의 MFT에 문제가 생겼다고 자꾸 부팅 시 디스크 검사를 요구합니다. 문제는 디스크 검사를 해도 오류를 못 잡아냅니다. 아마도 데이터를 전부 다 백업하고 파티션을 다시 만들어야 문제가 해결 될 것 같습니다.

추가) 어후 데이터가 1~2TB 거의 4TB나 하는데 백업을 해 두지 않아서 이거 엄두가 안나네요. 파티션을 축소하고 데이터를 거기로 옮겼다가 다시 복원하는 방법을 시도 중인데 오늘 안에 끝낼 수 있을지는 모르겠습니다. 다음부터는 리눅스 커널 내장 드라이버 말고 NTFS-3G를 써야겠어요.

추가2) 약 4~5시간에 걸쳐서 일단 4테라에 달하던 데이터를 500기가도 안하게끔 손실을 거쳐서 백업했고 파티션도 다시 만들어서 재부팅했는데 문제는 없었습니다. 사실 다 중요하지 않은 데이터라 망정이지 중요한 데이터였다면 울고 불고 난리 났을겁니다. 이제 원래 위치로 복원만 남았네요.

추가3) 백업부터 지금까지 약 7시간 만에 모두 완료했습니다.

3개의 좋아요

윈도우와 리눅스 시간 맞추기

윈도우와 리눅스를 멀티부팅할 경우, 윈도우의 시각이 9시간 느리거나 반대로 리눅스의 시각이 9시간 빠른 현상이 일어날 수 있습니다.

그 이유는 리눅스는 하드웨어 시계를 UTC로 해석하지만, 윈도우에서는 로컬 시간대로 해석하기 때문입니다. 9시간 차이가 나는 이유도 한국 표준시(KST)가 UTC+9을 채택했기 때문입니다.

따라서 이를 해결하려면 두 운영체제의 해석 방식을 하나로 통일할 필요가 있습니다.

아래 두가지 방법 중에서 하나만 하면 됩니다. 둘 다 하면 그 반대의 현상(윈도우의 시각이 9시간 빠르고 리눅스의 시각이 9시간 느린 현상)이 생길 수 있습니다.

리눅스의 해석 방식을 로컬 시간대로 설정하기

sudo timedatectl set-local-rtc 1

다만 이렇게 하면 완전히 지원되지 않는다는 경고가 표시됩니다.

윈도우의 해석 방식을 UTC로 설정하기

위에서 언급했듯이, 리눅스의 해석 방식을 로컬 시간대로 설정하게 되면 완전히 지원되지 않는다는 경고가 표시됩니다. 아치위키에서도 윈도우의 방식을 바꾸라고 권장하고 있습니다.

관리자 명령 프롬프트에서 다음 명령 실행:

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

또는 관리자 PowerShell에서 다음 명령 실행:

New-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\TimeZoneInformation" -Name RealTimeIsUniversal -PropertyType Dword -Value 1

그리고 재부팅합니다.

3개의 좋아요

윈도우 XP 테마 설치

저는 이제 다른 테마를 사용합니다.

이전 내용

xfce-winxp-tc는 Xfce에서 윈도우 XP 느낌을 낼 수 있게 해주는 테마입니다.

yay -S xfce-winxp-tc-git

그런 다음

  1. 설정 - 모양새 - 방식을 Windows XP style (Blue)로 설정
  2. 설정 - 모양새 - 아이콘을 Luna로 설정
  3. 설정 - 창 관리자 - 모양새를 Windows XP style (Blue)로 설정
  4. 설정 - 창 관리자 - 모양새에서 창 제목 정렬을 왼쪽으로 설정
  5. 설정 - 마우스와 터치패드 - 테마를 Windows XP Standard (with pointer shadows)로 설정
  6. 설정 - 모양새 - 설정에서 이벤트 소리 활성화, 입력 반응 소리 활성화에 체크
  7. 설정 - 설정 편집기 - xsettings에서 SoundThemeName을 Windows XP Default로 설정

저는 이렇게만 했는데 원한다면 이 페이지를 참고하여 몇가지 설정을 더 할 수 있습니다.

1개의 좋아요

부팅 화면 설정하기

부팅 화면을 설정하려면 Plymouth라는 소프트웨어를 사용하면 됩니다.

sudo pacman -S plymouth
sudo nano /etc/mkinitcpio.conf
HOOKS=(... plymouth ...)
sudo mkinitcpio -P
sudo nano /etc/defaults/grub
GRUB_CMDLINE_LINUX_DEFAULT="... splash"
sudo grub-mkconfig -o /boot/grub/grub.cfg

기본적으로 BGRT라는 테마가 사용되는데, 이는 부팅 화면에 메인보드 로고와 Progress Ring, 아치 리눅스 로고를 표시합니다.

저는 Spinner라는 테마를 사용합니다.

sudo plymouth-set-default-theme -R spinner
1개의 좋아요

게임할 때 최적화 하기

기본적으로 Xfwm의 Compositor가 동작하기 때문에 인풋렉이 증가합니다. 리듬 게임을 주로하는 저에게는 치명적인 문제입니다. 이를 위해서는 게임시에는 Compositor를 꺼줘야 합니다.

GameMode는 게임 시 CPU/GPU 최적화를 해 줍니다. 기본값으로도 훌륭하지만, 이를 활용하여 Compositor를 자동으로 끄고 켜게 할 수도 있습니다.

먼저 GameMode를 설치합니다.

sudo pacman -S gamemode lib32-gamemode
sudo gpasswd -a $USER gamemode

GameMode가 실행되면 Compositor를 꺼주도록 합시다.

sudo nano /etc/gamemode.ini
[custom]
start=xfconf-query -c xfwm4 -p /general/use_compositing -s false
end=xfconf-query -c xfwm4 -p /general/use_compositing -s true
gamemoded -t

gamemoded -t 단계에서 화면이 깜빡거린다면 Compositor가 정상적으로 끄고 켜진 것입니다.

게임에 적용하려면 스팀 라이브러리로 들어가서 적용할 게임에 우클릭하고 속성을 누릅니다. 그리고 실행 옵션에 gamemoderun %command%를 입력합니다.

1개의 좋아요

PeaZip 설치

저는 PeaZip을 더 이상 사용하지 않습니다.

이전 내용

새로운 압축 파일 관리자를 만들기 전에 임시로 쓸 압축 파일 관리자가 필요했습니다. 찾아보니까 PeaZip이라는 물건이 맘에 들더군요.

GTK와 Qt 버전이 존재하는데 GTK는 2006년 출시 당시의 코드를 그대로 쓰는지 아직도 GTK2를 쓰고 있더군요. Qt가 메인인 듯 하니 어쩔 수 없이 Qt 버전을 사용합시다.

yay -S peazip-qt-bin
1개의 좋아요

Ctrl + F1… 키 문제 해결

스크린샷_2024-11-26_01-31-02

기본적으로 Xfce는 Ctrl + F1… 키를 누르게 되면 작업 공간 전환 명령이 되기 때문에 저처럼 작업 공간을 전혀 사용하지 않는 사람에게는 큰 불편함이 따릅니다.

이를 해결하려면 각 작업 공간 전환 키 바로가기를 선택하고 Clear를 해 줍니다.

스크린샷_2024-11-26_01-31-31

1개의 좋아요

Git Credential Manager 설치

Git Credential Manager를 사용하여 GitHub 자격 증명을 저장합시다. 물론 리눅스는 https보다는 ssh가 더 편하긴 하지만 그렇게 하면 윈도우에서 불편해지기 때문에…

AUR에서 git-credential-manager-bin 패키지를 설치합니다. git-credential-manager 패키지도 있는데 그걸 쓰려면 .NET 8 SDK를 먼저 설치해야만 합니다. (이미 .NET 9 SDK를 설치했다 하더라도) 지금까지는 몰랐는데 GCM은 C#으로 작성되었다 하더군요. (소스를 살펴보니까 아발로니아를 사용하는 것 같습니다.)

yay -S git-credential-manager-bin
git-credential-manager configure
git config --global credential.credentialStore secretservice

이제 git push를 해 보면 GitHub로 로그인하라는 창이 하나 뜰 것입니다.

2개의 좋아요

iBus에서 kime로 갈아타기

kime는 Rust로 개발된 한글 입력기입니다. 가볍고 빠르다는 장점이 있습니다. iBus가 지금 한글을 쓰고 있는지 로마자를 쓰고 있는지 구별하기 어렵기도 해서 바꾸게 되었습니다.

sudo pacman -Rsn ibus-hangul
yay -S kime-bin
sudo nano /etc/environment
GTK_IM_MODULE=kime
QT_IM_MODULE=kime
XMODIFIERS=@im=kime

Rider에서 한글 입력 문제 해결하기

Rider 버그인지 한글 입력 시 흰색 박스가 뜨면서 입력됩니다. 이를 해결하려면 구성 - 사용자 지정 VM 옵션 편집으로 들어가서 다음을 맨 밑에 입력합니다.

-Djb.awt.newXimClient.enabled=false

그리고 IDE를 다시 시작합니다.

5개의 좋아요

Docker 설치

Docker를 설치해 주겠습니다. 사실 뭐 개발하려고 까는 건 아니고, 제가 쓰는 AUR 패키지들을 빌드할 때 호스트 시스템에 영향을 끼치는게 싫어서 깔려고 합니다.

sudo pacman -S docker docker-buildx
sudo gpasswd -a $USER docker
sudo systemctl enable --now docker

그리고 이 글을 참고하여 데이터를 다른 파티션으로 옮겨주었습니다. 그냥 두면 루트 파티션 공간을 차지하기 때문입니다.

이제 로그아웃 했다가 다시 로그인 하면 docker를 사용할 수 있습니다.

2개의 좋아요

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

fnm을 사용하여 Node.js 버전 관리

아치 리눅스에서는 pacman을 사용하여 Node.js를 설치할 수도 있지만, 이는 항상 최신 버전이기 때문에 LTS 버전을 사용하거나 여러 버전을 사용하려면 nvm 등의 버전 관리자를 사용해야만 합니다.

nvm의 더 빠른 대안으로 Rust로 만들어진 fnm (Fast Node Manager)가 있습니다.

yay -S fnm-bin
echo 'eval "$(fnm env --use-on-cd --shell zsh)"' >> ~/.zshrc

설치했으면 다음과 같은 명령으로 Node.js를 설치합니다.

fnm install 22
fnm install 20
fnm default 22

램디스크 (tmpfs) 사용

일부 디렉토리에 tmpfs를 사용하겠습니다.

sudo nano /etc/fstab
# tmpfs
tmpfs /var/cache tmpfs rw,nodev,size=4G 0 0
tmpfs /var/log tmpfs rw,nodev,size=512M 0 0
tmpfs /var/lib/systemd/coredump tmpfs rw,nodev,size=4G 0 0