启动系统后,按顺序运行boot.bash域setup.bash即可,需进行配置
config.bash
# ACTUAL/VIRTUAL
SYS_ENV='VIRTUAL'
# DEFAULT
DISK_NAME="DEFAULT"
# default: 512M
BOOT_SIZE="512M"
# default: 32G
SWAP_SIZE="32G"
# default: 150G
HOME_SIZE="150G"
# default: 300G
ROOT_SIZE="300G"
utils/bash.bash
#!/bin/bash
# check system network status
function network() {
local timeout=1
local target=www.baidu.com
local ret_code=`curl -I -s --connect-timeout ${timeout} ${target} -w %{http_code} | tail -n1`
if [ "x$ret_code" = "x200" ]; then
return 1
else
return 0
fi
return 0
}
boot.bash
# import system variables
source config.bash
source utils/base.bash
network
if [ $? != "1" ]; then
# @TODO: try to connnect network
echo "please connect to network first"
exit 0
fi
fdisk -l | grep "^Disk /dev/[sh]d[a-z]" | awk '{print $2}' | sed "s@:@@g"
read -p "Your choice PARTDISK above:" PARTDISK
if [ $PARTDISK == quit ];then
echo "quit..."
exit 0
fi
echo "select the method you want to use to format disk:
1:use config file,
2:use the system portion-BOOT:512M, SWAP:memory capacity, HOME:70% remaning, ROOT:30% remaining):"
read FORMAT_SELECTION
case $FORMAT_SELECTION in
1)
echo "you choose 1, continue"
;;
2)
BOOT_SIZE="512M"
MemTotal=$(cat /proc/meminfo |grep 'MemTotal' |awk -F : '{print $2}' |sed 's/^[ \t]*//g')
SWAP_SIZE=$MemTotal
DISK_SIZE=$(fdisk -l | grep 'Disk /dev/sda' | awk -F , '{print $1}' | awk -F : '{print $2}' | sed 's/[ ]*//g' | awk -F G '{print $1}')
DISK_INFO=$(fdisk -l | grep 'Disk /dev/sda' | awk -F , '{print $1}' | awk -F : '{print $2}' | sed 's/[ ]*//g')
echo "disk_size: $DISK_SIZE, disk_unit: $DISK_UNIT"
HOME_SIZE=`echo "$DISK_SIZE * 0.7" | bc`${DISK_INFO:0-3}
ROOT_SIZE=`echo "$DISK_SIZE * 0.3" | bc`${DISK_INFO:0-3}
echo "BOOT_SIZE: $BOOT_SIZE,"
echo "SWAP_SIZE: $SWAP_SIZE,"
echo "HOME_SIZE: $HOME_SIZE,"
echo "ROOT_SIZE: $ROOT_SIZE,"
sleep 3
;;
*)
echo "error"
esac
until fdisk -l | grep -o "^Disk /dev/[sh]d[a-z]" | grep "^Disk ${PARTDISK}$" &> /dev/null ;do
read -p "wrong choice Your choice again:" PARTDISK
done
read -p "Will destroy all data continue[y/n]:" CHOICE
until [ $CHOICE == "y" -o $CHOICE == "n" ];do
read -p "Will destroy all data continue[y/n]:" CHOICE
done
[ $CHOICE == n ] && echo "quit..." && exit 0;
for DISK in `mount | grep "/dev/[sh]d[a-z]" | awk '{print $1}'`;do
fuser -km $DISK
umount $DISK && echo "$DISK umount ok"
done
swapoff $PARTDISK2
dd if=/dev/zero of=$PARTDISK bs=512 count=1&>/dev/null
partprobe $PARTDISK
sync&>/dev/null
sleep 2
# BOOT_SIZE,SWAP_SIZE,HOME_SIZE,ROOT_SIZE
echo "n
p
1
+512M
n
p
2
+8G
n
p
3
+70G
n
p
3
t
3
82
w"|fdisk $PARTDISK &>/dev/null
partprobe $PARTDISK
# partition format
mkfs.fat -F32 ${PARTDISK}1
mkswap ${PARTDISK}2
swapon ${PARTDISK}2
echo Y | mkfs.ext4 ${PARTDISK}3
echo Y | mkfs.ext4 ${PARTDISK}4
# mount partition
mount ${PARTDISK}4 /mnt
if [ -d /mnt/boot/EFI ];then
echo /mnt/boot/EFI exist
else
mkdir -p /mnt/boot/EFI
fi
mount ${PARTDISK}1 /mnt/boot/EFI
if [ -d /mnt/home ];then
echo /mnt/home exist
else
mkdir /mnt/home
fi
mount ${PARTDISK}3 /mnt/home
# replace domestic image
reflector -c China -a 5 --sort rate --save /etc/pacman.d/mirrorlist
echo Y | sudo pacman -Sy archlinux-keyring
pacstrap /mnt base base-devel linux linux-firmware
genfstab -U /mnt >> /mnt/etc/fstab
# enter the new system
cp setup.bash /mnt
arch-chroot /mnt
setup.bash
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
echo Y | sudo pacman -Sy vim expect
sed -i 's/#en_US.UTF-8/en_US.UTF-8/g' /etc/locale.gen
sed -i 's/#zh_CN.UTF-8/zh_CN.UTF-8/g' /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
echo "input the hostname you want to use:"
read HOST_NAME
echo $HOST_NAME > /etc/lcoale.conf
# set hosts
echo "
127.0.0.1 localhost
::1 localhost
127.0.0.1 $HOST_NAME.localdomain $HOST_NAME
" > /etc/hosts
echo "input the root password you want to use:"
read ROOT_PASSWORD
expect<<-EOF
passwd
expect "New password" {send "${ROOT_PASSWORD}\n";exp_continue}
expect "Retype new password" {send "${ROOT_PASSWORD}\n";}
EOF
echo "set root password successfully"
echo "input the group name you want to use:"
read GROUP_NAME
groupadd $GROUP_NAME
echo "add group successfully"
echo "input the user name you want to use:"
read USER_NAME
useradd $USER_NAME -g $GROUP_NAME -m
echo "input the user password you want to use:"
read USER_PASSWORD
expect<<-EOF
passwd $USER_NAME
expect "New password" {send "${USER_PASSWORD}\n";exp_continue}
expect "Retype new password" {send "${USER_PASSWORD}\n";}
EOF
未来计划加入的内容如下:
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/vipshop_fin_dev/article/details/126061598
内容来源于网络,如有侵权,请联系作者删除!