blob: b7d8323e25f8a78dc4431ff7bd8f1fd700a46b66 (
plain)
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
|
#!/bin/sh
PREFIX=
. "$PREFIX/lib/libalpine.sh"
in_list() {
local i="$1"
shift
while [ $# -gt 0 ]; do
[ "$i" = "$1" ] && return 0
shift
done
return 1
}
useall() {
local i size
echo "Creating root partition..."
apk_add -q parted e2fsprogs
# erase all partitions
for i in $(parted /dev/$rootdisk print | awk '$1 ~ /[0-9]+/ {print $1}'); do
parted /dev/$rootdisk rm $i >/dev/null
done
# create new partition
size=$(parted /dev/$rootdisk print | awk '/^Disk / {print $3}')
parted /dev/$rootdisk mkpart primary 0 $size >/dev/null
parted /dev/$rootdisk set 1 boot on >/dev/null
# create device node if not exist
mdev -s
rootdev=/dev/${rootdisk}1
mkfs.ext3 -q $rootdev
# we are done with parted and dont want it in the lbu package
apk del -q parted e2fsprogs
mount -t ext3 $rootdev /mnt || return 1
echon "Installing system on $rootdev: "
lbu package - | tar -C /mnt -zx
apk add -q --progress --root /mnt $(cat /mnt/var/lib/apk/world) \
linux-grsec linux-grsec-mod acct mkinitfs
echo ""
# make things bootable
kernel=$(ls /mnt/lib/modules)
chroot /mnt /sbin/mkinitfs -F "ata base bootchart cdrom ext3 ide scsi usb" $kernel
# create an extlinux.conf
sed '/append initrd/d' /media/*/syslinux.cfg > /mnt/boot/extlinux.conf
echo -e "\tappend initrd=/boot/grsec.gz root=$rootdev modules=ext3 quiet" >> /mnt/boot/extlinux.conf
# fix the fstab
echo -e "$rootdev\t/\t\text3\tdefaults\t1 1" >> /mnt/etc/fstab
# install extlinux
apk add -q syslinux
extlinux -i /mnt/boot
umount /mnt
# fix mbr
dd if=/usr/share/syslinux/mbr.bin of=/dev/$rootdisk
echo ""
echo "Installation is done. Please reboot."
apk del -q syslinux
}
usbdisk=$(readlink /dev/usbdisk)
disks=
cd /dev
for i in sd[a-z] hd[a-z]; do
case "$usbdisk" in
$i[0-9]*);;
*) [ -b "$i" ] && disks="$disks $i";;
esac
done
# no disks so lets exit quietly.
[ -z "$disks" ] && exit 0
rootdisk=
while ! in_list "$rootdisk" $disks "none" "abort"; do
echo "Available disks are: $disks"
echon "Which one is the root disk? (or none) [none] "
default_read rootdisk "none"
done
[ -b "/dev/$rootdisk" ] || exit 0
echon "Do you want use *all* of $rootdisk for Alpine? (y/n) [n] "
default_read useall "n"
case "$useall" in
[Yy]*) useall="yes";;
esac
if [ "x$useall" != "xyes" ]; then
echo "Only 'use all' option is available at the moment. Sorry"
exit 1
fi
useall
|