添加dd功能
This commit is contained in:
parent
270773f473
commit
1b8fe2637f
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#### 亮点:
|
#### 亮点:
|
||||||
```
|
```
|
||||||
使用官方安装方式,非第三方 dd 镜像,更安全
|
使用官方安装方式,非第三方 dd 镜像,更安全(也提供 dd 功能)
|
||||||
支持 BIOS/EFI 机器,支持 ARM 机器
|
支持 BIOS/EFI 机器,支持 ARM 机器
|
||||||
可能是第一个支持在 1g 内存上安装 红帽 7/8/9 系列的脚本
|
可能是第一个支持在 1g 内存上安装 红帽 7/8/9 系列的脚本
|
||||||
可能是第一个支持重装到 ubuntu 22.04 的脚本
|
可能是第一个支持重装到 ubuntu 22.04 的脚本
|
||||||
@ -21,6 +21,9 @@ bash reinstall.sh centos-7 (或其他系统)
|
|||||||
安装 Windows:
|
安装 Windows:
|
||||||
bash reinstall.sh windows --iso=https://example.com/zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso --image-name='Windows 10 Enterprise LTSC 2021'
|
bash reinstall.sh windows --iso=https://example.com/zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso --image-name='Windows 10 Enterprise LTSC 2021'
|
||||||
|
|
||||||
|
dd:
|
||||||
|
bash reinstall.sh dd --ddimg=https://example.com/xxx.gz
|
||||||
|
|
||||||
重启:
|
重启:
|
||||||
reboot
|
reboot
|
||||||
```
|
```
|
||||||
@ -34,6 +37,7 @@ ubuntu-20.04/22.04
|
|||||||
alpine-3.16/3.17/3.18
|
alpine-3.16/3.17/3.18
|
||||||
debian-10/11
|
debian-10/11
|
||||||
windows (见下方注意事项)
|
windows (见下方注意事项)
|
||||||
|
dd
|
||||||
```
|
```
|
||||||
#### Windows 注意事项:
|
#### Windows 注意事项:
|
||||||
```
|
```
|
||||||
|
20
reinstall.sh
20
reinstall.sh
@ -3,7 +3,7 @@ confhome=https://raw.githubusercontent.com/bin456789/reinstall/main
|
|||||||
localtest_confhome=http://192.168.253.1
|
localtest_confhome=http://192.168.253.1
|
||||||
|
|
||||||
usage_and_exit() {
|
usage_and_exit() {
|
||||||
echo "Usage: reinstall.sh centos-7/8/9 alma-8/9 rocky-8/9 fedora-37/38 ubuntu-20.04/22.04 alpine-3.16/3.17/3.18 debian-10/11 windows"
|
echo "Usage: reinstall.sh centos-7/8/9 alma-8/9 rocky-8/9 fedora-37/38 ubuntu-20.04/22.04 alpine-3.16/3.17/3.18 debian-10/11 windows dd"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,6 +96,14 @@ setos() {
|
|||||||
eval "${step}_image_name='$image_name'"
|
eval "${step}_image_name='$image_name'"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setos_dd() {
|
||||||
|
if [ -z "$ddimg" ]; then
|
||||||
|
echo "dd need --ddimg"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
eval "${step}_ddimg='$ddimg'"
|
||||||
|
}
|
||||||
|
|
||||||
setos_redhat() {
|
setos_redhat() {
|
||||||
if [ "$localtest" = 1 ]; then
|
if [ "$localtest" = 1 ]; then
|
||||||
mirror=$confhome/$releasever/
|
mirror=$confhome/$releasever/
|
||||||
@ -132,13 +140,14 @@ setos() {
|
|||||||
alpine) setos_alpine ;;
|
alpine) setos_alpine ;;
|
||||||
debian) setos_debian ;;
|
debian) setos_debian ;;
|
||||||
windows) setos_windows ;;
|
windows) setos_windows ;;
|
||||||
|
dd) setos_dd ;;
|
||||||
*) setos_redhat ;;
|
*) setos_redhat ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# 检查是否为正确的系统名
|
# 检查是否为正确的系统名
|
||||||
verify_os_string() {
|
verify_os_string() {
|
||||||
for os in 'centos-7|8|9' 'alma|rocky-8|9' 'fedora-37|38' 'ubuntu-20.04|22.04' 'alpine-3.16|3.17|3.18' 'debian-10|11|12' 'windows-'; do
|
for os in 'centos-7|8|9' 'alma|rocky-8|9' 'fedora-37|38' 'ubuntu-20.04|22.04' 'alpine-3.16|3.17|3.18' 'debian-10|11|12' 'windows-' 'dd-'; do
|
||||||
ds=$(echo $os | cut -d- -f1)
|
ds=$(echo $os | cut -d- -f1)
|
||||||
vers=$(echo $os | cut -d- -f2 | sed 's \. \\\. g')
|
vers=$(echo $os | cut -d- -f2 | sed 's \. \\\. g')
|
||||||
finalos=$(echo "$@" | tr '[:upper:]' '[:lower:]' | sed -n -E "s,^($ds)[ :-]?($vers)$,\1:\2,p")
|
finalos=$(echo "$@" | tr '[:upper:]' '[:lower:]' | sed -n -E "s,^($ds)[ :-]?($vers)$,\1:\2,p")
|
||||||
@ -208,7 +217,7 @@ if [ "$EUID" -ne 0 ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! opts=$(getopt -a -n $0 --options l --long localtest,iso:,image-name: -- "$@"); then
|
if ! opts=$(getopt -a -n $0 --options l --long localtest,iso:,image-name:,ddimg: -- "$@"); then
|
||||||
usage_and_exit
|
usage_and_exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -220,6 +229,10 @@ while true; do
|
|||||||
confhome=$localtest_confhome
|
confhome=$localtest_confhome
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--ddimg)
|
||||||
|
ddimg=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
--iso)
|
--iso)
|
||||||
iso=$2
|
iso=$2
|
||||||
shift 2
|
shift 2
|
||||||
@ -262,6 +275,7 @@ esac
|
|||||||
if [ "$distro" = "ubuntu" ] ||
|
if [ "$distro" = "ubuntu" ] ||
|
||||||
[ "$distro" = "alpine" ] ||
|
[ "$distro" = "alpine" ] ||
|
||||||
[ "$distro" = "windows" ] ||
|
[ "$distro" = "windows" ] ||
|
||||||
|
[ "$distro" = "dd" ] ||
|
||||||
{ [ "$distro_like" = "redhat" ] && [ $releasever -ge 8 ] && [ $ram_size -lt 2048 ]; } ||
|
{ [ "$distro_like" = "redhat" ] && [ $releasever -ge 8 ] && [ $ram_size -lt 2048 ]; } ||
|
||||||
{ [ "$distro_like" = "redhat" ] && [ $releasever -eq 7 ] && [ $ram_size -lt 1536 ] && [ $basearch = "aarch64" ]; }; then
|
{ [ "$distro_like" = "redhat" ] && [ $releasever -eq 7 ] && [ $ram_size -lt 1536 ] && [ $basearch = "aarch64" ]; }; then
|
||||||
# 安装alpine时,使用指定的版本。 alpine作为中间系统时,使用 3.18
|
# 安装alpine时,使用指定的版本。 alpine作为中间系统时,使用 3.18
|
||||||
|
17
trans.sh
17
trans.sh
@ -89,6 +89,23 @@ if [ "$distro" = "alpine" ]; then
|
|||||||
export BOOTLOADER="grub"
|
export BOOTLOADER="grub"
|
||||||
printf 'y' | setup-disk -m sys $kernel_opt -s 0 /dev/$xda
|
printf 'y' | setup-disk -m sys $kernel_opt -s 0 /dev/$xda
|
||||||
exec reboot
|
exec reboot
|
||||||
|
|
||||||
|
elif [ "$distro" = "dd" ]; then
|
||||||
|
filetype=$(echo $ddimg | awk -F. '{print $NF}')
|
||||||
|
case "$filetype" in
|
||||||
|
gz) prog=gzip ;;
|
||||||
|
xz) prog=xz ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -n "$prog" ]; then
|
||||||
|
# alpine busybox 自带 gzip xz,但官方版也许性能更好
|
||||||
|
apk add curl $prog
|
||||||
|
curl -L $ddimg | $prog -dc >/dev/$xda
|
||||||
|
else
|
||||||
|
echo 'Not supported'
|
||||||
|
sleep 1m
|
||||||
|
fi
|
||||||
|
exec reboot
|
||||||
fi
|
fi
|
||||||
|
|
||||||
download() {
|
download() {
|
||||||
|
Loading…
Reference in New Issue
Block a user