安装系统用的iso制作与启动U盘后,是否可以继续往U盘写入文件

https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/

我用上面这个链接的iso文件制作启动U盘,是不带wifi驱动的。有是否可以把firmware.zip文件解压然后拷贝到这个U盘里?

这个U盘好像是不可修改的,但我总觉得,应该有一个方法,可以把firmware文件拷贝进去…

如果可以的话,安装时就不需要另外准备第二个U盘了。这对于没有有线网络的情况很方便~

我认为你的做法应当可以。
Debian安装手册-6.4. 加载缺失的固件 (debian.org)

如果没有设备驱动程序所需的固件,debian-installer 将显示对话框要求加载缺失的固件。假如选取了选项,debian-installer 将扫描现有设备松散的固件文件或包含固件的软件包。如果搜索到,固件会被复制到正确的位置 (/lib/firmware ),然后加载驱动程序模块。

debian-installer 应当会扫描现存可用设备的固件文件或固件软件包,而含有固件的ISO在一个支持符号链接的文件系统上挂载,会发现其中包括一个/firmware目录,其中包括指向了固件软件包的符号链接。

所以你应当可以向刻录后的U盘添加固件,我建议把固件软件包放在/firmware目录下。

明白了~

那么接下来要解决的问题就是,在windows系统中找到一个工具,这个工具支持往debian启动U盘里写文件,又不会破坏启动U盘~

以下步骤是否可行?

  1. Index of /debian-cd/current/amd64/iso-dvd 的Debian ISO刻录至U盘。
  2. 挂载U盘。
  3. 建立/firmware目录,将固件文件和软件包复制到该目录下。
  4. 从该U盘引导启动。

iso记录到U盘后,已经存在/firmware目录,但U盘禁止写入文件,会提示无法写入,如下图:

另外,我是在windows环境来操作iso文件,暂时看,应该是直接修改iso比较好:往iso里添加固件文件,然后再把iso记录到U盘~

跟权限问题是否有关?

这个我忽略了~

不过暂时顾不上了,刚才想测试一下,重启的时候死机了,强制断电启动起来以后,登录后直接死机,啥也干不了,我现在是在另一个系统(bullseye)里。

接下来我可能要再重装一下debian10,还好我有个备用系统可以用~

现在我正在刻录安装U盘~

我在windows环境中用ultroISO修改debian iso文件,然后把修改过的iso文件记录到U盘,结果U盘是无法启动的U盘,不能用来安装系统~

我在想应该是ultroISO可能需要设置引导方面的选项,后续有机会再测~

权限问题暂时没有机会测,回头再有机会的时候我测试一下~

我在用sudo权限复制时,提示是只读文件系统,看来是不能写入~

可能是刻录程序的问题。你使用什么程序刻录安装U盘?
注意:使用Live ISO刻录的U盘是不可写的,只能通过 persistence 保留其更改。

sudo cp debian.iso /dev/sdd

按手册来的,没使用专门的程序~

如果按照这种方法刻录安装U盘的话,参见
4.3. 为从 U 盘引导准备文件 :

The hybrid image on the stick does not occupy all the storage space, so it may be worth considering using the free space to hold firmware files or packages or any other files of your choice. This could be useful if you have only one stick or just want to keep everything you need on one device.

Create a second, FAT partition on the stick, mount the partition and copy or unpack the firmware onto it.
For example:

# mount /dev/sdX2 /mnt
# cd /mnt
# tar zxvf /path/to/firmware.tar.gz
# cd /
# umount /mnt

You might have written the mini.iso to the USB stick. In this case the second partition doesn’t have to be created as, very nicely, it will already be present. Unplugging and replugging the USB stick should make the two partitions visible.

我试一下,先把u盘分成两个区,然后再写入iso看看~

windows环境下,已经写好的U盘没有空余空间~

启动U盘创建以后,用partitionmanager查看,会提示“在此设备上未找到有效的分区表”;

用sudo cfdisk /dev/sdd,会提示有一个剩余空间,而这个剩余空间的容量等于U盘的全部空间容量
除了这个剩余空间,还有两个分区,一个是3.7G,另一个是2.8M。

这种情况下,好像无法再创建一个新分区,因为创建新分区会破坏这个安装U盘: partitionmanager认为整个U盘是空闲,没有任何分区,连分区表都没有。cfdisk虽然可以看到两个分区,但从空闲空间创建新分区时,已经创建的3.7G分区会被破坏~

如果在windows中用磁盘管理查看,会显示U盘有一个14.75GB未分配空间。而我这个U盘是16G的,所以,也无法创建新分区~

所以,debian 安装手册里的这一段描述,是不是已经过时了~

经过我的实验,虽然分区工具检测不到镜像文件,但是它仍然存在并占据着空间,只要在新建分区时从末端小心地为镜像文件预留空间就能够正常新建分区且这样修改的U盘能够成功引导。我推测这是分区工具不支持ISO9660格式造成的。
@yichuang 如果你使用Windows刻录安装U盘,可以考虑使用Rufus

windows的磁盘管理工具好像不支持预留空间从后端创建分区~

Windows下确实不行,不过Linux上常见的分区工具都支持这么做。在Windows下……使用Rufus看看?

我正在用rufus写u盘,不过好像不支持写到分区,必须写到整个u盘,等写完我看一下结果~

Rufus “ISO模式”的原理似乎是在U盘上新建FAT分区,设置引导选项,然后手动从ISO复制文件,相当于
https://www.debian.org/releases/stable/amd64/ch04s03.zh-cn.html#usb-copy-flexible
给出的方法,不过是由程序自动完成的,所以你应该完全可以在写入完成后新建/firmware目录并复制固件软件包到其中。

写入之前有一个提示,可以选择ISO还是DD,我想这个选项应该可以解决我的问题,就像你说的手动复制ISO文件~

我先试一下ISO,正在写…

以前用arch的时候,一直在用rufus;改成debian后,就一直用debian推荐的win32diskimager~

archwiki有提到需要使用wipefs --all /dev/sdx来删除iso9660文件系统标记,我想这是我之前为什么无法修改卷标的原因~