Ubuntu / OpenSuse Tumbleweed: rEFInd, Btrfs Subvolume 을 사용한 공존.

본문에 앞서:

리눅스 배포판 2개 이상, 또는 여기에 MS 윈도우, 나아가서 해킨토시 등등을 쓰려면, 적어도 내가 아는 선에선 rEFInd 가 최선이다. 따라서, 이 글에선 기본 부트관리자(Bootloader)인 Grub 을 사용하지 않고 refind 를 사용하려 한다.

Ubuntu 는 Ext4 를 기본으로, OpenSuse 는 Btrfs 를 기본으로 사용하는데, 우분투도 Btrfs 로 설치한 뒤, @home 서브볼륨을 함께 사용하도록 하는게 이 글의 주 목적이다.


우분투 설치 시에, ubiquity -b 로 하고, 파일시스템은 Btrfs 로 선택한다.
물리 디스크가 1개라면, 각 배포판이 들어갈 공간을 나눠주고, 가능한한 home 이 들어갈 공간도 따로 해주는 편이 좋다. 그래야 나중에 새 배포판 설치(또는 지우고 새로 설치)하기가 쉽다.

예를 들면 이런 식으로.

sda           8:0    0 465.8G  0 disk 
├─sda1        8:1    0   500M  0 part 
├─sda2        8:2    0  29.3G  0 part 
├─sda3        8:3    0  19.5G  0 part 
├─sda4        8:4    0  19.5G  0 part 
├─sda5        8:5    0  19.5G  0 part 
├─sda6        8:6    0  19.5G  0 part 
└─sda7        8:7    0 357.9G  0 part /home

sda 는 500GB 이고, sda1 은 ESP 용, sda2~sda6 는 배포판용(약 20~30GB), 마지막 sda7 은 home 디렉토리를 위한 파티션이다.

저 디스크를 사용하기로 가정한다면, refind 는 sda1 에, 우분투는 sda2 에, 텀블위드는 sda3, 그리고 home 은 sda7 에 들어간다. (이 글에서도 비슷한 상황을 가정했다. home 은 sda4 라는 사실만 다르다.)

우분투 설치에 대한 자세한 내용은 다음 글을 참고한다.

우분투 설치에 성공했다면, 이제 텀블위드를 설치할 차례다. 텀블위드는 우분투와는 비교도 안될 정도로 멋있고(?), 자세한 설치 화면을 제공해준다.

** 미리보기?
설치가 다 끝나면, 이런 화면을 볼 수 있게 된다.

Kubuntu 19.04 와 OpenSuse Tumbleweed 가 설치된 상황.

중요한 부분은, Disk Partitiong 이다. 텀블위드의 기본 설정/제안은 다음과 같다.

내가 애써 만든 걸 다 지우려 한다.

sda2~4 를 모두 지우고 새로 설치를 하겠다는 제안을 해왔다. 내가 원하는 건 이런 게 아니다.

위 제안은 무시하고, Expert Partitioner (Start with Existing Partitions) 으로 들어간다. (Guided Setup 으로는 자세한 설정이 불가능하다.)

맨 먼저, /dev/sda1 으로 가서, Mount Device 를 선택한다. 우분투도 그렇고 ESP 는 /boot/efi 아래로 마운트하는게 기본인 듯 하다.

사실 이 작업은 지금은 안해도 된다. 나중에 시스템 부팅에 성공하고 나서 fstab 을 편집하여 추가해줘도 되지만, 지금 해놓는게 편하다.

이제 루트 파티션을 선택할 차례다. /dev/sda3 으로 이동한다.
sda3 이 Ext4 로 되어 있다. 이걸 Btrfs 로 바꾸고, 이 위치를 / 로 설정해야 한다.
Edit Partition 을 선택한다.

기본 설정은 다음 그림과 같다.

FS를 Btrfs 로 선택하고, / 로 마운트 한다. Fstab 선택사항은, 필요할 경우 적절히 선택한다.

문제는 Subvolume Handling 이다.
현재 home 으로 사용할 독자 파티션이 존재하고 있으므로, 이 파티션에 @home 서브볼륨을 만들 필요는 없다. 따라서, Subvolume Handling 에서, @home 은 제외한다.

불필요하거나, 다른 곳에 존재하는 서브볼륨은 삭제.

grub2 관련 서브볼륨도, 여기선 refind 를 사용할 예정이니 불필요하다. (이 서브볼륨이 없더라도 grub 설치는 된다.)

sda3, 즉 / 는 이것으로 끝이다.

다음은 home 으로 사용할 sda4 를 설정해줘야 한다.

이 부분이 좀 애매하긴 한데..
sda4 는 우분투에 의해서 Btrfs 로 형성되었고, @home 서브볼륨이 이미 생성되어 있다.
일단, @home 이 있는지 확인한다.

