持久 Debian Live HDD

持久 Debian Live HDD

我想要进行持久实时启动,其中我可以将数据存储在从硬盘驱动器启动的 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”方法创建分区表和多个分区。详情请参阅这个链接那个链接

  • mkusb-plug 并选择“持久”(或在 mkusb-sedd 中“--pder”)

    此方法使用 sed “半克隆”iso 文件,将引导选项添加persistent到从 iso 文件克隆到目标设备的内容中。除此之外,iso 文件副本“后面”的驱动器剩余部分将被格式化为提供持久性的文件系统。

它应该是直接的。mkusb-dus可以在图形模式和文本模式下工作。mkusb-plug仅适用于图形模式,但您可以mkusb-sedd在文本模式下使用“手动”并获得相同的结果,因为mkusb-plugmkusb-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 根分区的 UUIDcc633...来可靠地识别目标设备。您可以通过以下方式找到此 UUID

       lsblk -o name,size,uuid
      

      您应该修改此 UUID 以匹配您的特定系统。

    • persistent被添加到“标准”live Linux 命令行中。

    • 最后两行提供了一种显示 grub 菜单的“硬”方法。

  • 这些编辑/etc/grub.d/40_custom将通过运行激活

    sudo update-grub
    

    您应该在下次启动(或重新启动)时注意到它。

相关内容