이 글의 목적
디스크를 zfs로 파티셔닝 하고 서브 볼륨을 만들려면 이 OS가 zfs를 관리할 수 있어야겠지요.
그래서 live(?) boot OS에서 zfs 패키지를 빌드하고 설치하기 위한 준비를 합니다.
요구사항
여기부터 공식 절차를 따라 합니다.
zfs 소스를 받고 빌드하며, dnf로 zfs 파티션에 OS를 설치해야하므로 인터넷 연결이 필요합니다.
SSH 연결이 필요하다고 하는데, 우리는 live boot linux 설치 과정에서 root 계정에 대해 SSH 암호 로그인을 허용하였습니다.
당연히 SSH도 켜져 있습니다.
애플 실리콘 분들은 이 과정은 맥에서 진행해주시면 됩니다.
1. 보안 기능들은 끕니다.
이 OS는 zfs를 설치한 이후 더 이상 사용하지 않을 OS입니다.
그래서 보안을 다 꺼버리고 진행할 예정입니다
setenfortce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
2. epel repo를 활성화합니다.
dnf config-manager --set-enabled crb
dnf install epel-release
3. build에 필요한 패키지를 설치합니다
sudo dnf install --skip-broken epel-release gcc make autoconf automake libtool rpm-build kernel-rpm-macros libtirpc-devel libblkid-devel libuuid-devel libudev-devel openssl-devel zlib-devel libaio-devel libattr-devel elfutils-libelf-devel python3 python3-devel python3-setuptools python3-cffi libffi-devel kernel-abi-stablelists git-core nano -y
sudo dnf install --skip-broken --enablerepo=epel python3-packaging dkms kernel-devel kernel-devel-$(uname -r)
4. 커널 버전을 맞추기 위하여 업데이트를 진행합니다.
zfs disk에는 커널을 설치할 때 dnf install
을 이용하여 최신 버전을 설치합니다
하지만 지금 부팅한 live boot
는 os install disk
에 있는 local repo의 커널이죠.
커널 버전이 다르면 문제가 발생하므로 업데이트는 필수입니다.
sudo bash -c 'dnf update -y --allowerasing --skip-broken && dnf upgrade -y --allowerasing --skip-broken && reboot'
5. 소스 다운로드 및 빌드 준비
# /(root)에서 빌드
cd /
#download zfs from git
git clone https://github.com/openzfs/zfs
#build
cd ./zfs
git checkout master
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
sh autogen.sh
6. 빌드
./configure --prefix=/usr --with-spec=redhat --with-dracutdir=/usr/lib/dracut
make -j$(nproc) rpm-utils rpm-kmod
6번까지의 과정을 맥에서 진행하신 분들은 live boot의 boot partition에 zfs 폴더를 통채로 넣어줍니다.
설치는 RHEL-based distro: RHEL Root on ZFS를 따르다 보면 설치하는 타이밍이 있습니다.
지금 설치해도 무방하지만, 순서가 뒤바뀌면 헷갈릴 수 있으므로 공식적인 절차에서 설치하라고 안내할 때 설치하도록 하겠습니다.
정리
arm용 zfs가 존재하지 않기 때문에 우리는 zfs를 소스로부터 직접 빌드하였습니다.
라즈베리파이는 사양이 낮으므로 다른 arm 컴퓨터에서 빌드하는 것을 추천합니다.
x86에서 arm용으로 크로스 컴파일 할수도 있습니다.
다음 게시글에서는 zfs 패키지를 설치하고, zfs로 파티션을 생성할 것입니다.
목차
- 준비물
- 디스크 파티션 및 OS install disk 생성
- 뭔가 이상한(?) live boot disk 만들기
- 이것으로 뭔가 이상한 라이브 부트 이미지로 부팅했습니다.
공식 튜토리얼에 따르면 이제 두줄 진행했어요.ㅎㅎㅎㅎㅎ - zfs 패키지 준비하기 (참조: Custom Packages: rpm)
- boot disk 파티셔닝 (파티션 번호 주의) (참조: RHEL Root on ZFS)
- linux core 설치
- zfs disk로 chroot하여 zfs 설치 및 부트로더 설정
- tmpfs, swap 설정(root on zfs의 ubuntu 참조))
- 주의사항 – 제가 경험한 문제들 (스냅샷, grub2 pc module, dracut location, grub2-mkconfig, kernel-abi abailbility list, passwd 전 selinux 끄기, lib modules/* 사용하지 말기, pv dd로 boot pool 백업하기. )
답글 남기기