mirror of
https://github.com/bin456789/reinstall.git
synced 2026-10-11 01:39:49 +08:00
gentoo: 一次安装所有包,避免 rebuild
This commit is contained in:
@@ -2066,6 +2066,19 @@ add_frpc_systemd_service_if_need() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_fs_of_mount_point() {
|
||||||
|
local mount_point=$1
|
||||||
|
|
||||||
|
if ! [ "$mount_point" = / ]; then
|
||||||
|
# 删除最后的若干个 /
|
||||||
|
mount_point=$(printf "%s" "$mount_point" | sed 's,/*$,,')
|
||||||
|
fi
|
||||||
|
|
||||||
|
# findmnt 要安装
|
||||||
|
# findmnt "$mount_point" -rno FSTYPE
|
||||||
|
mount | awk -v mp="$1" '$3==mp {print $5}' | grep .
|
||||||
|
}
|
||||||
|
|
||||||
basic_init() {
|
basic_init() {
|
||||||
os_dir=$1
|
os_dir=$1
|
||||||
|
|
||||||
@@ -2179,11 +2192,20 @@ EOF
|
|||||||
|
|
||||||
# 安装系统
|
# 安装系统
|
||||||
# 要安装分区工具(包含 fsck.xxx),用于 initramfs 检查分区数据
|
# 要安装分区工具(包含 fsck.xxx),用于 initramfs 检查分区数据
|
||||||
# base 包含 e2fsprogs
|
|
||||||
pkgs="base grub openssh"
|
pkgs="base grub openssh"
|
||||||
|
|
||||||
|
# efi fs
|
||||||
if is_efi; then
|
if is_efi; then
|
||||||
pkgs="$pkgs efibootmgr dosfstools"
|
pkgs="$pkgs efibootmgr dosfstools"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# root fs
|
||||||
|
case $(get_fs_of_mount_point "$os_dir") in
|
||||||
|
xfs) pkgs="$pkgs xfsprogs" ;;
|
||||||
|
ext4) pkgs="$pkgs e2fsprogs" ;;
|
||||||
|
btrfs) pkgs="$pkgs btrfs-progs" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
if [ "$(uname -m)" = aarch64 ]; then
|
if [ "$(uname -m)" = aarch64 ]; then
|
||||||
pkgs="$pkgs archlinuxarm-keyring"
|
pkgs="$pkgs archlinuxarm-keyring"
|
||||||
fi
|
fi
|
||||||
@@ -2335,20 +2357,32 @@ EOF
|
|||||||
rm -rf $os_dir/var/db/repos/gentoo
|
rm -rf $os_dir/var/db/repos/gentoo
|
||||||
chroot $os_dir emerge --sync
|
chroot $os_dir emerge --sync
|
||||||
|
|
||||||
# https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Tools#Filesystem_tools
|
# 一次性安装所有包,可减少软件包重复 rebuild ?
|
||||||
chroot $os_dir emerge sys-block/io-scheduler-udev-rules
|
local pkgs=
|
||||||
|
|
||||||
|
# https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Tools#Filesystem_tools
|
||||||
|
pkgs="$pkgs sys-block/io-scheduler-udev-rules"
|
||||||
|
|
||||||
|
# efi fs
|
||||||
if is_efi; then
|
if is_efi; then
|
||||||
chroot $os_dir emerge sys-fs/dosfstools
|
pkgs="$pkgs sys-fs/dosfstools sys-boot/efibootmgr"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# root fs
|
||||||
|
case $(get_fs_of_mount_point "$os_dir") in
|
||||||
|
xfs) pkgs="$pkgs sys-fs/xfsprogs" ;;
|
||||||
|
ext4) pkgs="$pkgs sys-fs/e2fsprogs" ;;
|
||||||
|
btrfs) pkgs="$pkgs sys-fs/btrfs-progs" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# sudo
|
||||||
if ! [ "$username" = root ]; then
|
if ! [ "$username" = root ]; then
|
||||||
chroot $os_dir emerge app-admin/sudo
|
pkgs="$pkgs app-admin/sudo"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# firmware + microcode
|
# firmware + microcode
|
||||||
if fw_pkgs=$(get_ucode_firmware_pkgs) && [ -n "$fw_pkgs" ]; then
|
if fw_pkgs=$(get_ucode_firmware_pkgs) && [ -n "$fw_pkgs" ]; then
|
||||||
chroot $os_dir emerge $fw_pkgs
|
pkgs="$pkgs $fw_pkgs"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 安装 grub + 内核
|
# 安装 grub + 内核
|
||||||
@@ -2363,8 +2397,11 @@ EOF
|
|||||||
uuid=$(chroot $os_dir findmnt -rno UUID /)
|
uuid=$(chroot $os_dir findmnt -rno UUID /)
|
||||||
mkdir -p $os_dir/etc/dracut.conf.d
|
mkdir -p $os_dir/etc/dracut.conf.d
|
||||||
echo "kernel_cmdline=\" root=UUID=$uuid \"" >$os_dir/etc/dracut.conf.d/00-installkernel.conf
|
echo "kernel_cmdline=\" root=UUID=$uuid \"" >$os_dir/etc/dracut.conf.d/00-installkernel.conf
|
||||||
|
pkgs="$pkgs sys-kernel/gentoo-kernel-bin"
|
||||||
|
|
||||||
chroot $os_dir emerge sys-kernel/gentoo-kernel-bin
|
# 安装
|
||||||
|
# 不添加 -n/--noreplace 的话会 rebuild 选定的包,无论是否已安装
|
||||||
|
chroot "$os_dir" emerge -n $pkgs
|
||||||
}
|
}
|
||||||
|
|
||||||
install_aosc() {
|
install_aosc() {
|
||||||
|
|||||||
Reference in New Issue
Block a user