我想基于Raspbian Lite构建内部的Raspberry Pi映像,该映像已经配置了正确的语言环境,时区等。对我而言,不幸的是,当前版本的Raspbian映像会自动调整文件系统的大小,然后重新启动。

我想通过防止重新调整大小来避免文件系统缩小的麻烦。刻录后如何编辑图像,例如暂时禁用自动调整文件系统大小?

编辑以澄清效果应该是可逆的;也就是说,我希望我的自定义映像在第一次启动时扩展。

评论

这可能不是理想的解决方案,但是您是否考虑过使用4GB的小卡来解决此问题。

有趣的主意..烧成小卡片,有效地限制了调整大小。我希望直接解决方案,但这是一个不错的选择。谢谢

真烦人。我非常确定这是通过一些简单的自我启动引导脚本完成的,就像在第一次引导时运行raspi-config一样,并且很容易禁用。我可以看一下,但是我必须下载一个新图像,我上一个是5月。请过几个小时再回来查看。

#1 楼

在Raspbian上,有一个由两部分负责的机制。

第一个原因是原始的/boot/cmdline.txt包括以下内容:

init=/usr/lib/raspi-config/init_resize.sh


请参考在根分区上具有该路径的脚本,该脚本将在引导时用作初始化过程。如果没有该位,它将默认为内核中内置的值/sbin/init,该值在Raspbian上是指向/lib/systemd/systemd的符号链接。

通过删除cmdline.txt的那部分,系统应该可以正常启动。

该脚本实际执行的操作是调整SD卡上的分区大小。这与调整分区中文件系统的大小不同,这是一个不同的过程,接下来是发生这种情况。

发生的方式是立即正常重启系统(即通过systemd)并使用init.d脚本设置为尽早触发,应将其从第二个分区中删除:

/etc/init.d/resizefs_once


以及指向它的符号链接也应删除:

/etc/rc3.d/S01resizefs_once


如果需要,可以保留副本供以后使用,但是raspi-config可以再次为您创建它(它嵌入在raspi-config Shell脚本中)。如果它实际运行,它将删除自身,因此不会再次发生。

它还可以在新调整大小的分区中调整文件系统的大小。

如果仅发生其中一部分,则不会造成伤害;在第一种情况下,您最终得到的文件系统无法填充扩大的分区,在第二种情况下,则不会发生任何事情,因为文件系统已经填充了分区。

如果以后再使用raspi-config来扩大文件系统,它会立即调整分区大小,然后设置初始化脚本(如前所述)。

在任何计算机上,在第一个分区上编辑cmdline.txt都很简单,因为它是VFAT分区。删除init.d文件需要一个可以访问和编辑ext4文件系统的系统。

在刻录卡之前,可以对图像文件本身执行两项任务;要在GNU / Linux系统上安装和修改Raspbian映像,请参见此处。 Windows有并行的Q&A。

这也是可逆的,但是您需要像刚才描述的那样放回机制的两个部分,因为第一个不包括自动登台第二个。尽管该脚本发出的错误消息可以说实际上无法调整根文件系统的大小,但实际上却无法调整根文件系统的大小,但它可能会混淆这些术语。与根文件系统驻留在一起。做一个不会自动完成另一项。


评论


评论不作进一步讨论;此对话已移至聊天。

–加纳马♦
16-10-24在22:52

@goldilock禁用了/boot/cmdline.txt中的init = / usr / lib / raspi-config / init_resize.sh,也可以在ubuntu mate上使用,而且看起来就足够了。我有一个4gb的ubuntu mate映像,该映像已闪存到32gb的sdcard上,并将分区大小保持为原始映像大小。在ubuntu mate上首次启动后,/etc/init.d/resizefs_once和/etc/rc3.d/S01resizefs_once也不存在。

–西斯
17年7月18日在4:09

只是为了确认,恢复cmdline.txt和init.d以及rc3.d文件和链接都将允许下一次引导自行重新调整大小,还是我必须运行raspi-config并手动运行它?

– Oxwivi
19年1月1日在13:49

@Oxwivi应该,是的。我已经澄清了整个帖子,并在结尾处对此发表了明确的评论。

–金锁♦
19年1月1日在18:40

是的,谢谢。还要注意的是,IDK从哪个版本开始,但至少是最新版本,不包含您在cmdline.txt之外提到的调整大小脚本引用。我使用systemd-nspawn启动了Raspbian映像,但是在删除cmdline.txt内容后仍然遇到尝试调整大小的错误日志。

– Oxwivi
19年1月2日,11:17