summaryrefslogtreecommitdiff
path: root/package/kexecinit/src/kexecinit
blob: 3aee9ce189bb0ab9f49a8585ca9a6a18e61282d9 (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
#!/bin/sh

load_system() {
	echo "Loading OpenADK from microdrive (${micro}1)"
	mount ${micro}1 /mnt
	if [ $? -ne 0 ];then echo "Mounting ${micro}1 failed"; exit 1;fi
	kexec -l /mnt/boot/kernel
	umount /mnt
	kexec -e -x
}

cf_install() {
	mkdir /mnt/root
	mkdir /mnt/cf
	mount -t ext2 ${micro}1 /mnt/root
	if [ $? -ne 0 ];then echo "Mounting ${micro}1 failed"; exit 1;fi
	mount ${cfd}1 /mnt/cf
	if [ $? -ne 0 ];then echo "Mounting ${cfd}1 failed"; exit 1;fi
	if [ -f /mnt/cf/sharp.tgz ];then
		echo "Installing OpenADK from CF (${cfd}1) to microdrive (${micro}1)"
		umount /mnt/root
		mke2fs -q ${micro}1
		mount -t ext2 ${micro}1 /mnt/root
		if [ $? -ne 0 ];then echo "Mounting ${micro}1 failed"; exit 1;fi
		tar -xzpf /mnt/cf/sharp.tgz -C /mnt/root
	fi
	umount /mnt/root
	umount /mnt/cf
}

check_cf() {
	cf=0
	if [ $(lsscsi|wc -l) -eq 1 ];then
		cf=0
	else
		cf=1
	fi
	micro=$(lsscsi |awk '$4 ~ "HMS360" { print $6 }')
	if [ "$micro" = "/dev/sda" ];then
		cfd=/dev/sdb
	else
		cfd=/dev/sda
	fi
}

echo "  ___                      _    ____  _  __ "
echo " / _ \ _ __   ___ _ __    / \  |  _ \| |/ / "
echo "| | | | '_ \ / _ \ '_ \  / _ \ | | | | ' /  "
echo "| |_| | |_) |  __/ | | |/ ___ \| |_| | . \  "
echo " \___/| .__/ \___|_| |_/_/   \_\____/|_|\_\ "
echo "      |_|                                   "
echo ""

sleep 2
check_cf
if [ $cf -eq 0 ];then
	load_system
else
	echo "Should I install OpenADK to microdrive (y/n)"
	read answer
	if [ "$answer" = "y" ];then
		cf_install
	fi
	load_system
fi