@home 이 있다면, 다음과 같이 설정한다. (확실하진 않고, 그냥 경험 지식이다.)

  • Do not format device
  • 일단은 Mount device 를 선택하고, /home 을 택한다.
  • Next 로 일단 빠져나간다.

그 다음, 왼쪽 메뉴에서 Device Graphs 를 살펴본다. @home 서브볼륨이 /home 으로 마운트 되었는지 확인한다.
현재, btrfs Volume Root 도 /home 으로, top level / @home 도 /home 으로 중복 마운트가 되어 있을 것이다.

이 상태를 확인하고, 다시 sda4 로 돌아간 뒤 ‘Do not mount device‘ 를 선택한다.

작업을 완료하고 난 뒤, Device Graphs 를 보고 현재 선택 사항이 잘 정리되어 있는지 확인한다.
중복 마운트가 사라지고, @home 서브볼륨이 제대로 /home 으로 마운트 됐다.

세부 사항은 이렇다.
sda3 는 btrfs 로 설정했고, top level 로 부터 @ 이 서브볼륨으로 설정되었고, 여기에서 또 세부 서브볼륨들이 설정되고 각각 /xxx 로 마운트 된다.

이 작업들을 미루어 짐작하여 정리해보자면 다음과 같다.

** 서브볼륨 마운트
@xxx 형식으로 서브볼륨을 만들고, OpenSuse 설치 관리자에서 이것을 /xxx 로 일단 마운트를 한 뒤, 다시 ‘마운트 하지 않음’ 을 선택하면, 서브볼륨이 제대로 마운트 된다.

서브볼륨을 디렉토리로 명시하여 마운트해주는 작업은 없어보인다.

디스크 작업을 마쳤다면, 최종 상황을 확인한다.

@abcd 는 시험삼아 만들어본, 아무 의미없는 서브볼륨.

sda4/@home 이 /home 으로 설정되어 있음을 볼 수 있다.
다음으로 진행하여, Grub 관련 설정을 해준다.

Installation Overview / Booting 을 선택하고, Not Managed 로 설정을 바꾼다.
refind 가 이미 있으므로, Grub 은 불필요하다.

이제 Install 을 눌러서 설치를 완료하는 작업만 남았다.


설치가 완료된 후, Tumbleweed 로 부팅하여 fstab 을 살펴보면 다음과 같다.

> cat /etc/fstab 
UUID=F4AB-4F0E                             /boot/efi   vfat   codepage=949
UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6  /           btrfs  defaults             0  0
UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6  /var        btrfs  subvol=/@/var        0  0
UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6  /usr/local  btrfs  subvol=/@/usr/local  0  0
UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6  /tmp        btrfs  subvol=/@/tmp        0  0
UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6  /srv        btrfs  subvol=/@/srv        0  0
UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6  /root       btrfs  subvol=/@/root       0  0
UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6  /opt        btrfs  subvol=/@/opt        0  0
UUID=21634e46-b572-47ef-aaf0-a428f8287f54  /home       btrfs  subvol=/@home        0  0
UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6  /abcd       btrfs  subvol=/@/abcd       0  0

> sudo lsblk -f
[sudo] password for root: 
NAME   FSTYPE  LABEL          UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sda                                                                               
├─sda1 vfat                   F4AB-4F0E                                           
├─sda2 btrfs   Kubuntu        10c0dd1b-e258-4346-9cba-5ca59d12879e                
├─sda3 btrfs   suse           3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6    8.1G    34% /
└─sda4 btrfs                  21634e46-b572-47ef-aaf0-a428f8287f54    9.1G     1% /home

sda4 의 @home 이 /home 으로, 시험삼아 만들어본 sda3 의 @abcd 가 /abcd 로 마운트되어 있음을 확인할 수 있다.

마지막으로, 서브볼륨 확인.

> sudo btrfs subvolume list /
ID 256 gen 116 top level 5 path @
ID 258 gen 101 top level 256 path abcd
ID 259 gen 117 top level 256 path var
ID 260 gen 101 top level 256 path usr/local
ID 261 gen 115 top level 256 path tmp
ID 262 gen 101 top level 256 path srv
ID 263 gen 113 top level 256 path root
ID 264 gen 113 top level 256 path opt

> sudo btrfs subvolume list /home 
ID 256 gen 214 top level 5 path @home

정말 마지막으로, Tumbleweed 의 /boot 에 refind_linux.conf 를 만들어주는 편이 좋다. (없어도 문제는 없다.)

"Boot with standard options" "root=UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6 ro quiet splash vt.handoff=7"
"Boot to single-user mode" "root=UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6 ro quiet splash vt.handoff=7 single"
"Boot with minimal options" "root=UUID=3d8a0ecf-1c5c-4f0c-a233-74b0f0527cc6 ro"

subvol 항목이 왜 없어도 되는지에 대한 지루한 얘기는 여기여기에서.

안녕하세요. 글 남겨주셔서 고맙습니다.