我想要进行持久实时启动,其中我可以将数据存储在从硬盘驱动器启动的 debian iso 上。所以我下载了 debian-live(这里),修改 grub 条目以能够启动进入实时系统:`
menuentry "Debian modified" {
set iso_path="/live-boot/debian-live.iso"
export iso_path
loopback loop $iso_path
set root=(loop)
set loopback="findiso=${iso_path}"
export loopback
linux /live/vmlinuz-5.10.0-13-amd64 boot=live persistence components keyboard-layouts=de splash verbose "$loopback"
initrd /live/initrd.img-5.10.0-13-amd64
}
我可以启动进入实时系统,但是当我想在其中存储数据时,重新启动后数据就会丢失。我在这里的 grub 条目中做错了什么吗?
这也可能对您有用,df -ha
在实时启动时,我会得到以下输出(缩写为相关部分):
FS Size Used Avail Use Mounted on
/dev/sda1 ... ... ... ... /run/live/persistence/sda1 <= my main partition (also from where the boot is happening)
/dev/loop0 .. ... ... ... /run/live/medium
/dev/loop1 .. ... ... ... /run/live/rootfs/filesystem.squashfs
tmpfs ... ... ... ... /run/live/overlay
overlay ... ... ... ... /
tmpfs ... ... ... ... /usr/lib/live/mount
/dev/loop0 .. ... ... ... /usr/lib/live/mount/medium
/dev/loop1 .. ... ... ... /usr/lib/live/mount/rootfs/filesystem.squashfs
/dev/sda1 .. ... ... ... /usr/lib/live/mount/persistence/sda1
tmpfs ... ... ... ... /usr/lib/live/mount/overlay
实时启动时的 fstab 给出以下输出:
overlay / overlay rw 0 0
tmpfs /tmp tmpfs nosuid,nodev 0 0
回报mount | grep overlay
:
tmpfs on run/live/overlay type tmpfs (rw,noatime,mode=755)
overlay on / type overlay (rw,noatime,lowerdir=/run/live/rootfs/filesystem.squashfs/,upperdir=/run/live/overlay/rw,workdir=/run/live/overlay/work)
tmpfs on /usr/lib/live/mount/overlay type tmpfs (rw,noatime,mode=755)
我还手动尝试将覆盖直接安装到持久分区(sda1),并将持久存储作为 upperdir / workdir ,这会导致
overlay on / type overlay (rw,noatime,lowerdir=/run/live/rootfs/filesystem.squashfs/,upperdir=/run/live/persitence/sda1/rw,workdir=/run/live/persistence/sda1/work
当然,我在持久分区上创建了这些目录;-) ...但它仍然无法持久存储数据,我不知道该怎么办。
那么我该如何修改这一切,以便能够在 live-iso 上存储数据,并且在重新启动时不会丢失存储的数据呢?
答案1
原创建议
您可以使用姆库斯布从当前的 Debian live iso 文件创建持久的 live 驱动器。
mkusb-dus 并选择“dus-持久”
mkusb-plug 并选择“持久”(或在 mkusb-sedd 中“--pder”)
此方法使用 sed “半克隆”iso 文件,将引导选项添加
persistent
到从 iso 文件克隆到目标设备的内容中。除此之外,iso 文件副本“后面”的驱动器剩余部分将被格式化为提供持久性的文件系统。
它应该是直接的。mkusb-dus
可以在图形模式和文本模式下工作。mkusb-plug
仅适用于图形模式,但您可以mkusb-sedd
在文本模式下使用“手动”并获得相同的结果,因为mkusb-plug
是mkusb-sedd
.详情请参阅这个链接。
与OP讨论后修改建议
经过讨论(在评论中),我建议使用以下方法在带有 Ubuntu Server 的驱动器中创建持久的实时 Lubuntu 系统。 (您可能更喜欢另一种 Ubuntu 风格,所有当前的官方 Ubuntu 桌面系统和社区风格都应该在这里工作。)
我通过解压创建了 Ubuntu Server 22.04 LTSjammy-预装-服务器-amd64.img.xz并将其克隆到 SSD。用 mkusb 很方便。
我启动到 Ubuntu Server 并检查它是否正常工作。用户名是“ubuntu”。在此过程中,我还将密码从“ubuntu”更改为其他内容。服务器自动扩展其根分区以使用整个驱动器。
我看不出使用文件进行持久性的好方法,相反,我建议从另一个驱动器启动并使用
gparted
缩小 Ubuntu Server 的根分区(通过移动其尾端),并在创建的未分配空间中创建一个新分区ext4 文件系统并对其进行标记writable
。您可以看到 的挂锁符号
/dev/sdc1
。表示该分区已挂载,必须先卸载后才能收缩。然后启动到 Ubuntu Server 并
Live
在主目录中创建一个目录:/home/ubuntu/Live
例如
lubuntu-22.04-desktop-amd64.iso
,通过sftp
进入此目录。为持久实时系统创建一个菜单条目
sudo nano /etc/grub.d/40_custom
并使其看起来像下面这样
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. # menuentry "Lubuntu 22.04 ISO" { set isofile="/home/ubuntu/Live/lubuntu-22.04-desktop-amd64.iso" # or set isofile="/<username>/Live/lubuntu-22.04-desktop-amd64.iso" # if you use a single partition for your $HOME rmmod tpm search --set=root --fs-uuid cc633893-7fde-4185-b852-7b886f51ff7f loopback loop ($root)/$isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject persistent initrd (loop)/casper/initrd } set timeout_style=menu set timeout=10
请注意
我使用 Ubuntu Server 根分区的 UUID
cc633...
来可靠地识别目标设备。您可以通过以下方式找到此 UUIDlsblk -o name,size,uuid
您应该修改此 UUID 以匹配您的特定系统。
persistent
被添加到“标准”live Linux 命令行中。最后两行提供了一种显示 grub 菜单的“硬”方法。
这些编辑
/etc/grub.d/40_custom
将通过运行激活sudo update-grub
您应该在下次启动(或重新启动)时注意到它。