새로운 우분투 버전이 출시되고 나서, 한 달쯤 후에는 다음 버전의 날짜별 스냅샷이 제공됩니다. 다음 버전은 LTS이기 때문에, 이전 과정보다는 좀 더 자세히 테스트가 될 필요가 있습니다.
아마도 서버를 운영하시는 분들은 LTS 버전을 유지하실 것이고, 다음 LTS 버전으로 업데이트를 많이 하실 것으로 추정이 됩니다. 현재 개발 버전과 18.04.3 버전과의 성능 비교에서, 특히 라이젠 3000 시리즈 시스템에서, 20.04 개발 버전이 꽤 성능 개선이 있는 것으로 알려져 있습니다. 여기서 확인하십시오.
그러나, 대체로 새로운 커널에 의해 발생하는 성능 개선이므로, 현재 시스템에서도 Ubuntu on Ryzen CPU에 따라 새로운 커널을 이용할 수 있습니다.
Installation
- 이전에 없던, 디스크 검사 (cd 검사로 추정) 과정이 생겼습니다.
Installation type : Erase disk and install Ubuntu, Advanced features->ZFS
Configurations
df snap 출력 없애기
다음과 같이 출력에서 제거할 수 있으며, 명령어 별칭으로 .bashrc 파일에 기록해 둘 필요가 있습니다:
- df -l -BM -Tx"squashfs"
- df | sed /snap/d
- df | grep -v "/snap"
- df $(cut -d' ' -f3 /proc/mounts | sort -u | grep -v 'squashfs' | sed 's/^/-t /')
한글 입력기
- sudo apt install ibus-hangul
로그아웃 후에 로그인 해야 새로 설치된 입력기가 표시됩니다.
nimf packaging
- sudo apt install git
- sudo apt install dpkg-dev
nginx packaging
구글 PageSpeed와 Brotli 모듈을 포함해서 패키지를 만들었습니다.
PHP 설치
PHP에 따라 PPA에서 설치됩니다.
MariaDB 설치
마리아 디비 저장소에서, 5월 13일부터 안정 버전을 배포합니다.
Composer 설치
Composer (software)에 따라 설치했습니다.
Parsoid 설치
Parsoid에 따라 설치했습니다.
Redis 설치
PPA에서 최신 버전을 설치했습니다.
Chromium-browser
크로미엄 브라우저를 deb 패키지로 설치한 이유는 한글 입력이 가능하지 않았기 때문입니다. 어쨌든, 20.04 출시 직후에, ibus 입력기에서 한글 입력의 가능성을 확인했는지 기억나지 않지만, 지금 확인해 보니, ibus 입력기에서 한/영 전환이 가능합니다.
크로미엄 브라우저는 스냅 앱으로 전환이 되었습니다. 스냅 서비스를 원하지 않으면, 아래의 PPA에서 설치할 수 있습니다.
- sudo add-apt-repository ppa:saiarcot895/chromium-dev
간혹 위의 바이너리가 작동하지 않을 수 있으므로, 위의 것보다 (베타 버전이긴 하지만) 조금 더 안정적인 버전을 설치할 수 있습니다.
- sudo add-apt-repository ppa:saiarcot895/chromium-beta
다른 대안은 우분투 18.04의 바이너리를 아래 PPA로부터 설치하는 것입니다.
- sudo add-apt-repository ppa:xalt7x/chromium-deb-vaapi
그런-다음 아래를 실행하십시오
cat <<EOF | sudo tee /etc/apt/preferences.d/pin-xalt7x-chromium-deb-vaapi
Package: *
Pin: release o=LP-PPA-xalt7x-chromium-deb-vaapi
Pin-Priority: 1337
EOF
보통 아래의 네 개의 패키지가 설치됩니다.
- chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra chromium-chromedriver
간혹 크로미엄의 그래픽이 깨지는 경우가 생길 수 있습니다. 이 문제는 그래픽 하드웨어 가속을 사용함으로써 발생하는 것으로 추정되므로, 그것을 끄면 화면이 깨지는 문제는 사라질 것으로 예상됩니다.
캐노니컬 저장소가 업데이트되면, PPA를 지우고, 공식 저장소의 패키지를 설치하려고 합니다. 아래와 같이 이전 패키지를 유지하도록 설정할 수 있습니다.
- sudo apt-mark hold chromium-browser
hold를 풀고 싶으면,
- sudo apt-mark unhold chromium-browser
hold 시켜놓은 모든 패키지를 보려면,
- sudo apt-mark showhold
RESTBase, Mathoid
위키에서, 수식이 보이지 않아서 확인을 하니, 두 서비스가 엄청난 부하를 발생시키고 있었습니다. 결국은 Apache Cassandra가 제대로 동작하고 있지 않아서 발생하는 문제였습니다.
Virtualbox
원래는 홈페이지에서 제공하는 바이너리를 사용했지만, 이제는 우분투 저장소의 것을 사용하도록 바꾸었습니다.
- sudo apt install virtualbox virtualbox-ext-pack
그 후에, 가상 기계를 시작하면, 오류가 생길 수 있는데,
- Devices -> Insert Guest Additions CD image... 를 눌러서 iso 파일을 다운로드해 둡니다.
버전 업데이트가 되면서, 홈페이지의 바이너리를 사용하도록 변경했습니다.
Monit
관련 페이지로 가셔서 최근의 Monit#Troubleshooting을 보십시오.
불필요한 라이브러리
이전 시스템의 라이브러리가 사용 중으로 남아 있거나, 쓸모없이 남아 있을 수 있습니다.
- dpkg -l |grep 18.04
개별적으로 현재 시스템에 맞는 라이브러리를 설치하는 것이 좋습니다. 예를 들어, libavcodec 라이브러리를 검색해서 focal에 맞는 바이너리를 받아서 설치하십시오.
한글 뷰어
과거에 미지리눅스에서 리눅스용 hwp 편집기를 만든 적이 있지만, 지금은 리눅스용 hwp 편집기는 없고, 단지 hwp 파일을 볼 수 있는 뷰어는 존재합니다. 여기서 다운로드가 가능합니다.
하지만, 우분투 20.04에서는 뷰어가 동작하기 위해 필요한 라이브러리가 버전 업데이트가 되면서, 우분투 저장소에서 해당 파일의 정보를 가져올 수 없습니다.
우분투 패키지 검색을 통해 libjavascriptcoregtk-3.0-0, libwebkitgtk-3.0-0 파일을 bionic, 즉 18.04의 바이너리를 받아서 설치합니다.
그리고 위에서 받은 뷰어를 설치하면, 한글 파일의 전부는 아니지만 일부 파일은 볼 수 있습니다.
생각보다 읽지 못하는 파일이 많기 때문에, 그냥 웹에서 hwp2pdf로 변형한 후에 pdf로 보는 것이 더 좋겠습니다. 편집이 필요하면, 와인 아래에서 hwp를 설치할 수 있습니다.
GCC-10 패키지
설치가 원활히 되지 않을 때에는, 설치에 문제가 있는 패키지와 의존성 패키지를 먼저 설치하시고, 나머지 패키지를 설치하시기 바랍니다!!
먼저, binutils-2.35 이상이 필요합니다. 다음 버전의 것을 가져와서 컴파일합니다. 의존성 패키지는 설치하지 않고, 아래와 같이 컴파일합니다. 약 49분 걸리고, ccache 사용했을 때, 50분 걸립니다. 최근에는 80분 정도 걸립니다. 최근, binutils-2.36.50 버전은 71분 걸립니다.
- dpkg-buildpackage -i -uc -us -b -d
아래의 6개의 패키지를 설치해야 합니다.
- binutils
- binutils-common:amd64
- binutils-hppa64-linux-gnu
- binutils-x86-64-linux-gnu
- libbinutils:amd64
- libctf-nobfd0:amd64
- libctf0:amd64
Gcc-10 패키지는 gnat-10으로 컴파일 중입니다. 이전에는 약 60, 110분 정도 걸렸습니다.
gcc-10.3.0-12ubuntu1 amdgcn-tools 패키지를 설치해야 합니다. "insn-attr-common.h"를 이용하는데, gcc-10-plugin-dev를 설치해서 컴파일 중입니다.
우분투 패키지 검색으로 이동하셔서 다음 패키지를 받아둡니다.
- libstdc++6_10.3.0-12ubuntu1_i386.deb
- libgomp1_10.3.0-12ubuntu1_i386.deb
이 패키지는 의존성으로 인해 이 서버에서 제공하는 것을 사용해야 합니다.
- libgcc-s1_10.3.0-12ubuntu1_i386.deb
- libatomic1_10.3.0-12ubuntu1_i386.deb
- gcc-10-base_10.3.0-12ubuntu1_i386.deb
이 패키지는 amd64 패키지의 changelog.Debian.gz 파일이 충돌하는 문제가 있어, 해당 파일을 제거하고 새롭게 패키징했습니다.
여기서 제공된 gcc 패키지를 이용했던 분 중에 다른 패키지 설치 때에 부딪히는 경우가 생길 수 있습니다. 그때에는 공식 저장소 버전으로 돌려야 하는데, 다음 순서로 진행하십시오.
- dpkg -l |grep gcc-10
버전 정보, 예를 들어 10.3.0-11ubuntu1를 얻어냅니다.
- dpkg -l |grep 10.3.0-11ubuntu1
관련된 패키지 이름을 전부 알아냅니다.
- 우분투 패키지 검색으로 이동하셔서 각 이름에 대한 패키지와 만약 i386 패키지가 추가로 있다면, 그것도 전부 다운로드합니다.
- sudo dpkg -i *.deb
모든 패키지를 다 받은 후에 한꺼번에 설치하시기 바랍니다.
현재 안정 버전은 binutils-2.35를 별도로 설치해야 하고, 다른 패키지가 추가적으로 업데이트가 필요할 수 있기 때문에, focal에서 패키지를 유지 관리하기가 귀찮습니다. 아래 패키지를 이용하지 마시고, ubuntu PPA의 것을 사용하십시오. 만약 이전에 받은 파일이 업데이트가 되지 않으니, 같은 디렉토리에서 파일들을 받으셔서 설치하시기 바랍니다. 그런 후에 PPA를 등록해 두십시오.
새로운 패치가 추가되고 있습니다. 어쨌든, 수정된 내용을 파일에서 수정하는 것이 귀찮습니다. debian/patches 디렉토리에서 이전 패치들을 전부 지우고 새로운 패치들을 같은 디렉토리에서 전부 가져오고, debian/rules.patch 파일을 새로운 디렉토리에서 가져옵니다.
GCC-11
컴파일 중에 insn-attr-common.h를 찾지 못하는 문제가 생기기도 합니다. src/gcc/config/i386/i386.h 파일에서 아래를 수정해서 진행할 수 있습니다. 92분 걸립니다. 11.2.0은 120분 걸립니다.
#include "insn-attr-common.h" -> #include <insn-attr-common.h> 이 파일은 gcc-10-plugin-dev에 포함되어 있습니다.
- sudo apt --fix-broken install
11.2.0-19ubuntu1 ubuntu-toolchain-r test PPA에 있는 패키지 정보에 jammy 패치를 적용해서 패키징했습니다. How to install latest gcc on Ubuntu 정보에 따라 여러 버전의 gcc를 설치해 보십시오.
llvm-toolchain
- sudo vi /etc/apt/sources.list
deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main
libllvm13이 이미 설치되어 있어서, 다른 패키지를 설치할 수 없습니다. 여기서 해당 파일을 받아서 로컬에서 설치해야 합니다:
GCC-12
- libgcc1 패키지 없어짐.
- libasan6 -> libasan8
- libtsan0 -> libtsan2
- amdgcn-tools 를 요구함 -> llvm-13, lld-13을 개발 홈페이지에서 관련된 패키지 전부 설치.
- autoconf2.69 패키지를 요구함 -> jammy 패키지를 가져와서 컴파일.
- g++-multilib 패키지를 설치함..
- pr100067-revert.diff 오류 발생, 해당 패치 파일을 수정.
MAME roms
에뮬레이터의 버전이 올라가면서 과거에 잘 실행되던 롬 파일이 작동하지 않습니다. 여러 이유가 있겠지만, 잘 이해가 되지 않고, 현재 버전에 맞는 롬 파일을 받는 것이 최선일 듯합니다. 여기서 받아보세요
manpages-ko
한글 맨페이지 패키지입니다. 관련 내용은 Man page를 참조하십시오.
gnome-40
새로운 LTS 22.04가 나오기 전에, 새로운 그놈을 사용해 볼 생각을 할 수도 있습니다. 완전하지는 않지만, PPA로부터 설치를 시도해 볼 수 있습니다. 이 정보를 확인하십시오. 먼저, 시스템을 최신 상태로 만듭니다:
- sudo apt update
- sudo apt upgrade
다음으로, 2개의 PPA를 설치합니다:
- sudo add-apt-repository ppa:devacom/x11
- sudo add-apt-repository ppa:devacom/gnome-40
오류가 발생할 수 있는데, 암호와 키에 대한 오류입니다. 이제, 업데이트를 시도합니다:
- sudo apt update
- sudo apt upgrade
- sudo apt install ubuntu-desktop gnome-shell gnome-control-center
- sudo apt upgrade
마지막으로 업그레이드해야 할 패키지가 있는지 확인하고 재시작합니다:
- sudo apt update
- sudo apt upgrade
- reboot
재시작 후에, gdm이 올라오면, 반드시 왼쪽 아래 구성의 디스플레이 관리자를 기본인 Ubuntu로부터 Ubuntu on Wayland 또는 Ubuntu on Xorg를 선택해야 합니다.
설치가 잘 되었는지 확인해 볼 수 있습니다:
- sudo apt install screenfetch -y
- screenfetch
tracker3
GNOME/Troubleshootings#Search에 따라, 그놈-40에서는 조금 다릅니다.
- systemctl --user mask tracker-extract-3.service tracker-miner-fs-3.service tracker-miner-rss-3.service tracker-writeback-3.service tracker-xdg-portal-3.service tracker-miner-fs-control-3.service
- tracker3 reset -s -r
- reboot
원래대로 되돌리려면,
- systemctl --user unmask tracker-extract-3.service tracker-miner-fs-3.service tracker-miner-rss-3.service tracker-writeback-3.service tracker-xdg-portal-3.service tracker-miner-fs-control-3.service
- reboot
startup script
그놈-36에서 작동하던 시작 스크립트가 동작하지 않습니다. Wayland 시작 후에, 약간의 지연을 두고 실행할 필요가 있습니다:
[Desktop Entry]
Type=Application
Name=start.sh
X-GNOME-Autostart-enabled=true
Hidden=false
Exec=bash -c "sleep 7 && myscript"
Comment=conky clock
hide windows manager
이전의 ubuntu.dekstop으로 접근을 막아두는 것이 좋습니다. 아래 두 파일에서 NoDisplay=true를 추가해 주십시오:
- /usr/share/wayland-sessions/ubuntu.desktop
- /usr/share/xsessions/ubuntu.desktop
ubuntu-settings
그놈-40에 필요한 모든 패키지가 제공되는 것은 아니라서, 간혹은 이상한 메시지가 출력됩니다.
No such key “button-power” in schema “org.gnome.settings-daemon.plugins.power” as specified in override file “/usr/share/glib-2.0/schemas/10_ubuntu-settings.gschema.override”; ignoring override for this key.
이 메시지는 ubuntu-settings 패키지가 그놈-36으로 보존되기 때문에 발생하므로, 우분투 21.10에서 해당 패키지에서 해당 파일을 가져와서 덮어쓰면 없어집니다.
yaru-theme-icon
새로운 버전의 yaru-theme-icon_21.10.1은 다른 아이콘과 어울리는 않는 것들이 있습니다. 이전 버전 20.04.11 버전을 설치하는 것이 좋겠습니다.
gnome-41
키보드 shortcut 추가하는 것에 문제가 있습니다. 아래 패키지 중에 gnome-control-center의 패키지에서 발생하는 것으로 보이므로, 데비안의 41.1 버전을 설치하면 해결됩니다. 위에 이어서 다음 PPA를 추가합니다:
- sudo add-apt-repository ppa:devacom/gnome-41
- sudo apt update
- sudo apt upgrade
- sudo apt install ubuntu-desktop gnome-shell gnome-control-center
- sudo apt autoremove
- sudo apt update
- sudo apt upgrade
- reboot
Remove gnome-41
우분투 22.04는 그놈 41을 제공할 예정이지만, 위의 PPA에서 제공하는 모든 프로그램을 제공하지는 않을 것으로 보입니다. 왜냐하면, 우분투 22.04에서는 kime 입력기의 아이콘이 표시되지만, 위의 PPA의 그놈 41을 설치하고 나면, kime 아이콘이 표시되지 않습니다.
따라서, 추후에 우분투 20.04를 22.04로 업그레이드가 매끄럽게 이루어지도록 PPA에서 설치한 그놈 41을 제거할 필요가 있습니다.
문제는 xwayland이 설치되기 위해, 의존성 패키지로 걸려있는 libgbm1이 버전 문제로 설치가 되지 않습니다. 적절한 패키지를 설치하십시오.
Qemu에서는 virt-manager 창에서 Send Key를 눌러서 다른 가상 터미널로 접근합니다.
그런-다음 그놈 41 PPA를 제거합니다.
- sudo add-apt-repository ppa:devacom/gnome-41 --remove
확인합니다:
- sudo apt update
- sudo apt purge ubuntu-desktop gnome-shell gnome-control-center
- sudo apt autoremove
- dpkg -l | grep 41.1
- sudo apt purge gnome-control-center-data
- sudo apt autoremove
- dpkg -l | grep 41.1
- sudo apt purge gnome-desktop3-data
- sudo apt autoremove
- dpkg -l | grep 41.1
- sudo apt purge yelp
- sudo apt libnautilus-extension1a
- dpkg -l | grep 41.0
- sudo apt purge orca
- sudo apt purge gnome-settings-daemon-common
관련된 파일들을 이런 식으로 전부 제거합니다.
- sudo dpkg -i xwayland_21.1.3-devacom_amd64.deb
- sudo apt install gnome-control-center gnome-shell ubuntu-desktop
Return back to gnome-3
우선 위에서 삽입된 3개의 PPA를 제거합니다:
- sudo add-apt-repository ppa:devacom/x11 --remove
return
- sudo add-apt-repository ppa:devacom/gnome-40 --remove
return
- sudo add-apt-repository ppa:devacom/gnome-41 --remove
return
그런-다음 가상 터미널로 이동합니다:
준비된 몇 개의 파일을 덮어씁니다. return-back-to-gnome-3.tar를 풀면 나옵니다.
- sudo dpkg -i *.deb
- sudo apt install -f
- sudo apt autoremove
그런-다음 devacom으로 찾은 모든 패키지를 제거합니다.
- sudo apt autoremove
- sudo dpkg -i *.deb
그런-다음 다음 파일을 제거합니다:
- sudo apt purge libdconf1 libpulse0 libpango-1.0-0 gir1.2-glib-2.0 libpolkit-agent-1-0 libpolkit-gobject-1-0
- sudo apt autoremove
만약 그래도 설치가 되지 않으면, 먼저, gdm3을 설치하려고 시도합니다. 설치가 되지 않는 문제되는 패키지를 찾아서 그 패키지를 설치하려고 시도합니다.
이런 식으로 찾아가면, 이전에 PPA에서 완전히 제거되지 않은 어떤 파일을 만나게 되고, 그 파일들을 전부 제거하면, gdm3를 설치할 수 있습니다.
그다음에 아마도 gnome-shell, gnome-control-center, ubuntu-desktop이 설치될 것입니다.
만약 설치되지 않으면, 이전의 방법으로 아직 제거되지 않은 패키지를 찾아서 제거한 후에 설치할 수 있습니다.
이 방법으로 되돌리면, 주요한 파일이 제거될 수도 있습니다. 예를 들어, 다음 파일 등이 지워집니다.
- netplan.io
- nginx-core
- mariadb-server
Remove associated packages
위와 같이 작업해서, 우분투 20.04의 그놈을 설치하더라도, 여전히 남은 패키지들이 있습니다.
즉, 그놈 설치와 상관없는 파일들은 의존성을 갖지 않으므로, 지워지지 않고, 남겨지게 됩니다. 이런 남은 패키지는 자신의 의존성으로 인해, 다른 패키지를 설치하려고 하면, 맞지 않는 라이브러리 또는 버전에 의해 다른 패키지를 제거해 버리는 결과를 낳게 됩니다.
예를 들어, playonlinux를 설치하면, gimp 등의 패키지를 삭제해 버립니다. 원래는 그렇게 의존성이 걸려있지 않지만, 위의 3개의 PPA를 설치함으로써 의존성의 왜곡이 생겨, 발생하는 문제입니다.
이제 이런 파일들을 찾아서 일일이 제거해야 하는 임무가 생겼습니다. 이것을 도와주는 2개의 프로그램이 aptitude와 synaptic입니다.
처음에 aptitude를 통해 Obsolete and Locally Created Packages에서 관련된 파일들을 볼 수 있습니다. 이때, 이 파일들을 제거하면, 의존성으로 인해, 시스템에서 중요한 패키지와 파일이 제거될 수 있습니다. 물론, 라이브시디로 부팅해서 복구할 수 있지만, 초보자에게는 쉽지 않은 과정입니다.
보다 안전한 방법은 해당 패키지를 우분투 패키지 검색 페이지에서 찾아서 덮어쓰는 것입니다.
어쨌든, aptitude로는 남겨진 찌꺼기 패키지를 전부 제거하지 못하고, synaptic을 설치해서, Installed (local or obsolete)에서 관련된 파일들을 전부 덮어씀으로써, 아마도, 우분투 20.04에 있는 파일들로 시스템이 구성된 것으로 판단됩니다.
과도한 패키지를 업데이트하는 PPA는 가능한 피하는 것이 좋겠습니다!! 이런 상황이라면, 우분투 22.04로의 업그레이드가 제대로 이루어지지 않을 가능성도 있습니다.
Using ppa-purge
다른 도구, ppa-purge를 사용해서 복구 시도해 볼 수 있습니다.
- sudo apt install ppa-purge
- sudo ppa-purge ppa:devacom/x11
- sudo ppa-purge ppa:devacom/gnome-40
- sudo ppa-purge ppa:devacom/gnome-41
- sudo apt install ubuntu-desktop gnome-shell gnome-control-center
- sudo apt update
- sudo apt upgrade
- sudo apt autoremove
- reboot
이 방법으로 되돌리면, 그놈이 망가집니다. 아마도 업데이트된 설정을 지우고 문제가 되는 패키지를 찾아서 재설치를 시도하면 복구될 것으로 기대되지만, 위의 방법과 마찬가지로 상당한 시간이 소모될 것으로 보입니다.
Manage btrfs
가상 기계에 설치된 우분투 20.04를 ext4에서 btrfs으로 전환했을 때, 필요한 내용을 기록해 둡니다.
Make sub volume
간혹, 부팅이 되지 않는 경우가 있는데, grub이 바뀌는 과정이 끝나기 전에 가상 기계를 강제 부팅해서 그런 것으로 판단됩니다. 따라서, 마지막 update-grub을 수행한 후에, grub.cfg에서 UUID가 새로운 것으로 바뀌었는지 확인을 하시기 바랍니다. 아니면, 라이브시디로 부팅한 것을 정상적으로 종료하고, 하드디스크로 부팅을 시도해 보시기 바랍니다!!
가상 기계에 설치된 우분투 20.04에서, 하나의 ext4 / 파티션을 btrfs으로 전화하고 @, @home 2개의 서브 파티션으로 나누는 과정입니다.
- sudo su
- lsblk
/dev/vda1 /boot/efi vfat, /dev/vda5 / ext4
- fsck.ext4 -fyv /dev/vda5
- btrfs-convert /dev/vda5
- mount /dev/vda5 /mnt
- btrfs subvolume list /mnt
- cd /mnt
- btrfs subvolume snapshot ./ ./@
- btrfs subvolume create @home
- cp -a home/* @home
- /mnt 아래에 @, @home 및 ext2_saved를 제외한 모든 디렉토리와 파일을 제거
- rm -rf @/home/*
- cd
- umount /mnt
- mount -o subvol=@ /dev/vda5 /mnt
- mount -o subvol=@home /dev/vda5 /mnt/home
- mount -t vfat /dev/vda1 /mnt/boot/efi
- for fs in proc sys dev dev/pts; do mount --bind /$fs /mnt/$fs; done
- chroot /mnt /bin/bash
- blkid /dev/vda5
- nano /etc/fstab
UUID=..... / btrfs noatime,subvol=@,compress=zstd:1 0 1
UUID=..... /home btrfs noatime,subvol=@home,compress=zstd:1 0 1
- grub-mkconfig -o /boot/grub/grub.cfg
- update-initramfs -u
- grub-install /dev/vda
- update-grub
확인
- cat /boot/grub/grub.cfg
Manage btrfs
파티션 테이블을 봅니다
- lsblk
- df -h | grep vda
/dev/vda5 25G 12G 13G 49% /
/dev/vda5 25G 12G 13G 49% /home
/dev/vda1 511M 4.0K 511M 1% /boot/efi
시스템 전체의 서브 볼륨을 확인합니다:
- sudo btrfs subvolume list /
ID 256 gen 3 top level 5 path ext2_saved
ID 257 gen 517 top level 5 path @
ID 258 gen 518 top level 5 path @home
관련 프로그램을 설치합니다:
- sudo apt install snapper apt-btrfs-snapshot
루트 설정을 만듭니다:
- sudo snapper -c root create-config /
- sudo btrfs subvolume list /
ID 256 gen 3 top level 5 path ext2_saved
ID 257 gen 592 top level 5 path @
ID 258 gen 592 top level 5 path @home
ID 268 gen 592 top level 257 path .snapshots
스냅샷을 별도로 관리하고 싶기 때문에, 서브 볼륨 root 아래에 두지 않고, vda5 바로 아래에 두기를 원합니다. 이전의 서브 볼륨을 지웁니다:
- sudo btrfs subvolume delete /.snapshots
- sudo mkdir /.snapshots
- sudo mkdir /mnt/btrfs
- sudo mount /dev/vda5 /mnt/btrfs
- cd /mnt/btrfs
- ls
@ ext2_saved @home
- sudo btrfs subvolume create @snapshots
- ls
@ ext2_saved @home @snapshots
- cd ..
- sudo umount /mnt/btrfs
- sudo rmdir /mnt/btrfs
- cd
- sudo nano /etc/fstab
UUID=xxx / btrfs subvol=@,compress=zstd:1 0 0
UUID=yyy /boot ext4 defaults 1 2
UUID=xxx /home btrfs subvol=@home,compress=zstd:1 0 0
UUID=xxx /.snapshots btrfs subvol=@snapshots 0 0
- sudo mount -a
확인하기
- mount |grep btrfs
/dev/vda5 on / type btrfs (rw,noatime,compress=zstd:1,space_cache,subvolid=257,subvol=/@)
/dev/vda5 on /home type btrfs (rw,noatime,compress=zstd:1,space_cache,subvolid=258,subvol=/@home)
/dev/vda5 on /.snapshots type btrfs (rw,relatime,compress=zstd:1,space_cache,subvolid=269,subvol=/@snapshots)
서브 볼륨의 기본 볼륨을 root 서브 볼륨으로 바꿉니다:
- sudo btrfs subvolume get-default /
ID 5 (FS_TREE)
- sudo btrfs subvolume set-default 256 /
- sudo btrfs subvolume get-default /
ID 256 gen 3 top level 5 path ext2_saved
그럽에서 rootflags=subvol=@를 제거하고 부팅을 해야 하는데, 이 과정을 해야 롤백이 됩니다.
- sudo apt install grub-customizer
오류가 발생합니다:
- sudo rm /etc/apt/apt.conf.d/80-btrfs-snapshot
- sudo apt install grub-customizer
rootflags=subvol=@를 찾아서 공백으로 바꿔치기 하고 저장합니다.
- sudo update-grub
- reboot
바뀐 내용 확인
- sudo btrfs subvolume get-default /
ID 256 gen 4822 top level 5 path root
부트로더에서 옵션을 제거하고 재부팅 후에, imitram 프롬트트가 올라오고 부팅이 되지 않을 수 있습니다. 부팅을 이어서 하면, 커널 패닉이 발생할 수 있습니다. 커널을 최신 커널로 올리고 테스트해 보십시오!! 5.15.5 커널을 사용했습니다.
Snapper
이제, 스냅샷을 다루는 것에 대해 알아보려고 합니다.
- sudo snapper ls
이제 하나의 프로그램을 설치해 봅니다:
- sudo apt install neofetch
- sudo snapper ls
# | Type | Pre # | Date | User | Cleanup | Description | Userdata
---+--------+-------+---------------------------------+------+---------+-------------+---------
0 | single | | | root | | current |
1 | single | | Mon 29 Nov 2021 01:09:14 AM KST | root | number | boot |
2 | pre | | Mon 29 Nov 2021 01:12:46 AM KST | root | number | apt |
3 | post | 2 | Mon 29 Nov 2021 01:12:48 AM KST | root | number | apt |
- neofetch
실행됩니다.
이제 neofetch가 설치되기 전의 상태로 돌아가 보겠습니다:
- sudo snapper rollback 2
Creating read-only snapshot of current system. (Snapshot 4.)
Creating read-write snapshot of snapshot 2. (Snapshot 5.)
Setting default subvolume to snapshot 5.
위에서 오류가 발생하면 아래와 같이 입력해 보십시오.
- sudo snapper --ambit classic rollback 2
이제 확인을 합니다:
- sudo snapper ls
- reboot
롤백이 되는지 확인하려고 합니다.
리부팅 후에 터미널을 열어서 neofetch를 입력해도 실행되지 않습니다. 정상적으로 롤백이 되었음을 알 수 있습니다:
- sudo snapper ls
이제 neofetch가 설치된 3번으로 롤백해 보겠습니다:
- sudo snapper rollback 3
Creating read-only snapshot of current system. (Snapshot 6.)
Creating read-write snapshot of snapshot 3. (Snapshot 7.)
Setting default subvolume to snapshot 7.
- reboot
리부팅 후에 터미널을 열어서 neofetch를 입력하면 실행됩니다. 정상적으로 롤백이 되었음을 알 수 있습니다:
- sudo snapper ls
필요 없는 스냅샷을 지워 보겠습니다:
- sudo snapper delete 4
- sudo snapper ls
ext2_save remove
- sudo mount /dev/vda5 /mnt -o subvol=/
- sudo btrfs subvolume delete /mnt/ext2_saved/