core: 将所有 $os_dir 设为 local

可避免以下情况 `$os_dir` 被无意修改
1. 同时处理 boot.wim install.wim 时
2. 需要在硬盘上创建 alpine rootfs 时
This commit is contained in:
bin456789
2026-06-12 21:03:02 +08:00
parent 0cc98bdfdb
commit c1eb6962bc
+29 -27
View File
@@ -1727,7 +1727,7 @@ add_newline() {
install_nixos() { install_nixos() {
info "Install NixOS" info "Install NixOS"
os_dir=/os local os_dir=/os
keep_swap=true keep_swap=true
nix_from=website nix_from=website
ram_per_thread=2048 ram_per_thread=2048
@@ -2162,7 +2162,7 @@ get_fs_of_mount_point() {
} }
basic_init() { basic_init() {
os_dir=$1 local os_dir=$1
# 此时不能用 # 此时不能用
# chroot $os_dir timedatectl set-timezone Asia/Shanghai # chroot $os_dir timedatectl set-timezone Asia/Shanghai
@@ -2502,7 +2502,7 @@ EOF
chroot $os_dir update-initramfs chroot $os_dir update-initramfs
} }
os_dir=/os local os_dir=/os
# 挂载分区 # 挂载分区
mount_part_basic_layout /os /os/efi mount_part_basic_layout /os /os/efi
@@ -3096,6 +3096,7 @@ create_part() {
} }
umount_pseudo_fs() { umount_pseudo_fs() {
local os_dir
os_dir=$(realpath "$1") os_dir=$(realpath "$1")
dirs="/proc /sys /dev /run" dirs="/proc /sys /dev /run"
@@ -3109,7 +3110,7 @@ umount_pseudo_fs() {
} }
mount_pseudo_fs() { mount_pseudo_fs() {
os_dir=$1 local os_dir=$1
mkdir -p $os_dir/proc/ $os_dir/sys/ $os_dir/dev/ $os_dir/run/ mkdir -p $os_dir/proc/ $os_dir/sys/ $os_dir/dev/ $os_dir/run/
@@ -3258,7 +3259,7 @@ create_cloud_init_network_config() {
# 实测没用,生成的 machine-id 是固定的 # 实测没用,生成的 machine-id 是固定的
# 而且 lightsail centos 9 模板 machine-id 也是相同的,显然相同 id 不是个问题 # 而且 lightsail centos 9 模板 machine-id 也是相同的,显然相同 id 不是个问题
clear_machine_id() { clear_machine_id() {
os_dir=$1 local os_dir=$1
# https://www.freedesktop.org/software/systemd/man/latest/machine-id.html # https://www.freedesktop.org/software/systemd/man/latest/machine-id.html
# gentoo 不会自动创建该文件 # gentoo 不会自动创建该文件
@@ -3271,7 +3272,7 @@ clear_machine_id() {
# 注意 anolis 7 有这个文件,可能干扰我们的配置? # 注意 anolis 7 有这个文件,可能干扰我们的配置?
# /etc/cloud/cloud.cfg.d/aliyun_cloud.cfg -> /sys/firmware/qemu_fw_cfg/by_name/etc/cloud-init/vendor-data/raw # /etc/cloud/cloud.cfg.d/aliyun_cloud.cfg -> /sys/firmware/qemu_fw_cfg/by_name/etc/cloud-init/vendor-data/raw
download_cloud_init_config() { download_cloud_init_config() {
os_dir=$1 local os_dir=$1
recognize_static6=$2 recognize_static6=$2
recognize_ipv6_types=$3 recognize_ipv6_types=$3
@@ -3328,7 +3329,7 @@ get_image_state() {
} }
modify_windows() { modify_windows() {
os_dir=$1 local os_dir=$1
info "Modify Windows" info "Modify Windows"
# https://learn.microsoft.com/windows-hardware/manufacture/desktop/windows-setup-states # https://learn.microsoft.com/windows-hardware/manufacture/desktop/windows-setup-states
@@ -3503,7 +3504,7 @@ is_file_or_link() {
} }
cp_resolv_conf() { cp_resolv_conf() {
os_dir=$1 local os_dir=$1
if is_file_or_link $os_dir/etc/resolv.conf && if is_file_or_link $os_dir/etc/resolv.conf &&
! is_file_or_link $os_dir/etc/resolv.conf.orig; then ! is_file_or_link $os_dir/etc/resolv.conf.orig; then
mv $os_dir/etc/resolv.conf $os_dir/etc/resolv.conf.orig mv $os_dir/etc/resolv.conf $os_dir/etc/resolv.conf.orig
@@ -3512,19 +3513,19 @@ cp_resolv_conf() {
} }
rm_resolv_conf() { rm_resolv_conf() {
os_dir=$1 local os_dir=$1
rm -f $os_dir/etc/resolv.conf $os_dir/etc/resolv.conf.orig rm -f $os_dir/etc/resolv.conf $os_dir/etc/resolv.conf.orig
} }
restore_resolv_conf() { restore_resolv_conf() {
os_dir=$1 local os_dir=$1
if is_file_or_link $os_dir/etc/resolv.conf.orig; then if is_file_or_link $os_dir/etc/resolv.conf.orig; then
mv -f $os_dir/etc/resolv.conf.orig $os_dir/etc/resolv.conf mv -f $os_dir/etc/resolv.conf.orig $os_dir/etc/resolv.conf
fi fi
} }
keep_now_resolv_conf() { keep_now_resolv_conf() {
os_dir=$1 local os_dir=$1
rm -f $os_dir/etc/resolv.conf.orig rm -f $os_dir/etc/resolv.conf.orig
} }
@@ -3598,7 +3599,7 @@ get_ucode_firmware_pkgs() {
} }
chroot_systemctl_disable() { chroot_systemctl_disable() {
os_dir=$1 local os_dir=$1
shift shift
for unit in "$@"; do for unit in "$@"; do
@@ -3615,7 +3616,7 @@ chroot_systemctl_disable() {
} }
remove_or_disable_cloud_init() { remove_or_disable_cloud_init() {
os_dir=$1 local os_dir=$1
if ! is_have_cmd_on_disk $os_dir cloud-init; then if ! is_have_cmd_on_disk $os_dir cloud-init; then
return return
@@ -3675,7 +3676,7 @@ remove_or_disable_cloud_init() {
} }
disable_jeos_firstboot() { disable_jeos_firstboot() {
os_dir=$1 local os_dir=$1
info "Disable JeOS Firstboot" info "Disable JeOS Firstboot"
# 两种方法都可以 # 两种方法都可以
@@ -3693,8 +3694,8 @@ disable_jeos_firstboot() {
} }
create_network_manager_config() { create_network_manager_config() {
source_cfg=$1 local source_cfg=$1
os_dir=$2 local os_dir=$2
info "Create Network-Manager config" info "Create Network-Manager config"
# 可以直接用 alpine 的 cloud-init 生成 Network Manager 配置 # 可以直接用 alpine 的 cloud-init 生成 Network Manager 配置
@@ -3729,7 +3730,7 @@ create_network_manager_config() {
} }
modify_linux() { modify_linux() {
os_dir=$1 local os_dir=$1
info "Modify Linux" info "Modify Linux"
find_and_mount() { find_and_mount() {
@@ -4121,7 +4122,7 @@ EOF
} }
setup_nocloud() { setup_nocloud() {
os_dir=$1 local os_dir=$1
info "Setup NoCloud" info "Setup NoCloud"
# 1. 配置 NoCloud-only datasource # 1. 配置 NoCloud-only datasource
@@ -4167,6 +4168,7 @@ modify_os_on_disk() {
if mount -o ro /dev/$part /os; then if mount -o ro /dev/$part /os; then
if [ "$only_process" = linux ] || [ "$only_process" = nocloud ]; then if [ "$only_process" = linux ] || [ "$only_process" = nocloud ]; then
if etc_dir=$({ ls -d /os/etc/ || ls -d /os/*/etc/; } 2>/dev/null); then if etc_dir=$({ ls -d /os/etc/ || ls -d /os/*/etc/; } 2>/dev/null); then
local os_dir
os_dir=$(dirname $etc_dir) os_dir=$(dirname $etc_dir)
# 重新挂载为读写 # 重新挂载为读写
mount -o remount,rw /os mount -o remount,rw /os
@@ -4639,7 +4641,7 @@ change_user_password() {
} }
disable_selinux() { disable_selinux() {
os_dir=$1 local os_dir=$1
# https://access.redhat.com/solutions/3176 # https://access.redhat.com/solutions/3176
# centos7 也建议将 selinux 开关写在 cmdline # centos7 也建议将 selinux 开关写在 cmdline
@@ -4668,7 +4670,7 @@ disable_selinux() {
} }
disable_kdump() { disable_kdump() {
os_dir=$1 local os_dir=$1
# grubby 只处理 GRUB_CMDLINE_LINUX,不会处理 GRUB_CMDLINE_LINUX_DEFAULT # grubby 只处理 GRUB_CMDLINE_LINUX,不会处理 GRUB_CMDLINE_LINUX_DEFAULT
# rocky 的 GRUB_CMDLINE_LINUX_DEFAULT 有 crashkernel=auto # rocky 的 GRUB_CMDLINE_LINUX_DEFAULT 有 crashkernel=auto
@@ -4902,7 +4904,7 @@ chroot_apt_autoremove() {
} }
del_default_user() { del_default_user() {
os_dir=$1 local os_dir=$1
local user local user
while read -r user; do while read -r user; do
@@ -4919,7 +4921,7 @@ is_el7_family() {
} }
del_exist_sysconfig_NetworkManager_config() { del_exist_sysconfig_NetworkManager_config() {
os_dir=$1 local os_dir=$1
# 删除云镜像自带的 dhcp 配置,防止歧义 # 删除云镜像自带的 dhcp 配置,防止歧义
rm -rf $os_dir/etc/NetworkManager/system-connections/*.nmconnection rm -rf $os_dir/etc/NetworkManager/system-connections/*.nmconnection
@@ -4944,7 +4946,7 @@ EOF
install_fnos() { install_fnos() {
info "Install fnos/fygoos" info "Install fnos/fygoos"
os_dir=/os local os_dir=/os
# 官方安装调用流程 # 官方安装调用流程
# /etc/init.d/run_install.sh > trim-install > trim-grub # /etc/init.d/run_install.sh > trim-install > trim-grub
@@ -5126,7 +5128,7 @@ install_qcow_by_copy() {
modify_el_ol() { modify_el_ol() {
info "Modify el ol" info "Modify el ol"
os_dir=/os local os_dir=/os
# resolv.conf # resolv.conf
cp_resolv_conf /os cp_resolv_conf /os
@@ -5396,7 +5398,7 @@ EOF
} }
modify_ubuntu() { modify_ubuntu() {
os_dir=/os local os_dir=/os
info "Modify Ubuntu" info "Modify Ubuntu"
cp_resolv_conf $os_dir cp_resolv_conf $os_dir
@@ -6024,8 +6026,8 @@ resize_after_install_cloud_image() {
} }
mount_part_basic_layout() { mount_part_basic_layout() {
os_dir=$1 local os_dir=$1
efi_dir=$2 local efi_dir=$2
if is_efi || is_xda_gt_2t; then if is_efi || is_xda_gt_2t; then
os_part_num=2 os_part_num=2