Commit 9a3f9077 authored by Natanael Copa's avatar Natanael Copa

setup-disk: new script

will install the running system on given disk.
So far it can only use *all* disk.
parent 93d5de03
#!/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 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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment