为了学习,我想创建一个我的硬盘的迷你副本:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 244M 0 part /boot
└─sda3 8:3 0 930.8G 0 part
└─sda3_crypt 254:0 0 930.8G 0 crypt
├─host--vg-root 254:1 0 25G 0 lvm /
├─host--vg-var 254:2 0 2.8G 0 lvm /var
├─host--vg-swap_1 254:3 0 11.9G 0 lvm [SWAP]
├─host--vg-tmp 254:4 0 380M 0 lvm /tmp
└─host--vg-home 254:5 0 890G 0 lvm /home
在我的特定情况下,设置一个新设备,看起来我的硬盘需要熟悉很多东西,创建分区,创建LUKS设备,打开它们,创建LVM卷等,所以我认为这是一个值得做的练习,至少对于刚接触Linux的人来说。
所以我首先需要一个新设备来玩,而不会弄乱别的东西:
$ dd if=/dev/zero of=loopfile bs=1M count=1024
$ sudo losetup /dev/loop1 loopfile
(使用loop1
而非loop0
已经用于某些其他目的,zero
对于此练习也足够好,因此忽略urandom
。
我的第一个目标是模仿分区sda1/sda2/sda3
$ sudo blkid
/dev/sda1: UUID="08FC-EA23" TYPE="vfat" ...
/dev/sda2: UUID="30b5d595-4986-4f75-962a-7e1f5f03ed4a" TYPE="ext2" ...
/dev/sda3: UUID="a84cc598-9316-48b9-94a9-bb4885e45e9c" TYPE="crypto_LUKS" ...
$ sudo parted /dev/loop1
所以我去创建了三个'主要'分区(第一个使用'fat32',其他两个使用'ext2',不太确定为什么只是猜测),所有尺寸减少了1000倍:
(parted) print
Number Start End Size Type File system Flags
1 512B 1000kB 1000kB primary fat32 lba
2 1049kB 2097kB 1049kB primary ext2 lba
3 2097kB 1074MB 1072MB primary ext2 lba
然后我将这三个设备格式化为与之前的blkid
报告一致:
sudo mkfs -t vfat /dev/loop1p1
sudo mkfs -t ext2 /dev/loop1p2
sudo cryptsetup luksFormat /dev/loop1p3
所以在这一点上,我的分手print
报告和lsblk和blkid一样好看:
$ lsblk
loop1 7:1 0 1G 0 loop
├─loop1p1 259:0 0 976.5K 0 loop
├─loop1p2 259:1 0 1M 0 loop
└─loop1p3 259:2 0 1022M 0 loop
$ sudo blkid
/dev/loop1p1: SEC_TYPE="msdos" UUID="1CD8-2CA5" TYPE="vfat" ...
/dev/loop1p2: UUID="6532dba9-3101-488e-a6d1-e5e1ef4943f7" TYPE="ext2" ...
/dev/loop1p3: UUID="a0e96a54-6d6a-49c8-80fd-03217b25062f" TYPE="crypto_LUKS" ...
/dev/loop1: PTUUID="1de285f7" PTTYPE="dos"
所以我认为我走在了正确的轨道上。我还认为我的循环设备基础的文件loopfile
将包含必要的元数据,因此我不必担心重新启动。由于我只使用设备(不安装它们),我认为不需要任何/etc/fstab
设置......
我遇到的问题是,当我重新启动时,某些设置似乎丢失了。从loopfile
重新创建循环设备后,parted
print
报告仍会显示分区(尽管type
上的信息丢失),但这些分区不再出现在lsblk
或blkid
报告中。我想知道是否有办法使我的设置持久。我在Debian 8上,如果这很重要的话。
答案 0 :(得分:1)
您需要运行losetup -P /dev/loop1 loopfile
。这样做是告诉内核对新添加的文件执行分区表扫描。