mirror of
https://github.com/bin456789/reinstall.git
synced 2025-01-19 04:49:13 +08:00
core: 不复制 vmlinuz / initramfs 到根目录
This commit is contained in:
parent
934800799d
commit
b9288dae33
42
reinstall.sh
42
reinstall.sh
@ -99,7 +99,7 @@ is_use_dd() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
is_os_in_btrfs() {
|
is_os_in_btrfs() {
|
||||||
mount | grep -w 'on / type btrfs'
|
mount | grep -qw 'on / type btrfs'
|
||||||
}
|
}
|
||||||
|
|
||||||
is_os_in_subvol() {
|
is_os_in_subvol() {
|
||||||
@ -873,6 +873,10 @@ del_cr() {
|
|||||||
sed 's/\r//g'
|
sed 's/\r//g'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
del_blank_lines() {
|
||||||
|
sed '/^[[:space:]]*$/d'
|
||||||
|
}
|
||||||
|
|
||||||
# 记录主硬盘
|
# 记录主硬盘
|
||||||
find_main_disk() {
|
find_main_disk() {
|
||||||
if is_in_windows; then
|
if is_in_windows; then
|
||||||
@ -1674,7 +1678,7 @@ if [ "$nextos_distro" = alpine ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# 将内核/netboot.xyz.lkrn 放到正确的位置
|
# 将内核/netboot.xyz.lkrn 放到正确的位置
|
||||||
if is_use_grub; then
|
if false && is_use_grub; then
|
||||||
if is_in_windows; then
|
if is_in_windows; then
|
||||||
cp -f /reinstall-vmlinuz /cygdrive/$c/
|
cp -f /reinstall-vmlinuz /cygdrive/$c/
|
||||||
is_have_initrd && cp -f /reinstall-initrd /cygdrive/$c/
|
is_have_initrd && cp -f /reinstall-initrd /cygdrive/$c/
|
||||||
@ -1771,25 +1775,47 @@ if is_use_grub; then
|
|||||||
target_cfg=$grub_cfg
|
target_cfg=$grub_cfg
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 找到 /reinstall-vmlinuz /reinstall-initrd 的绝对路径
|
||||||
|
if is_in_windows; then
|
||||||
|
# dir=/cygwin/
|
||||||
|
dir=$(cygpath -m / | cut -d: -f2-)/
|
||||||
|
else
|
||||||
|
# 获取当前系统根目录在 btrfs 中的绝对路径
|
||||||
|
if is_os_in_btrfs; then
|
||||||
|
# btrfs subvolume show /
|
||||||
|
# 输出可能是 / 或 root 或 @/.snapshots/1/snapshot
|
||||||
|
dir=$(btrfs subvolume show / | head -1)
|
||||||
|
if ! [ "$dir" = / ]; then
|
||||||
|
dir="/$dir/"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dir=/
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
vmlinuz=${dir}reinstall-vmlinuz
|
||||||
|
initrd=${dir}reinstall-initrd
|
||||||
|
|
||||||
# 生成 linux initrd 命令
|
# 生成 linux initrd 命令
|
||||||
if is_netboot_xyz; then
|
if is_netboot_xyz; then
|
||||||
linux_cmd="linux16 /reinstall-vmlinuz"
|
linux_cmd="linux16 $vmlinuz"
|
||||||
else
|
else
|
||||||
find_main_disk
|
find_main_disk
|
||||||
build_cmdline
|
build_cmdline
|
||||||
linux_cmd="linux$efi /reinstall-vmlinuz $cmdline"
|
linux_cmd="linux$efi $vmlinuz $cmdline"
|
||||||
initrd_cmd="initrd$efi /reinstall-initrd"
|
initrd_cmd="initrd$efi $initrd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 生成 grub 配置
|
# 生成 grub 配置
|
||||||
# 实测 centos 7 lvm 要手动加载 lvm 模块
|
# 实测 centos 7 lvm 要手动加载 lvm 模块
|
||||||
echo $target_cfg
|
echo $target_cfg
|
||||||
cat <<EOF | tee $target_cfg
|
cat <<EOF | del_blank_lines | tee $target_cfg
|
||||||
set timeout=5
|
set timeout=5
|
||||||
menuentry "$(get_entry_name)" {
|
menuentry "$(get_entry_name)" {
|
||||||
$(is_in_windows || echo 'insmod lvm')
|
$(! is_in_windows && echo 'insmod lvm')
|
||||||
|
$(is_os_in_btrfs && echo 'set btrfs_relative_path=n')
|
||||||
insmod all_video
|
insmod all_video
|
||||||
search --no-floppy --file --set=root /reinstall-vmlinuz
|
search --no-floppy --file --set=root $vmlinuz
|
||||||
$linux_cmd
|
$linux_cmd
|
||||||
$initrd_cmd
|
$initrd_cmd
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user