Compare commits

...

3 Commits
main ... dev

5 changed files with 120 additions and 6 deletions

5
choosedisk.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/env bash
TARGETDISK=$(lsblk -nrpo NAME,TYPE | grep ' disk' | awk '{print $1}' | gum choose)
echo "You have selected: $TARGETDISK"

View File

@ -1,12 +1,14 @@
#! /bin/env bash
# assume that /mnt and /mnt/boot is mounted
TARGET=/mnt
DEVICE=$(findmnt -n -o SOURCE $TARGET | sed 's/\[.*//')
UUID=$(blkid -s UUID -o value ${DEVICE})
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
echo $DIR
umount -R $TARGET
source $DIR/choosedisk.sh
source ./make-partition.sh
source ./mount-subvol.sh
UUID=$(blkid -s UUID -o value "${TARGETDISK}2")
debootstrap stable $TARGET http://deb.debian.org/debian/
@ -24,6 +26,7 @@ echo "export PATH=$PATH:/sbin/" >>$TARGET/root/.bashrc
cp $DIR/chroot-commands.sh $TARGET/root/
chmod +x $TARGET/root/chroot-commands.sh
chroot $TARGET /bin/bash -l -c '/root/chroot-commands.sh'
rm $TARGET/root/chroot-commands.sh
# fix systemd-boot
for ENTRY in $TARGET/boot/loader/entries/*.conf; do

31
make-partition.sh Executable file
View File

@ -0,0 +1,31 @@
#!/bin/bash
# 检查 TARGETDISK 变量是否已定义
if [ -z "$TARGETDISK" ]; then
echo "TARGETDISK is not set. Please run the disk selector script first."
exit 1
fi
# 使用 gum confirm 警告:这将删除目标硬盘上的所有数据
if ! gum confirm "Warning: This will erase all data on $TARGETDISK. Proceed?"; then
echo "Aborting."
exit 1
fi
# 使用 parted 工具创建新的 GPT 分区表
parted -s "$TARGETDISK" mklabel gpt
# 创建 EFI 分区,大小为 512M后面是系统分区占据剩余空间
parted -s "$TARGETDISK" mkpart primary fat32 1MiB 513MiB
parted -s "$TARGETDISK" set 1 esp on
# 计算起始点,为 513MiB 后的第一个 MiB
parted -s "$TARGETDISK" mkpart primary btrfs 513MiB 100%
# 格式化 EFI 分区为 FAT32
mkfs.fat -F32 "${TARGETDISK}1"
# 格式化系统分区为 Btrfs
mkfs.btrfs -f "${TARGETDISK}2"
echo "Partitioning and formatting complete."

15
mount-subvol.sh Normal file
View File

@ -0,0 +1,15 @@
mount "${TARGETDISK}2" $TARGET
btrfs subvolume create $TARGET/@
btrfs subvolume create $TARGET/@home
btrfs subvolume create $TARGET/@var_log
umount $TARGET
mount -o defaults,ssd,noatime,compress=zstd,subvol=@ "${TARGETDISK}2" $TARGET
mkdir -p $TARGET/{home,var/log,boot}
mount -o defaults,ssd,noatime,compress=zstd,subvol=@home "${TARGETDISK}2" $TARGET/home
mount -o defaults,ssd,noatime,compress=zstd,subvol=@var_log "${TARGETDISK}2" $TARGET/var/log
mount "${TARGETDISK}1" $TARGET/boot

60
test.sh Executable file
View File

@ -0,0 +1,60 @@
#!/bin/bash
# 确保安装 gum
# pacman -Sy gum
main_menu() {
while true; do
clear
# 使用 gum 或其他工具显示主菜单
option=$(gum choose "分区硬盘" "设置网络" "安装基本系统" "开始安装" "退出安装")
case $option in
"分区硬盘")
partition_disk
;;
"设置网络")
setup_network
;;
"安装基本系统")
install_base_system
;;
"开始安装")
start_installation
break
;;
"退出安装")
exit 0
;;
esac
done
}
partition_disk() {
echo "分区硬盘..."
# 这里添加分区逻辑
gum confirm "返回主菜单?" && return
}
setup_network() {
echo "设置网络..."
# 这里添加网络设置逻辑
gum confirm "返回主菜单?" && return
}
install_base_system() {
echo "安装基本系统..."
# 这里添加安装基本系统的逻辑
gum confirm "返回主菜单?" && return
}
start_installation() {
echo "开始安装..."
# 这里添加实际开始安装的逻辑
echo "安装完成。"
exit 0
}
# 主菜单
main_menu