blob: 96a96ced89a13d01f57c5c03a478632d6641c71c (
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
#!/usr/bin/env bash
filesystem=ext2
while getopts "f:i" option
do
case $option in
f)
filesystem=$OPTARG
;;
i)
initramfs=1
;;
*)
printf "Option not recognized\n"
exit 1
;;
esac
done
shift $(($OPTIND - 1))
if [ $(id -u) -ne 0 ];then
printf "Installation is only possible as root\n"
exit 1
fi
printf "Checking if mkfs is installed"
mkfs=$(which mkfs.$filesystem)
if [ ! -z $mkfs -a -x $mkfs ];then
printf "...okay\n"
else
printf "...failed\n"
exit 1
fi
printf "Checking if parted is installed"
parted=$(which parted)
if [ ! -z $parted -a -x $parted ];then
printf "...okay\n"
else
printf "...failed\n"
exit 1
fi
printf "Checking if qemu-img is installed"
qimg=$(which qemu-img)
if [ ! -z $qimg -a -x $qimg ];then
printf "...okay\n"
else
printf "...failed\n"
exit 1
fi
if [ -z $1 ];then
printf "Please give the name of the image file\n"
exit 1
fi
if [ -z $initramfs ];then
if [ -z $2 ];then
printf "Please give the name of the openadk archive file\n"
exit 1
fi
else
if [ -z $2 ];then
printf "Please give the full path prefix to kernel/initramfs\n"
exit 1
fi
fi
printf "Generate qemu image\n"
$qimg create -f raw $1 512M >/dev/null
printf "Creating filesystem $filesystem\n"
printf "Create partition and filesystem\n"
$parted -s $1 mklabel msdos
$parted -s $1 mkpart primary ext2 0 100%
$parted -s $1 set 1 boot on
dd if=$1 of=mbr bs=16384 count=1 2>/dev/null
dd if=$1 skip=16384 of=$1.new 2>/dev/null
if [ "$filesystem" = "ext2" -o "$filesystem" = "ext3" -o "$filesystem" = "ext4" ];then
mkfsopts=-F
fi
mkfs.$filesystem $mkfsopts ${1}.new >/dev/null
if [ $? -eq 0 ];then
printf "Successfully created partition\n"
#$parted $1 print
else
printf "Partition creation failed, Exiting.\n"
exit 1
fi
cat mbr ${1}.new > $1
rm ${1}.new
rm mbr
tmp=$(mktemp -d)
mount -o loop,offset=16384 -t $filesystem $1 $tmp
if [ -z $initramfs ];then
printf "Extracting install archive\n"
tar -C $tmp -xzpf $2
printf "Fixing permissions\n"
chmod 1777 $tmp/tmp
chmod 4755 $tmp/bin/busybox
else
printf "Copying kernel/initramfs\n"
mkdir $tmp/boot $tmp/dev
cp $2-kernel $tmp/boot/kernel
cp $2-initramfs $tmp/boot/initramfs
fi
printf "Creating device nodes\n"
mknod -m 666 $tmp/dev/zero c 1 5
mknod -m 666 $tmp/dev/null c 1 3
mknod -m 622 $tmp/dev/console c 5 1
mknod -m 666 $tmp/dev/tty c 5 0
mknod -m 666 $tmp/dev/tty0 c 4 0
#mknod -m 660 $tmp/dev/hda b 3 0
#mknod -m 660 $tmp/dev/hda1 b 3 1
mknod -m 666 $tmp/dev/ttyS0 c 4 64
umount $tmp
printf "Successfully installed.\n"
printf "Be sure $1 is writable for the user which use qemu\n"
exit 0
|