forked from m13253/clover-linux-installer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
executable file
·108 lines (92 loc) · 3.7 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/bin/bash
# The original author of this program, clover-linux-installer, is StarBrilliant.
# This file is released under General Public License version 3.
# You should have received a copy of General Public License text alongside with
# this program. If not, you can obtain it at http://gnu.org/copyleft/gpl.html .
# This program comes with no warranty, the author will not be resopnsible for
# any damage or problems caused by this program.
set -e
BOOTFILE=boot6
log() {
echo -ne '\e[1;34m==>\e[0m '>&2
echo "$*" >&2
"$@"
}
test_cmd() {
if which "$1" &>/dev/null
then
true
else
echo "Error: cannot execute \"$1\", install the package \"$2\"">&2
exit 2
fi
}
test_cmd 7z p7zip
test_cmd curl curl
test_cmd dd coreutils
test_cmd gzip gzip
test_cmd mkdir coreutils
test_cmd mount util-linux
test_cmd python3 python3
test_cmd rm coreutils
test_cmd sudo sudo
test_cmd umount util-linux
echo 'Welcome to Clover-Linux-installer.'>&2
echo 'Ensure your target disk has a GPT partition table.'>&2
echo 'Create a FAT32 partition (about 200 MiB) and set it to "EFI System Partition" type.'>&2
echo -n 'Type in your target disk device (e.g. /dev/sdx): '>&2
read TARGET_DISK
echo -n 'Type in your ESP partition device (e.g. /dev/sdx9): '>&2
read TARGET_PARTITION
if [ -z "$TARGET_DISK" -o -z "$TARGET_PARTITION" ]
then
echo 'Invalid input, quitting.'>&2
exit 1
fi
echo>&2
echo "You are about to install Clover on disk \"$TARGET_DISK\", partition \"$TARGET_PARTITION\".">&2
echo 'Make sure you backed up your files before you continue, since the author of this installer program will not be responsible for any damage to your device or your files.'>&2
ANSWER=n
while [ "$ANSWER" != "y" ]
do
echo -n 'Type "y" to continue, type Ctrl-C to quit: '>&2
read ANSWER
done
echo>&2
echo 'Starting installation.'>&2
if [ ! -e Clover.zip ]
then
log curl -o CloverV2.zip.part -C - -L "$(curl -s -S https://api.github.com/repos/CloverHackyColor/CloverBootloader/releases/latest | python3 ./parse-download-url.py)"
log mv CloverV2.zip.part CloverV2.zip
fi
log sudo umount Clover/work/mnt || true
log rm -rf Clover/
log mkdir Clover
log 7z x -oClover CloverV2.zip
log mkdir Clover/work
log cp Clover/CloverV2/BootSectors/boot0af Clover/work/boot0
log cp Clover/CloverV2/BootSectors/boot1f32 Clover/work/boot1
log cp Clover/CloverV2/Bootloaders/x64/"$BOOTFILE" Clover/work/boot
log sudo dd if="$TARGET_DISK" bs=512 count=1 >Clover/work/origMBR
log cp Clover/work/origMBR Clover/work/newMBR
log dd if=Clover/work/boot0 of=Clover/work/newMBR bs=440 count=1 conv=notrunc
log sudo dd if="$TARGET_PARTITION" bs=512 count=1 >Clover/work/origPBR1
log cp Clover/work/boot1 Clover/work/newPBR1
log dd if=Clover/work/origPBR1 of=Clover/work/newPBR1 skip=3 seek=3 bs=1 count=87 conv=notrunc
# Assume the backup boot sector is located at 0xC00.
# Hope you have backed up your important files in caes I guessed it wrong.
log sudo dd if="$TARGET_PARTITION" skip=6 bs=512 count=1 >Clover/work/origPBR2
log cp Clover/work/boot1 Clover/work/newPBR2
log dd if=Clover/work/origPBR2 of=Clover/work/newPBR2 skip=3 seek=3 bs=1 count=87 conv=notrunc
log sudo dd if=Clover/work/newPBR1 of="$TARGET_PARTITION" bs=512 count=1 conv=nocreat,notrunc
log sudo dd if=Clover/work/newPBR2 of="$TARGET_PARTITION" seek=6 bs=512 count=1 conv=nocreat,notrunc
log sudo dd if=Clover/work/newMBR of="$TARGET_DISK" bs=512 count=1 conv=nocreat,notrunc
sleep 2
log mkdir Clover/work/mnt
log sudo mount -t vfat "$TARGET_PARTITION" Clover/work/mnt
log sudo rm -rf Clover/work/mnt/EFI/CLOVER
log sudo cp Clover/work/boot Clover/work/mnt/
log sudo cp -r Clover/CloverV2/EFI Clover/work/mnt/
log sudo umount Clover/work/mnt
echo>&2
echo 'Installation finished successfully.'>&2