AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 778116
Accepted
Ray Andrews
Ray Andrews
Asked: 2024-06-11 09:52:40 +0800 CST2024-06-11 09:52:40 +0800 CST 2024-06-11 09:52:40 +0800 CST

您能为 USB 驱动器制作自己的 .iso 吗?

  • 772

所以我得到了一个装有我自己的 Debian 运行副本的 USB 盘,并且启动正常。问题是忘记 EFI,只需使用老旧的 LILO 即可使其可启动 - 无需大惊小怪,没有混乱。但是他们说 USB 盘不喜欢不断写入,而 Debian 的运行副本正在被 Firefox 和 systemd 日志以及其他任何东西不断写入。所以我想到,由于您从 .ISO 文件创建的库存安装“实时”USB,据我所知,从未真正写入任何东西 - 所有看似写入的都是 RAM 中的映像,当您注销时就会消失。所以我想到要问一下我是否可以制作我自己的系统的 ISO 并让它也作为“实时”USB 工作。关键是 ISO 吗?还是有其他方法?也许它必须是 EFI?

live-usb
  • 2 2 个回答
  • 1534 Views

2 个回答

  • Voted
  1. Best Answer
    Stephen Kitt
    2024-06-11T15:38:17+08:002024-06-11T15:38:17+08:00

    实时系统避免使用各种技术(完全从内存运行、在只读文件系统之上覆盖基于 RAM 的文件系统等)写入其底层存储;这就是产生您感兴趣的行为的原因。它们如何启动或您下载的用于创建它们的文件的扩展名并不相关。

    您可以创建自己的实时系统。由于您使用的是 Debian,我建议您查看用于创建Debian 自己的实时映像的工具集。软件包live-build中有详细的手册,但您可能会发现关注用户的帖子(例如Ian LeCorbeau 的)live-manual会更容易,这些帖子解释了他们如何使用这些工具。

    还可以手动准备实时图像;如果操作正确,这将允许您根据现有设置创建实时图像。有关详细信息,请参阅Will Haley 关于该主题的帖子。

    • 13
  2. telcoM
    2024-06-11T13:34:57+08:002024-06-11T13:34:57+08:00

    简而言之,回答标题中的问题:是的,你可以。但你可能不想这么做。

    您正在将几个不相关的概念组合在一起。

    EFI 和 BIOS(由 LILO 使用)是启动方法。两者都可用于启动常规操作系统安装和“实时”媒体 - 硬盘、USB 或 CD/DVD/蓝光。使用原生 EFI 启动方法可启用一些新功能,例如使用在正在运行的操作系统中配置固件启动选项的标准方法efibootmgr,以及使用安全启动的选项。但除此之外,一旦 Linux 内核启动,引导加载程序的工作就完成了,内核 + initramfs 将完全控制之后发生的事情。

    正确的 .ISO 文件是 ISO9660 文件系统的映像,主要用于刻录到 CD/DVD/蓝光光盘 - 因此,它一度是分发操作系统安装介质的一种有用方式。后来,Linux 发行版开始混合它们的 .ISO 文件,以便它们可以写入类似 HDD 的介质(如 USB 棒)并以此方式启动。这通常需要嵌入第二个引导加载程序,而当映像刻录到 CD/DVD/蓝光光盘时不会使用该引导加载程序。

    如果您想构建自己的“实时”Linux USB 棒,您可以这样做 - 但如果您不打算将其副本刻录到 CD/DVD/蓝光上,那么将其制作成合适的 ISO 映像(=使用 ISO9660 文件系统并将其混合用于 USB 启动)将需要做很多不必要的工作。您仍然可以制作 USB 的磁盘映像,但您不应将其称为 ISO,而应称为“磁盘映像”(.IMG或.IMA文件,如 HDD/SSD 映像)。它仍然可以像典型的 Linux ISO 映像一样写入另一个 USB 棒。

    使用 ISO 文件不会使 Linux 安装成为“实时”媒体;其 initramfs 处理安装根文件系统的方式却能做到这一点。如果它不安装常规的基于磁盘的文件系统,而是将根文件系统设置为 RAMdisk,或者使用将overlayfs媒体中的只读根文件系统映像 + RAMdisk 上的一组可写入更改合并(或合并到媒体上的可用空间以用于持久实时媒体),则它就是“实时”媒体安装。

    如果您想要基于 Debian 的自定义实时 USB,一种简单的设置方法可能是在虚拟机中安装 Debian 以方便开发,添加实时媒体辅助包(如bilibop-lockfs或)overlayroot并根据实时媒体行为对其进行适当配置,进行任何必要的转换(如构建 squashfs 或类似的根文件系统映像),然后将整个安装的必要部分复制到 USB 并在其上安装引导加载程序。此时,必要的部分(除引导加载程序外)可能只有三个文件:

    • 内核文件
    • initramfs 文件
    • squashfs 或其他类型的只读基本根文件系统映像

    但是如果您喜欢挑战,理论上您甚至可以从 Scratch风格开始设置Linux ……整个过程中无需构建自定义 ISO。

    根据您的问题,我认为您还没有准备好开始设置您自己的自定义实时 Linux。我建议您挑选一个您选择的实时 Linux 媒体:提取其 initramfs 文件的内容,然后阅读其启动脚本以了解其工作原理以及它可能使用哪些实时媒体特定工具。一旦您对该过程涉及的内容有了更清晰的认识,您就可以开始您自己的实时 Linux 项目了。

    • 10

相关问题

  • 如何格式化 linux liveusb 以便 grub 可以读取它?

  • 关于 `dd`、iso 映像和 linux 设备的一般问题

  • 实时启动后移除可启动 USB

  • 1GB RAM 上 AMD Sempron 2800+ 的 linux [关闭]

  • 最后的尾巴安装问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve