Squashfs 이미지를 사용하여 rootfs로 부팅하는 방법

Squashfs 이미지를 사용하여 rootfs로 부팅하는 방법

USB 드라이브에 라이브 ISO를 넣고 GRUB2를 사용하여 부팅 메뉴를 만들려는 시스템 루트에서 squashfs 이미지를 만들었습니다.

Squashfs 이미지를 루트 파일 시스템으로 지정하려면 어떤 커널 부팅 매개변수를 사용해야 합니까?

나는 그것을 grub 구성으로 사용하지만 Dracut실패하다루트 찾기 및 마운트:

insmod gzio
insmod xzio
insmod part_msdos
insmod squash4
insmod iso9660
insmod ext2
insmod btrfs
insmod regexp
menuentry 'Fedora Workstation' {
    set imgfile=/images/fedora*.squashfs
    loopback loop0 /$imgfile
    linux16 (loop0)/boot/vmlinuz-4.1.8-200.fc22.x86_64 ro rd.fstab=0 root=$imgfile elevator=deadline enforcing=0 #rhgb quiet LANG=en_US.utf8
    initrd16 (loop0)/boot/initramfs-4.1.8-200.fc22.x86_64.img
}

답변1

제 생각에는 initramfs를 계속 사용해야 한다고 생각합니다. 거의 모든 작업이 가능하지만 squashfs 파일 시스템 커널 모듈이 필요합니다.(아직 커널에 컴파일되지 않은 경우)initramfs 이미지에.

대부분의 initramfs 시스템은 fstab을 존중하며 Dracut도 마찬가지입니다. 따라서 두 개의 /etc/fstab파일( .sfs이미지에 하나, initramfs 이미지에 하나)만 구성하면 됩니다.

{   cd /tmp; cat >fstab
    mkdir -p sfs/sfs sfs/usb
    dracut  -i fstab /etc/fstab     \
            -i sfs sfs              \
            --add-drivers overlay   \
            --add-drivers squashfs  \
            initramfs.img 
}   <<"" #FSTAB
    UUID={USB-UUID}     /sfs/usb    $usbfs      defaults    0 0
    /sfs/usb/img.sfs    /sfs/sfs    squashfs    defaults    0 0

솔직히 말해서 저는 dracutinitramfs 빌드 시스템에 완전히 익숙하지 않기 때문에 이 명령을 성공적으로 완료하려면 몇 가지 사항이 필요할 수 있습니다. 대부분의 initramfs 설치 설정 방법과 man페이지에서 찾은 정보 에 대해 전반적으로 익숙해지고 있습니다.dracut 여기. 추가 조립이 필요할 수 있지만 이렇게 하면 잘 진행될 것입니다.

적절한 /etc/fstabinitramfs를 설치한 후에는 다음 루트 장치 관련 매개변수를 사용하여 overridefs rootfs를 얻을 수 있어야 합니다.

root=overlay \
rootfstype=overlay \
rootflags=\
lowerdir=/sfs/sfs,\
upperdir=/sfs/usb/persist,\
workdir=/sfs/usb/tmp

이는 USB 드라이브에 라는 이름의 디렉토리 /persist와 이름이 다른 빈 디렉토리가 있고 /tmp, squashfs 이미지가 이름이 있는 USB 파일 시스템의 루트에서 찾을 수 있다고 가정합니다 /img.sfs.

관련 정보