Lvm

掛載失敗 - 無效參數

  • May 29, 2015

我在 SD 卡上設置了 Kali Linux 安裝,並創建了一個加密的 LUKS 分區,裡面有一個 LVM 邏輯卷,然後在裡面創建了一個 BTRFS 文件系統。幾乎一切正常,但解密 LUKS 捲成功後啟動失敗。日誌:

Begin: Loading essential drivers ... done.
Begin: Mounting root file system ... Begin: Running /scrypts/local-top ... [ 8.655803] device-mapper: ioctl: 4.28.0-ioctl (2014-09-17) initialised: dm-devel@redhat.com
[ 8.689182] random: lvm urandom read with 113 bits of entropy available
 Volume group "pi" not found
 Skipping volume group pi
Unable to find LVM volume pi/root
Unlocking the disk /dev/mmcblk0p2 (picrypt)
Enter passphrase:
Reading all physical volumes. This may take a while...
 Found volume group "pi" using metadata type lvm2
 ffff0000-ffff1000 r-xp 00000000 00:00 0    [vectors]: mlock failed: Cannot allocate memory
 1 logical volume(s) in volume group "pi" now active
 ffff0000-ffff1000 r-xp 00000000 00:00 0    [vectors]: munlock failed: Cannot allocate memory
cryptsetup: picrypt set up successfully
done.
Begin: Running /scripts/local-premount ... done.
mount: mounting /dev/mapper/pi-root on /root failed: Invalid argument
Begin: Running /scripts/local-bottom ... done.
done.
Begin: Running /scripts/init-bottom ... mount: mounting /de on /root/dev failed: No such file or directory
done.
Target filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.
modprobe: module i8042 not found in modules.dep
modprobe: module atkbd not found in modules.dep
modprobe: module ehci-pci not found in modules.dep
modprobe: module ehci-orion not found in modules.dep
modprobe: module ehci-hcd not found in modules.dep
modprobe: module uhci-hcd not found in modules.dep
modprobe: module ohci-hcd not found in modules.dep

BusyBox v1.20.2 (Debian 1:1.20.0-7) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off

似乎無法掛載我的根文件系統。在 initramfs 中,我實際上可以使用 fstab 中給出的所有選項很好地掛載 BTRFS 分區。由於某些我無法診斷的奇怪原因,它最初似乎失敗了。

在 initramfs 中,執行以下工作:

mount -t btrfs -o defaults,subvol=@,compress=lzo,ssd,noatime /dev/mapper/pi-root /root

掛載有效,我可以正確看到文件系統。

這是我的/etc/fstab

proc                   /proc    proc     defaults                                      0    0
/dev/mmcblk0p1         /boot    vfat     defaults                                      0    2
/dev/mapper/pi-root    /        btrfs    defaults,subvol=@,compress=lzo,ssd,noatime    0    1

這是我的/etc/crypttab

picrypt /dev/mmcblk0p2 none luks

這是我的核心命令行:

dwc_otg.fiq_fix_enable=1 console=tty1 console=tty1 root=/dev/mapper/pi-root cryptopts=target=picrypt,source=/dev/mmcblk0p2,lvm=pi rootfstype=btrfs rootwait rootdelay=5 ro rootflags=noload,subvol=@

我已經確保 initramfs.gz 是最新的。

再次重申,這是我的設置:

  • SD卡

    • 引導 VFAT 文件系統

    • LUKS 加密 FS ( picrypt)

    • LVM 邏輯卷 ( /dev/mapper/pi-root)

      • BTRFS 文件系統
      • BTRFS 子卷 ( subvol=@)

我的主筆記型電腦上的設置與此完全相同,效果很好。

在引導期間,會發生以下情況,然後會失敗:

  1. 解密 LUKS 卷picrypt:有效
  2. 開放捲組pi和 LV root: Works
  3. root嘗試通過 fstab安裝 LV :失敗並顯示Invalid argument.

Busybox 似乎也因無法訪問 tty 而失敗,但這與問題無關。

如何調試這裡出了什麼問題?

該錯誤是由我的核心行中的此參數引起的:

rootflags=noload,subvol=@

此參數的值直接傳遞給mount作為掛載根文件系統的文件系統選項。通過將調試語句插入/scripts/local(從 生成/usr/share/initramfs-tools/scripts/local),我能夠確定掛載參數出了什麼問題,然後能夠修復我的引導命令行。

引用自:https://unix.stackexchange.com/questions/205987