我调用的命令如下
- 创建图像文件
dd if=/dev/zero of=benj.luks bs=1k count=666000
- 设置 LUKS 容器
cryptsetup luksFormat benj.luks
- 设置循环设备并打开 LUKS 容器
cryptsetup luksOpen benj.luks benjImage
- 检查循环设备是否已设置并映射
lsblk
输出
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 650.4M 0 loop
└─benjImage 254:1 0 634.4M 0 crypt
- 在 benjImage 上创建文件系统 ext4
sudo mkfs.ext4 -b 2048 -F -F /dev/mapper/benjImage
命令失败
mke2fs 1.46.5 (30-Dec-2021)
mkfs.ext4: Invalid argument while setting blocksize; too small for device
答案1
cat /sys/block/loop0/queue/physical_block_size
cat /sys/block/loop0/queue/logical_block_size
据透露,循环设备被安装为 4096 字节的块设备,无法在其上创建 2048 字节的文件系统。
因此,解决方案是手动设置循环设备并使用 -b 选项将扇区大小定义为 2048,如下所示
sudo losetup -b 2048 -f benj.luks
在步骤 2 之前,然后在 /dev/loop0(或分配的任何循环设备)而不是图像文件上应用连续命令,即
cryptsetup luksFormat /dev/loop0
cryptsetup luksOpen /dev/loop0 benjImage
sudo mkfs.ext4 -b 2048 /dev/mapper/benjImage
瞧