Fedora Linux는 커뮤니티 지원 Fedora Project에 의해 개발된 리눅스 배포판으로, 주로 IBM의 자회사, Red Hat에 의해 후원을 받고 다른 회사로부터 추가적인 지원을 받습니다. Fedora는 다양한 자유와 오픈-소스 라이선스에 따라 배포되는 소프트웨어를 포함하고 있고 자유 기술의 선두에 서기를 목표로 합니다. Fedora는 상용 Red Hat Enterprise Linux 배포판과 CentOS에 대한 업스트림 소스입니다. Fedora는 RHL이 2003년에 중단된 이후 레드햇 리눅스의 분기입니다.
Fedora 30 출시 이후, 현재 5가지 다른 에디션을 사용할 수 있습니다. 개인용 컴퓨터에 중점을 둔 Workstation, 서버에 중점을 둔 Server, 클라우드 컴퓨팅에 중점을 둔 CoreOS, 컨테이너 기반 워크플로에 특화된 변경 불가능한 데스크톱에 중점을 둔 Silverblue, 및 IoT 장치에 중점을 둔 IoT가 그것입니다.
2016년 2월 기준으로, Fedora는 리눅스 커널의 개발자, Linus Torvalds (2020년 5월 기준)를 포함하여 약 120만 명의 사용자를 보유하고 있습니다.
Installation
설치 매체(DVD/CD) 구하기
토렌트 정보로부터 Fedora 34의 Fedora-Workstation-Live-x86_64-34.torrent를 받았습니다.
Fedora 34
메모리 2G에서도 시스템이 정상적으로 부팅이 되지 않는 것으로 보이고, 4G에서 부팅이 됩니다.
설치 시작
- Welcome: 설치 과정에서 사용할 언어 선택이 있습니다. 기본값으로 한국어로 진행합니다.
- 설치 요약: 키보드, 시간대, Installation destination(파티션), 네트워크를 자동으로 찾아줍니다. 파티션과 관련된 부분을 마무리하셔야 활성화가 됩니다. 파티션을 눌러줍니다.
- 설치 목적지: 하드디스크를 새로 추가할 것이 있는지, 파티션을 별도로 구성할 것인지, 암호화할 것인지를 물어봅니다. 아무것도 하지 않을 것이면, 위쪽의 Done을 눌러줍니다. 보통 한 번에 잘 되지 않을 수 있으니, 두 번 시도하면 잘 됩니다.
- 설치 요약: 파티션 구성이 자동으로 이루어지면서 설치가 가능하도록 단추가 활성화됩니다. begin installagion을 눌러줍니다. 파일시스템을 btrfs으로 만드는 것으로 보입니다.
- 설치 종료
시스템을 다시 시작합니다.
Upgrading Fedora 34 to Fedora 35
업그레이드가 잘 진행되지 않을 수 있으므로, 중요한 데이터는 다른 곳에 백업하시기 바랍니다.
change root user
- su - 또는 sudo -i
update Fedora 34 packages
- dnf --refresh upgrade
reboot system
- reboot
Iinstall dnf-plugin-system-upgrade package
- dnf install dnf-plugin-system-upgrade --best
start upgrading using DNF
- dnf system-upgrade download --refresh --releasever=35
오류가 없는지 확인을 해야 합니다. 시스템마다 다르겠지만, 1858개를 다운로드합니다.
start upgrade process
- dnf system-upgrade reboot
여기서 꽤 시간이 걸리니, 퍼센트가 올라갈 때까지 기다리십시오!!
grub 2 menu boot with latest kernel : 재시작 후에 그럽 메뉴에서 최신 커널로 부팅합니다.
starting system upgrade
dnf-plugin-system-upgrade ugrading Fedora 34 to Fedora 35 : 모든 과정이 끝나고 새로운 시스템으로 접근할 수 있습니다. 그놈 41이 기본입니다.
rebuild the RPM DB
- rpm --rebuilddb
do distro sync
- dnf distro-sync --setopt=deltarpm=0
check all config files
- dnf install rpmconf
- rpmconf -a
Configurations
설정 시작을 누릅니다:
- 개인 정보:
- 온라인 계정 연결
- 사용자 정보
- 암호 지정
- 설치 완료
입력기 : 우측 상단에 ko를 눌러서 입력기를 한국어 (Hangul)을 선택해 줍니다. 이제 ⇧ Shift+Space로 입력기 전환이 이루어집니다.
언어 : 설정에 들어가셔서 지역 및 언어를 눌러서 English를 선택하고 재 로그인합니다. 빠른 미러 찾기
- sudo /etc/dnf/dnf.conf
맨 아래에 fastestmirror=1 추가
시스템 업데이트 : 시스템을 최신의 상태로 만들어야 합니다. 정보를 받아오는데 꽤 시간이 걸립니다.
- sudo dnf update
한글 글꼴
- sudo dnf install google-noto-cjk-fonts
Yaru theme
- sudo dnf install yaru-theme
우분투 폰트 : 인터넷으로 ubuntu-font-family Fedora 34로 검색해서 받아서 사용했습니다.
Manage btrfs
파티션 테이블을 봅니다
- lsblk
- df -h | grep vda
/dev/vda2 19G 4.2G 15G 23% /
/dev/vda2 19G 4.2G 15G 23% /home
/dev/vda1 976M 258M 652M 29% /boot
시스템 전체의 서브 볼륨을 확인합니다:
- sudo btrfs subvolume list /
ID 256 gen 4784 top level 5 path home
ID 258 gen 4782 top level 5 path root
ID 262 gen 4765 top level 258 path var/lib/machines
관련 프로그램을 설치합니다:
- sudo dnf install snapper python3-dnf-plugin-snapper
루트 설정을 만듭니다:
- sudo snapper -c root create-config /
- sudo btrfs subvolume list /
ID 256 gen 4793 top level 5 path home
ID 258 gen 4793 top level 5 path root
ID 262 gen 4765 top level 258 path var/lib/machines
ID 270 gen 4793 top level 258 path .snapshots
스냅샷을 별도로 관리하고 싶기 때문에, 서브 볼륨 root 아래에 두지 않고, vda2 바로 아래에 두기를 원합니다. 이전의 서브 볼륨을 지웁니다:
- sudo btrfs subvolume delete /.snapshots
- sudo mkdir /.snapshots
- sudo mkdir /mnt/btrfs
- sudo mount /dev/vda2 /mnt/btrfs
- cd /mnt/btrfs
- ls
home root
- sudo btrfs subvolume create snapshots
- ls
home root snapshots
- cd ..
- sudo umount /mnt/btrfs
- sudo rmdir /mnt/btrfs
- cd
- sudo nano /etc/fstab
UUID=xxx / btrfs subvol=root,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
서브 볼륨의 기본 볼륨을 root 서브 볼륨으로 바꿉니다:
- sudo btrfs subvolume get-default /
ID 5 (FS_TREE)
- sudo btrfs subvolume set-default 258 /
- sudo btrfs subvolume get-default /
ID 258 gen 4822 top level 5 path root
그럽에서 rootflags=subvol=root를 제거하고 부팅을 해야 하는데, 이 과정을 해야 어떤(?) 부분의 롤백이 제대로 된다고 합니다. 관련 문서를 찾아봐야겠습니다.
- sudo grubby --info=ALL
args="...rootflags=subvol=root..."
이제 해당 인수를 제거합니다.
- sudo grubby --update-kernel=ALL --remove-args="rootflags=subvol=root"
- sudo grubby --info=ALL
- reboot
바뀐 내용 확인
- sudo btrfs subvolume get-default /
ID 258 gen 4822 top level 5 path root
Snapper
이제, 스냅샷을 다루는 것에 대해 알아보려고 합니다.
- sudo snapper ls
이제 하나의 프로그램을 설치해 봅니다:
- sudo dnf install neofetch
- sudo snapper ls
# | Type | Pre # | Date | User | Cleanup | Description | Userdata
---+--------+-------+---------------------------------+------+---------+-------------------------------+---------
0 | single | | | root | | current |
1 | pre | | Sun 28 Nov 2021 01:56:29 AM KST | root | number | /usr/bin/dnf install neofetch |
2 | post | 1 | Sun 28 Nov 2021 01:56:31 AM KST | root | number | /usr/bin/dnf install neofetch |
이제 neofetch가 설치되기 전의 상태로 돌아가 보겠습니다:
- sudo snapper rollback 1
오류가 발생합니다:
- sudo snapper --ambit classic rollback 1
Ambit is classic.
Creating read-only snapshot of current system. (Snapshot 3.)
Creating read-write snapshot of snapshot 1. (Snapshot 4.)
Setting default subvolume to snapshot 4.
- sudo snapper ls
- reboot
롤백이 되는지 확인하려고 합니다.
리부팅 후에 터미널을 열어서 neofetch를 입력해도 실행되지 않습니다. 정상적으로 롤백이 되었음을 알 수 있습니다:
- sudo snapper ls
이제 neofetch가 설치된 2번으로 롤백해 보겠습니다:
- sudo snapper rollback 2
Ambit is classic.
Creating read-only snapshot of current system. (Snapshot 5.)
Creating read-write snapshot of snapshot 2. (Snapshot 6.)
Setting default subvolume to snapshot 6.
- reboot
리부팅 후에 터미널을 열어서 neofetch를 입력하면 실행됩니다. 정상적으로 롤백이 되었음을 알 수 있습니다:
- sudo snapper ls
필요 없는 스냅샷을 지워 보겠습니다:
- sudo snapper delete 4
- sudo snapper ls
cron job
이런 식으로 스냅샷이 쌓이면, 디스크가 금방 차기 때문에, 크론 작업을 통해, 원하는 것을 남기고 지울 수 있습니다:
먼저 설정을 확인해 봅니다.
- sudo nano /etc/snapper/configs/root
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="3"
TIMELINE_LIMIT_DAILY="5"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="0"
TIMELINE_LIMIT_YEARLY="0"
적당히 바꿉니다.
그런-다음, 크론을 설치합니다:
- sudo dnf install cronie
상태를 확인하고, 서비스가 동작 중이 아니면, 시작하십시오:
- systemctl status crond.service
- sudo systemctl start crond.service
- sudo systemctl enable crond.service
Troubleshootings
Selinux disable
/etc/sysconfig/selinux에서 바꿉니다.
SELINUX=disabled
재시작하면 적용됩니다.