我有一个小项目,它从 debian.org 获取最新的 Debian 最小快照,并在应用一系列 dockerfile 和 shell 脚本后输出 gzip 映像。可以使用 rufus 或类似工具将此 gzip 直接写入磁盘,并且可以在任何兼容硬件上启动。
但是,我遇到了一个奇怪的问题。在 Git Bash 中本地运行时,输出图像工作正常,但在 Github 上使用操作运行时,最终图像无法启动。启动时出现以下错误: Boot_error_GitHub_Actions_Image
请帮助我了解本地 GitBash 与 GitHub Actions 项目执行有何不同。
以下是我在 GitHub 上的构建流程:
`linux-os.yml
-> build.sh (*uses a dockerfile & calls methods from buildhelper.sh*)
-> buildhelper.sh (*It has all the methods like docker build*)
-> squash-me.sh (*It has methods to configure the root partition of OS*)
`
以上完整流程在 GitHub 操作上运行。然而,在本地 Git bash 上,我直接调用 build.sh。启动屏幕上出现的那种错误,似乎在 GitHub 操作上调用 squash-me.sh 时发生了一些奇怪的事情,因此,启动期间根分区无法加载。
问题出在 initrd.img 上,它没有加载自定义启动所需的模块。负责生成 initrd.img 的 mkinitramfs 命令忽略了自定义启动脚本,因为 GitHub 已将其标记为不可执行。仅供参考,如果有人将他们的 Linux 项目移至 GitHub,请明确授予项目中的所有可执行文件的执行权限。在此处发布解决方案,以便如果有人遇到此类问题,无论是 Ubuntu 还是任何版本,此解释都可以提供可能的解决方法。