core: 优化注释/代码
This commit is contained in:
parent
4ce85719d4
commit
25ded1a10d
@ -87,7 +87,7 @@ done
|
|||||||
# 等待 udhcpc 创建 /etc/resolv.conf
|
# 等待 udhcpc 创建 /etc/resolv.conf
|
||||||
# 好像只有 dhcpv4 会创建 resolv.conf
|
# 好像只有 dhcpv4 会创建 resolv.conf
|
||||||
if { $dhcpv4 || $dhcpv6_or_slaac; } && [ ! -e /etc/resolv.conf ]; then
|
if { $dhcpv4 || $dhcpv6_or_slaac; } && [ ! -e /etc/resolv.conf ]; then
|
||||||
echo "waiting for /etc/resolv.conf"
|
echo "Waiting for /etc/resolv.conf..."
|
||||||
sleep 5
|
sleep 5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
58
reinstall.sh
58
reinstall.sh
@ -34,7 +34,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
info() {
|
info() {
|
||||||
upper=$(echo "$*" | tr '[:lower:]' '[:upper:]')
|
upper=$(to_upper <<<"$@")
|
||||||
echo_color_text '\e[32m' "***** $upper *****"
|
echo_color_text '\e[32m' "***** $upper *****"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,17 +60,19 @@ error_and_exit() {
|
|||||||
|
|
||||||
curl() {
|
curl() {
|
||||||
# 添加 -f, --fail,不然 404 退出码也为0
|
# 添加 -f, --fail,不然 404 退出码也为0
|
||||||
command curl --connect-timeout 5 --retry 2 --retry-delay 1 -f "$@"
|
# 32位 cygwin 已停止更新,证书可能有问题,先添加 --insecure
|
||||||
|
command curl --insecure --connect-timeout 5 --retry 2 --retry-delay 1 -f "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
is_in_china() {
|
is_in_china() {
|
||||||
if [ -z $_is_in_china ]; then
|
if [ -z $_is_in_china ]; then
|
||||||
# https://geoip.fedoraproject.org/city # 不支持 ipv6
|
# https://geoip.fedoraproject.org/city # 不支持 ipv6
|
||||||
# https://geoip.ubuntu.com/lookup # 不支持 ipv6
|
# https://geoip.ubuntu.com/lookup # 不支持 ipv6
|
||||||
curl -L http://www.cloudflare.com/cdn-cgi/trace | grep -qx 'loc=CN'
|
curl -L http://www.cloudflare.com/cdn-cgi/trace |
|
||||||
_is_in_china=$?
|
grep -qx 'loc=CN' && _is_in_china=true ||
|
||||||
|
_is_in_china=false
|
||||||
fi
|
fi
|
||||||
return $_is_in_china
|
$_is_in_china
|
||||||
}
|
}
|
||||||
|
|
||||||
is_in_windows() {
|
is_in_windows() {
|
||||||
@ -125,18 +127,28 @@ get_host_by_url() {
|
|||||||
cut -d/ -f3 <<<$1
|
cut -d/ -f3 <<<$1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_function_content() {
|
||||||
|
declare -f "$1" | sed '1d;2d;$d'
|
||||||
|
}
|
||||||
|
|
||||||
insert_into_file() {
|
insert_into_file() {
|
||||||
file=$1
|
file=$1
|
||||||
location=$2
|
location=$2
|
||||||
regex_to_find=$3
|
regex_to_find=$3
|
||||||
|
|
||||||
line_num=$(grep -E -n "$regex_to_find" "$file" | cut -d: -f1)
|
line_num=$(grep -E -n "$regex_to_find" "$file" | cut -d: -f1)
|
||||||
if [ "$location" = before ]; then
|
|
||||||
line_num=$((line_num - 1))
|
found_count=$(echo "$line_num" | wc -l)
|
||||||
elif ! [ "$location" = after ]; then
|
if [ ! "$found_count" -eq 1 ]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case "$location" in
|
||||||
|
before) line_num=$((line_num - 1)) ;;
|
||||||
|
after) ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
sed -i "${line_num}r /dev/stdin" "$file"
|
sed -i "${line_num}r /dev/stdin" "$file"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,7 +194,7 @@ test_url_real() {
|
|||||||
|
|
||||||
# 有些 file 版本输出的是 # ISO 9660 CD-ROM filesystem data ,要去掉开头的井号
|
# 有些 file 版本输出的是 # ISO 9660 CD-ROM filesystem data ,要去掉开头的井号
|
||||||
install_pkg file
|
install_pkg file
|
||||||
real_type=$(file -b $tmp_file | sed 's/^# //' | cut -d' ' -f1 | tr '[:upper:]' '[:lower:]')
|
real_type=$(file -b $tmp_file | sed 's/^# //' | cut -d' ' -f1 | to_lower)
|
||||||
[ -n "$var_to_eval" ] && eval $var_to_eval=$real_type
|
[ -n "$var_to_eval" ] && eval $var_to_eval=$real_type
|
||||||
|
|
||||||
if ! grep -wo "$real_type" <<<"$expect_type"; then
|
if ! grep -wo "$real_type" <<<"$expect_type"; then
|
||||||
@ -230,12 +242,13 @@ is_virt() {
|
|||||||
for name in ComputerSystem BIOS BaseBoard; do
|
for name in ComputerSystem BIOS BaseBoard; do
|
||||||
wmic $name | grep -Eiw $vmstr && return 0
|
wmic $name | grep -Eiw $vmstr && return 0
|
||||||
done
|
done
|
||||||
wmic /namespace:'\\root\cimv2' PATH Win32_Fan | head -1 | grep -q -v Name
|
wmic /namespace:'\\root\cimv2' PATH Win32_Fan 2>/dev/null | head -1 | grep -q -v Name
|
||||||
else
|
else
|
||||||
# aws t4g debian 11 systemd-detect-virt 为 none,即使装了dmidecode
|
# aws t4g debian 11
|
||||||
|
# systemd-detect-virt: 为 none,即使装了dmidecode
|
||||||
# virt-what: 未装 deidecode时结果为空,装了deidecode后结果为aws
|
# virt-what: 未装 deidecode时结果为空,装了deidecode后结果为aws
|
||||||
# 所以综合两个命令的结果来判断
|
# 所以综合两个命令的结果来判断
|
||||||
if is_have_cmd systemd-detect-virt && systemd-detect-virt; then
|
if is_have_cmd systemd-detect-virt && systemd-detect-virt -v; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
# debian 安装 virt-what 不会自动安装 dmidecode,因此结果有误
|
# debian 安装 virt-what 不会自动安装 dmidecode,因此结果有误
|
||||||
@ -306,7 +319,7 @@ setos() {
|
|||||||
eval ${step}_initrd=$mirror/initrd.gz
|
eval ${step}_initrd=$mirror/initrd.gz
|
||||||
eval ${step}_ks=$confhome/debian.cfg
|
eval ${step}_ks=$confhome/debian.cfg
|
||||||
|
|
||||||
is_virt && flavour=-cloud
|
is_virt && flavour=-cloud || flavour=
|
||||||
# 甲骨文 debian 10 amd64 cloud 内核 vnc 没有显示
|
# 甲骨文 debian 10 amd64 cloud 内核 vnc 没有显示
|
||||||
[ "$releasever" -eq 10 ] && [ "$basearch_alt" = amd64 ] && flavour=
|
[ "$releasever" -eq 10 ] && [ "$basearch_alt" = amd64 ] && flavour=
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
@ -545,7 +558,7 @@ verify_os_name() {
|
|||||||
'dd'; do
|
'dd'; do
|
||||||
ds=$(awk '{print $1}' <<<"$os")
|
ds=$(awk '{print $1}' <<<"$os")
|
||||||
vers=$(awk '{print $2}' <<<"$os" | sed 's \. \\\. g')
|
vers=$(awk '{print $2}' <<<"$os" | sed 's \. \\\. g')
|
||||||
finalos=$(echo "$@" | tr '[:upper:]' '[:lower:]' | sed -n -E "s,^($ds)[ :-]?(|$vers)$,\1:\2,p")
|
finalos=$(echo "$@" | to_lower | sed -n -E "s,^($ds)[ :-]?(|$vers)$,\1:\2,p")
|
||||||
if [ -n "$finalos" ]; then
|
if [ -n "$finalos" ]; then
|
||||||
distro=$(echo $finalos | cut -d: -f1)
|
distro=$(echo $finalos | cut -d: -f1)
|
||||||
releasever=$(echo $finalos | cut -d: -f2)
|
releasever=$(echo $finalos | cut -d: -f2)
|
||||||
@ -581,6 +594,7 @@ verify_os_args() {
|
|||||||
get_cmd_path() {
|
get_cmd_path() {
|
||||||
# arch 云镜像不带 which
|
# arch 云镜像不带 which
|
||||||
# command -v 包括脚本里面的方法
|
# command -v 包括脚本里面的方法
|
||||||
|
# ash 无效
|
||||||
type -f -p $1
|
type -f -p $1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1177,16 +1191,20 @@ EOF
|
|||||||
# udhcpc: bound
|
# udhcpc: bound
|
||||||
# udhcpc6: deconfig
|
# udhcpc6: deconfig
|
||||||
# udhcpc6: bound
|
# udhcpc6: bound
|
||||||
insert_into_file usr/share/udhcpc/default.script after 'deconfig\|renew\|bound' <<EOF
|
# shellcheck disable=SC2154
|
||||||
if [ "\$1" = deconfig ]; then
|
udhcpc() {
|
||||||
|
if [ "$1" = deconfig ]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
if [ "\$1" = bound ] && [ -n "\$ipv6" ]; then
|
if [ "$1" = bound ] && [ -n "$ipv6" ]; then
|
||||||
ip -6 addr add \$ipv6 dev \$interface
|
ip -6 addr add "$ipv6" dev "$interface"
|
||||||
ip link set dev \$interface up
|
ip link set dev "$interface" up
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
EOF
|
}
|
||||||
|
|
||||||
|
get_function_content udhcpc |
|
||||||
|
insert_into_file usr/share/udhcpc/default.script after 'deconfig\|renew\|bound'
|
||||||
|
|
||||||
# hack 4 网络配置
|
# hack 4 网络配置
|
||||||
collect_netconf
|
collect_netconf
|
||||||
|
79
trans.sh
79
trans.sh
@ -100,11 +100,13 @@ download() {
|
|||||||
|
|
||||||
update_part() {
|
update_part() {
|
||||||
{
|
{
|
||||||
|
set +e
|
||||||
hdparm -z $1
|
hdparm -z $1
|
||||||
partprobe $1
|
partprobe $1
|
||||||
partx -u $1
|
partx -u $1
|
||||||
udevadm settle
|
udevadm settle
|
||||||
echo 1 >/sys/block/${1#/dev/}/device/rescan
|
echo 1 >/sys/block/${1#/dev/}/device/rescan
|
||||||
|
set -e
|
||||||
} 2>/dev/null || true
|
} 2>/dev/null || true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,6 +170,7 @@ get_ttys() {
|
|||||||
get_xda() {
|
get_xda() {
|
||||||
# 排除只读盘,vda 放前面
|
# 排除只读盘,vda 放前面
|
||||||
# 有的机器有sda和vda,vda是主硬盘,另一个盘是只读
|
# 有的机器有sda和vda,vda是主硬盘,另一个盘是只读
|
||||||
|
# TODO: 找出容量最大的?
|
||||||
for _xda in vda xda sda hda xvda nvme0n1; do
|
for _xda in vda xda sda hda xvda nvme0n1; do
|
||||||
if [ -e "/sys/class/block/$_xda/ro" ] &&
|
if [ -e "/sys/class/block/$_xda/ro" ] &&
|
||||||
[ "$(cat /sys/class/block/$_xda/ro)" = 0 ]; then
|
[ "$(cat /sys/class/block/$_xda/ro)" = 0 ]; then
|
||||||
@ -240,11 +243,13 @@ EOF
|
|||||||
clear_previous() {
|
clear_previous() {
|
||||||
{
|
{
|
||||||
# TODO: fuser and kill
|
# TODO: fuser and kill
|
||||||
|
set +e
|
||||||
qemu_nbd -d /dev/nbd0
|
qemu_nbd -d /dev/nbd0
|
||||||
swapoff -a
|
swapoff -a
|
||||||
# alpine 自带的umount没有-R,除非安装了util-linux
|
# alpine 自带的umount没有-R,除非安装了util-linux
|
||||||
umount -R /iso /wim /installer /os/installer /os /nbd /nbd-boot /nbd-efi /mnt
|
umount -R /iso /wim /installer /os/installer /os /nbd /nbd-boot /nbd-efi /mnt
|
||||||
umount /iso /wim /installer /os/installer /os /nbd /nbd-boot /nbd-efi /mnt
|
umount /iso /wim /installer /os/installer /os /nbd /nbd-boot /nbd-efi /mnt
|
||||||
|
set -e
|
||||||
} 2>/dev/null || true
|
} 2>/dev/null || true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,7 +279,7 @@ get_ra_to() {
|
|||||||
|
|
||||||
get_netconf_to() {
|
get_netconf_to() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
slaac | dhcpv6 | rdnss) get_ra_to ra ;;
|
slaac | dhcpv6 | rdnss | is_in_china) get_ra_to ra ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
@ -288,6 +293,12 @@ get_netconf_to() {
|
|||||||
eval "$1='$res'"
|
eval "$1='$res'"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_in_china() {
|
||||||
|
get_netconf_to is_in_china
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
[ "$is_in_china" = 1 ]
|
||||||
|
}
|
||||||
|
|
||||||
# 有 dhcpv4 不等于有网关,例如 vultr 纯 ipv6
|
# 有 dhcpv4 不等于有网关,例如 vultr 纯 ipv6
|
||||||
# 没有 dhcpv4 不等于是静态ip,可能是没有 ip
|
# 没有 dhcpv4 不等于是静态ip,可能是没有 ip
|
||||||
is_dhcpv4() {
|
is_dhcpv4() {
|
||||||
@ -545,8 +556,26 @@ EOF
|
|||||||
printf 'y' | setup-disk -m sys -k $kernel_flavor -s 0 /dev/$xda
|
printf 'y' | setup-disk -m sys -k $kernel_flavor -s 0 /dev/$xda
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_http_file_size_to() {
|
||||||
|
var_name=$1
|
||||||
|
url=$2
|
||||||
|
|
||||||
|
size=''
|
||||||
|
if wget --spider -S $url -o /tmp/headers.log; then
|
||||||
|
# 网址重定向可能得到多个 Content-Length, 选最后一个
|
||||||
|
set -o pipefail
|
||||||
|
if size=$(grep 'Content-Length:' /tmp/headers.log |
|
||||||
|
tail -1 | awk '{print $2}'); then
|
||||||
|
eval "$var_name='$size'"
|
||||||
|
fi
|
||||||
|
set +o pipefail
|
||||||
|
else
|
||||||
|
error_and_exit "Can't access $url"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
install_dd() {
|
dd_gzip_xz() {
|
||||||
case "$img_type" in
|
case "$img_type" in
|
||||||
gzip) prog=gzip ;;
|
gzip) prog=gzip ;;
|
||||||
xz) prog=xz ;;
|
xz) prog=xz ;;
|
||||||
@ -568,7 +597,7 @@ is_xda_gt_2t() {
|
|||||||
create_part() {
|
create_part() {
|
||||||
# 目标系统非 alpine 和 dd
|
# 目标系统非 alpine 和 dd
|
||||||
# 脚本开始
|
# 脚本开始
|
||||||
apk add util-linux aria2 grub udev hdparm e2fsprogs curl parted
|
apk add util-linux udev hdparm e2fsprogs parted
|
||||||
|
|
||||||
# 打开dev才能刷新分区名
|
# 打开dev才能刷新分区名
|
||||||
rc-service udev start
|
rc-service udev start
|
||||||
@ -581,24 +610,22 @@ create_part() {
|
|||||||
partx -d /dev/$xda || true
|
partx -d /dev/$xda || true
|
||||||
|
|
||||||
# 清除分区签名
|
# 清除分区签名
|
||||||
wipefs -a /dev/$xda
|
# TODO: 先检测iso链接/各种链接
|
||||||
|
# wipefs -a /dev/$xda
|
||||||
|
|
||||||
# xda*1 星号用于 nvme0n1p1 的字母 p
|
# xda*1 星号用于 nvme0n1p1 的字母 p
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
if [ "$distro" = windows ]; then
|
if [ "$distro" = windows ]; then
|
||||||
if ! wget --spider -S $iso 2>/tmp/headers.log; then
|
get_http_file_size_to size_bytes $iso
|
||||||
error_and_exit "Can't access Windows iso."
|
if [ -n "$size_bytes" ]; then
|
||||||
fi
|
# 按iso容量计算分区大小,512m用于驱动和文件系统自身占用
|
||||||
|
part_size="$((size_bytes / 1024 / 1024 + 512))MiB"
|
||||||
# 按iso容量计算分区大小,512m用于驱动和文件系统自身占用
|
else
|
||||||
# 网址重定向可能得到多个 Content-Length, 选最后一个
|
|
||||||
part_size=$(grep 'Content-Length:' /tmp/headers.log | tail -1 | awk '{print int($2/1024/1024+512)}')
|
|
||||||
if [ -z "$part_size" ]; then
|
|
||||||
# 默认值,最大的iso 23h2 需要7g
|
# 默认值,最大的iso 23h2 需要7g
|
||||||
part_size=$((7 * 1024))
|
part_size="$((7 * 1024))MiB"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
apk add ntfs-3g-progs virt-what wimlib rsync dos2unix
|
apk add ntfs-3g-progs virt-what wimlib rsync
|
||||||
# 虽然ntfs3不需要fuse,但wimmount需要,所以还是要保留
|
# 虽然ntfs3不需要fuse,但wimmount需要,所以还是要保留
|
||||||
modprobe fuse ntfs3
|
modprobe fuse ntfs3
|
||||||
if is_efi; then
|
if is_efi; then
|
||||||
@ -608,8 +635,8 @@ create_part() {
|
|||||||
mklabel gpt \
|
mklabel gpt \
|
||||||
mkpart '" "' fat32 1MiB 1025MiB \
|
mkpart '" "' fat32 1MiB 1025MiB \
|
||||||
mkpart '" "' fat32 1025MiB 1041MiB \
|
mkpart '" "' fat32 1025MiB 1041MiB \
|
||||||
mkpart '" "' ext4 1041MiB -${part_size}MiB \
|
mkpart '" "' ext4 1041MiB -${part_size} \
|
||||||
mkpart '" "' ntfs -${part_size}MiB 100% \
|
mkpart '" "' ntfs -${part_size} 100% \
|
||||||
set 1 boot on \
|
set 1 boot on \
|
||||||
set 2 msftres on \
|
set 2 msftres on \
|
||||||
set 3 msftdata on
|
set 3 msftdata on
|
||||||
@ -623,8 +650,8 @@ create_part() {
|
|||||||
# bios
|
# bios
|
||||||
parted /dev/$xda -s -- \
|
parted /dev/$xda -s -- \
|
||||||
mklabel msdos \
|
mklabel msdos \
|
||||||
mkpart primary ntfs 1MiB -${part_size}MiB \
|
mkpart primary ntfs 1MiB -${part_size} \
|
||||||
mkpart primary ntfs -${part_size}MiB 100% \
|
mkpart primary ntfs -${part_size} 100% \
|
||||||
set 1 boot on
|
set 1 boot on
|
||||||
update_part /dev/$xda
|
update_part /dev/$xda
|
||||||
|
|
||||||
@ -661,6 +688,7 @@ create_part() {
|
|||||||
mkfs.ext4 -F -L installer /dev/$xda*3 #3 installer
|
mkfs.ext4 -F -L installer /dev/$xda*3 #3 installer
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
# 最大的 qcow2 是 centos8,1.8g
|
||||||
# gentoo 的镜像解压后是 3.5g,因此设置 installer 分区 1g,这样才能在5g硬盘上安装
|
# gentoo 的镜像解压后是 3.5g,因此设置 installer 分区 1g,这样才能在5g硬盘上安装
|
||||||
[ "$distro" = gentoo ] && installer_part_size=1GiB || installer_part_size=2GiB
|
[ "$distro" = gentoo ] && installer_part_size=1GiB || installer_part_size=2GiB
|
||||||
parted /dev/$xda -s -- \
|
parted /dev/$xda -s -- \
|
||||||
@ -1264,7 +1292,7 @@ EOF
|
|||||||
|
|
||||||
dd_qcow() {
|
dd_qcow() {
|
||||||
if true; then
|
if true; then
|
||||||
modprobe nbd
|
modprobe nbd nbds_max=1
|
||||||
qemu_nbd -c /dev/nbd0 $qcow_file
|
qemu_nbd -c /dev/nbd0 $qcow_file
|
||||||
|
|
||||||
# 检查最后一个分区是否是 btrfs
|
# 检查最后一个分区是否是 btrfs
|
||||||
@ -1326,6 +1354,7 @@ dd_qcow() {
|
|||||||
3)
|
3)
|
||||||
# 用 pv
|
# 用 pv
|
||||||
apk add pv
|
apk add pv
|
||||||
|
echo "Start DD Cloud Image..."
|
||||||
pv -f /dev/nbd0 | dd of=/dev/$xda bs=1M skip=1 seek=1 iflag=fullblock
|
pv -f /dev/nbd0 | dd of=/dev/$xda bs=1M skip=1 seek=1 iflag=fullblock
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -1498,7 +1527,7 @@ install_windows() {
|
|||||||
# arch_xen xen驱动 x86 x64
|
# arch_xen xen驱动 x86 x64
|
||||||
|
|
||||||
# 将 wim 的 arch 转为驱动和应答文件的 arch
|
# 将 wim 的 arch 转为驱动和应答文件的 arch
|
||||||
arch_wim=$(wiminfo $install_wim 1 | grep Architecture: | awk '{print $2}' | tr '[:upper:]' '[:lower:]')
|
arch_wim=$(wiminfo $install_wim 1 | grep Architecture: | awk '{print $2}' | to_lower)
|
||||||
case "$arch_wim" in
|
case "$arch_wim" in
|
||||||
x86)
|
x86)
|
||||||
arch=x86
|
arch=x86
|
||||||
@ -1533,7 +1562,6 @@ install_windows() {
|
|||||||
# aws nitro
|
# aws nitro
|
||||||
# 只有 x64 位驱动
|
# 只有 x64 位驱动
|
||||||
# https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/migrating-latest-types.html
|
# https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/migrating-latest-types.html
|
||||||
apk add unzip
|
|
||||||
if is_win7_or_win2008r2; then
|
if is_win7_or_win2008r2; then
|
||||||
download https://s3.amazonaws.com/ec2-windows-drivers-downloads/NVMe/1.3.2/AWSNVMe.zip $drv/AWSNVMe.zip
|
download https://s3.amazonaws.com/ec2-windows-drivers-downloads/NVMe/1.3.2/AWSNVMe.zip $drv/AWSNVMe.zip
|
||||||
download https://s3.amazonaws.com/ec2-windows-drivers-downloads/ENA/x64/2.2.3/AwsEnaNetworkDriver.zip $drv/AwsEnaNetworkDriver.zip
|
download https://s3.amazonaws.com/ec2-windows-drivers-downloads/ENA/x64/2.2.3/AwsEnaNetworkDriver.zip $drv/AwsEnaNetworkDriver.zip
|
||||||
@ -1550,7 +1578,7 @@ install_windows() {
|
|||||||
# 只有 64 位驱动
|
# 只有 64 位驱动
|
||||||
# 未测试
|
# 未测试
|
||||||
# https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/Upgrading_PV_drivers.html
|
# https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/Upgrading_PV_drivers.html
|
||||||
apk add unzip msitools
|
apk add msitools
|
||||||
|
|
||||||
if is_win7_or_win2008r2; then
|
if is_win7_or_win2008r2; then
|
||||||
download https://s3.amazonaws.com/ec2-windows-drivers-downloads/AWSPV/8.3.5/AWSPVDriver.zip $drv/AWSPVDriver.zip
|
download https://s3.amazonaws.com/ec2-windows-drivers-downloads/AWSPV/8.3.5/AWSPVDriver.zip $drv/AWSPVDriver.zip
|
||||||
@ -1583,7 +1611,7 @@ install_windows() {
|
|||||||
# virtio
|
# virtio
|
||||||
# x86 x64 arm64 都有
|
# x86 x64 arm64 都有
|
||||||
# https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/
|
# https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/
|
||||||
case $(echo "$image_name" | tr '[:upper:]' '[:lower:]') in
|
case $(echo "$image_name" | to_lower) in
|
||||||
'windows server 2022'*) sys=2k22 ;;
|
'windows server 2022'*) sys=2k22 ;;
|
||||||
'windows server 2019'*) sys=2k19 ;;
|
'windows server 2019'*) sys=2k19 ;;
|
||||||
'windows server 2016'*) sys=2k16 ;;
|
'windows server 2016'*) sys=2k16 ;;
|
||||||
@ -1626,7 +1654,7 @@ install_windows() {
|
|||||||
|
|
||||||
# 没有 vista 驱动
|
# 没有 vista 驱动
|
||||||
# 没有专用的 win11 驱动
|
# 没有专用的 win11 驱动
|
||||||
case $(echo "$image_name" | tr '[:upper:]' '[:lower:]') in
|
case $(echo "$image_name" | to_lower) in
|
||||||
'windows server 2022'*) sys_gce=win10.0 ;;
|
'windows server 2022'*) sys_gce=win10.0 ;;
|
||||||
'windows server 2019'*) sys_gce=win10.0 ;;
|
'windows server 2019'*) sys_gce=win10.0 ;;
|
||||||
'windows server 2016'*) sys_gce=win10.0 ;;
|
'windows server 2016'*) sys_gce=win10.0 ;;
|
||||||
@ -1842,7 +1870,8 @@ EOF
|
|||||||
|
|
||||||
# 脚本入口
|
# 脚本入口
|
||||||
# arm要手动从硬件同步时间,避免访问https出错
|
# arm要手动从硬件同步时间,避免访问https出错
|
||||||
hwclock -s
|
# do 机器第二次运行会报错
|
||||||
|
hwclock -s || true
|
||||||
|
|
||||||
# 设置密码,安装并打开 ssh
|
# 设置密码,安装并打开 ssh
|
||||||
echo root:123@@@ | chpasswd
|
echo root:123@@@ | chpasswd
|
||||||
|
Loading…
Reference in New Issue
Block a user