forked from ivandavidov/minimal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
create_boot_stick.sh
71 lines (60 loc) · 1.4 KB
/
create_boot_stick.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
#!/bin/sh
. $(dirname $(readlink -f $0 2>/dev/null))/.config
for DRIVE in /sys/block/sd? ; do
if [ "$(cat ${DRIVE}/removable)" -eq 1 ] ; then
DEVICE="/dev/${DRIVE##*/}"
MOUNTPATH="$(mount | grep -Po "(?<=${DEVICE} on |${DEVICE}. on )\S+" | tail -1)"
break
fi
done
if [ ! "${MOUNTPATH}" ] ; then
echo "no pen drive found"
exit 1
fi
if mount | grep -q ${MOUNTPATH} ; then
umount ${MOUNTPATH}
fi
fdisk ${DEVICE%[0-9]} <<EOF
o
n
p
1
2048
t
c
w
EOF
COUNT=0
until MOUNTPATH="$(mount | grep -Po "(?<=${DEVICE%[0-9]}1 on )\S+")" ; do
COUNT=$((COUNT+1))
if [ ${COUNT} -eq 10 ] ; then
echo "${DEVICE%[0-9]}1 could not be mounted."
break
fi
echo "wait for automount of ${DEVICE%[0-9]}1"
sleep 1
done
umount ${DEVICE%[0-9]}1 || true
mkdosfs -F 32 ${DEVICE%[0-9]}1 -n CCUPDATE
COUNT=0
until MOUNTPATH="$(mount | grep -Po "(?<=${DEVICE%[0-9]}1 on )\S+")" ; do
COUNT=$((COUNT+1))
if [ ${COUNT} -eq 10 ] ; then
echo "${DEVICE%[0-9]}1 could not be mounted."
break
fi
echo "wait for automount of ${DEVICE%[0-9]}1"
sleep 1
done
dd if=/usr/lib/syslinux/mbr.bin of=${DEVICE%[0-9]} bs=440 count=1 conv=notrunc
if ! fdisk -l ${DEVICE%[0-9]} | grep -q "${DEVICE%[0-9]}1 \*" ; then
fdisk ${DEVICE%[0-9]} <<EOF
a
1
w
EOF
fi
7z x -y -x\!isolinux.bin -x\!boot.cat -x\![BOOT] -o"${MOUNTPATH}/" ${SCRIPTDIR}/${TARGETFILE}
mv -f "${MOUNTPATH}/isolinux.cfg" "${MOUNTPATH}/syslinux.cfg"
sync
sudo syslinux ${DEVICE%[0-9]}1