我正在尝试进行一些自动安装,并且需要尽早运行一些命令。因此,我修改了我的 USB 安装介质(Ubuntu 16.04)并添加了:
menuentry "Install automatically" {
set gfxpayload=keep
linux /casper/vmlinuz.efi file=/cdrom/auto.seed preseed/early_command=/cdrom/early.sh boot=casper auto=true automatic-ubiquity debug-ubiquity quiet splash ---
initrd /casper/initrd.lz
}
解释如下: https://wiki.ubuntu.com/UbiquityAutomation 和这里https://wiki.ubuntu.com/DesktopCDOptions
我的 USB 上有一个文件 early.sh,作为我的 auto.seed 文件(加载得很好)。但似乎我的 early.sh 脚本从未运行过。
我只想将文件复制到实时系统:
#!/bin/bash
cp /cdrom/wlan /root/etc/NetworkManager/system-connections/wlan;
chmod 0600 /root/etc/NetworkManager/system-connections/wlan;
我已按照上述链接中的说明在其前面添加了 /root。我甚至尝试过:
#!/bin/bash
touch /root/test
当我在 partman 运行之前停止安装时,我得到了通常的 Live Desktop,并且我期望打开控制台并查看/root/test
。但我没有。
我查看了 /var/log/syslog,可以看到启动参数,但没有关于 early_command 的更多日志行
我的预置文件包含如下行:
d-i preseed/early_command string in-target touch /root/test
我该如何调试这种情况?一遍又一遍地重新开始很烦人。
答案1
我认为无处不在的 early_command 和 late_command 根本不起作用。所以现在我使用类似
ubiquity ubiquity/success_command string \
cp /cdrom/script /target/root/; \
chmod 0700 /target/root/script; \
in-target /root/script; \
这些命令工作正常,我在重启之前设置了我的 wifi 并对我的安装进行了其他修复。