summaryrefslogtreecommitdiffstats
path: root/setup-disk.in
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