我目前正在构建 Ubuntu 16.04 桌面的自动安装。作为预置文件中的自定义命令,我使用此命令
# Custom Commands
ubiquity ubiquity/success_command \
string mkdir /target/install/; \
cp -R /cdrom/scripts/* /target/install/; \
chroot /target chmod +x /install/postinstall.sh; \
chroot /target bash /install/postinstall.sh;
并postinstall.sh
有此内容
# Install Chrome
cd /install
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
dpkg -i google-chrome-stable_current_amd64.deb
# Delete Chrome install
rm google-chrome-stable_current_amd64.deb
但 Chrome 并未安装。脚本本身已成功复制到/install
并标记为可执行文件
希望有人知道我的错误出在哪里。
答案1
或许 :
chroot /target bash /install/postinstall.sh;
反而 :
chroot /target bash -c "/install/postinstall.sh";
以下对我有好处(xubuntu 18.04):
bash -c "/cdrom/tools/run.sh";
我使用 isocreator(cubic),如果我想为我的安装程序添加其他 deb 文件,我会使用 preseed 来自动安装系统。
答案2
Chrome 安装程序可能会询问问题,也许在安装命令中添加“是”?
是 | dpkg -i google-chrome-stable_current_amd64.deb
或者
apt-get -y 安装 google-chrome-stable_current_amd64.deb
答案3
它不会自动启动,您应该将其放在 rc.local 中,以便在后台第一次登录后启动。
如果您想将其作为安装过程的一部分,那么您需要将 dep 文件添加到 cdrom/pool/extras。
一个快速的解决方案是:
压力:
ubiquity ubiquity/success_command 字符串 \
cp -a /cdrom/preseed/install.sh /target/root/install.sh; \
sed -i 's_exit 0_sh /root/install.sh_' /target/etc/rc.local
并且在脚本中完成后只需将其从 rc.local 中删除:
脚本:
sed -i 's_sh /root/install.sh_exit 0_' /etc/rc.local
我希望这是有意义的:)