1、默认用户名密码、默认DNS服务器
生成用户脚本位于 scripts/chroot-scripts/RUNME.sh,设置了khadas为默认root密码,并且添加khadas为默认用户
是 config/functions/build-rootfs 中的 build_rootfs() 调用了RUNME.sh
## script executing on chroot
[ "$POST_SCRIPT" ] || \
POST_SCRIPT=scripts/chroot-scripts/RUNME.sh
cp $POST_SCRIPT $ROOTFS_TEMP/tmp
echo
echo "NOTE: ENTER CHROOT AND EXECUTE SCRIPT: $POST_SCRIPT"
echo
mount_chroot "$ROOTFS_TEMP"
if [ -L "$ROOTFS_TEMP"/etc/resolv.conf ] && [ ! -e "$ROOTFS_TEMP"/etc/resolv.conf ]; then
resolvconf_file=$(readlink -m $ROOTFS_TEMP/etc/resolv.conf)
mkdir -p $(dirname $resolvconf_file)
echo "nameserver $NAMESERVER" >> $resolvconf_file
fi
chroot $ROOTFS_TEMP/ bash "/tmp/${POST_SCRIPT##*/}"
可以看到,默认的nameserver也是在 build_rootfs 中生成的。而 $NAMESERVER 变量的设置是在 config/config 文件中
2、默认网卡配置
只看到 config/functions/build-rootfs 中的install_common() 中把 /etc/network/interfaces 文件删除了。新安装镜像后,/etc/network/interfaces确实是没有的
3、默认时区
生成位于 config/functions/build-rootfs 中的 install_common()
# change time zone data
info_msg "Setup timezone to '$TZDATA'"
echo $TZDATA > $ROOTFS_TEMP/etc/timezone
ln -sf ../usr/share/zoneinfo/$TZDATA "$ROOTFS_TEMP"/etc/localtime
execute_in_chroot "dpkg-reconfigure -f noninteractive tzdata"
而 $TZDATA 的设置也是在 config/config,直接使用了编译主机的时区
# Timezone for target is taken from host, but not for release images.
if [ "$BUILD_TYPE" != release ]; then
if [ -f /etc/timezone ]; then
TZDATA=`cat /etc/timezone`
elif [ -L /etc/localtime ]; then
TZDATA=$(readlink /etc/localtime | sed -ne 's|^.*/zoneinfo/||p')
fi
fi
4、登录后的默认欢迎语
通过搜索板子的 /etc 目录,发现欢迎语是在 /etc/update-motd.d 设置的。而fenix生成 /etc/update-motd.d 配置的脚本中位于 config/functions/build-board-deb
# Copy premade common rootfs files
rsync -aI $ROOT/archives/filesystem/common/* $pkgdir/
把预设的 etc、systemd等配置拷贝了过去,然后打包进了board_deb包中,最后装到镜像中