chroot 后执行脚本

chroot

前几天写了一个自动安装 ArchLinux 的脚本,毕竟换系统换的比较勤,总是一条一条打命令太不方便了,而用别人的脚本又起不到自己理想的效果,所以就自己造了一个轮子。

项目地址: https://github.com/xlui/AutoInstall,有兴趣的同学可以去看看。

使用方法: 使用前请确定已经分好区并格式化、挂载,考虑到多种多样的分区方案,脚本中并没有添加分区模块。使用 wget 下载 installArch.sh 脚本,执行脚本,等待脚本完成即可。

1
2
3
wget https://raw.githubusercontent.com/xlui/AutoInstall/master/ArchLinux/installArch.sh
chmod +x installArch.sh
./installArch.sh

一些默认设置:

默认添加了 ArchLinuxcn 并设置镜像源为 中科大 http://mirrors.ustc.edu.cn
默认语言环境为 en_US.UTF-8,并且开启中文支持,更改 /etc/locale.conf 即可更换语言
默认时区为 Asia/Shanghai
主机名为 ArchLinux
root 密码为 rootpasswd,安装完成后请立即更改

其中写脚本的时候在 chroot 的地方卡了一下,因为 chroot 后到了新的环境,原来的脚本就不能执行,只有等退出 chroot 后才会继续执行。

谷歌了之后,发现 chroot 命令可以接受一个 -c 参数,后跟 chroot 后执行的命令,解决方案就出来了。

将脚本分为 chroot前(installArch.sh) 和 chroot后(chroot.sh) 两部分,在 installArch.sh 脚本的最后下载 chroot.sh 脚本并把它放在 chroot 后的目录下(本文是 /mnt),利用 chroot 的 -c 参数执行脚本。

代码如下:

1
2
3
4
wget https://raw.githubusercontent.com/xlui/AutoInstall/master/ArchLinux/chroot.sh
cp chroot.sh /mnt
chmod +x /mnt/chroot.sh
arch-chroot /mnt /bin/bash -c "./chroot.sh"

了解了 chroot 的 -c 参数后解决问题就变得十分简单。

-------------本文结束感谢阅读-------------
  • 本文标题:chroot 后执行脚本
  • 本文作者:xlui
  • 发布时间:2017年07月31日 - 18:07
  • 最后更新:2023年01月20日 - 01:01
  • 本文链接: https://xlui.me/t/run-script-after-chroot/
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!