blob: 0199df3d10c20eaefb01ab474f196acd3d158998 (
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
|
#!/bin/mksh
# This file is part of the OpenADK project.
# install Gentoo to a block/flash device
if [ $(id -u) -ne 0 ]; then
print installation is only possible as root
exit 1
fi
# get architecture
arch=$(uname -m)
# get adk target system
target=$(cat /etc/.adktarget)
if [ -z $target ]; then
print autodetection of target failed
exit 1
fi
function help {
cat >&2 <<EOF
Syntax: gentooinstall <archive> <device> <hostname>
EOF
exit 1
}
if [ -z $1 ]; then
print no archive given
help
fi
if [ -z $2 ]; then
print no device given
help
fi
if [ -z $3 ]; then
print no hostname given
help
fi
archive=$1
device=$2
hostname=$3
swapsize=2048000
fs=ext4
tools="parted partprobe sfdisk mkfs.ext2"
f=0
for tool in $tools;do
if ! which $tool >/dev/null; then
echo "checking if $tool is installed... failed"
f=1
fi
done
if [ $f -eq 1 ]; then
exit 1
fi
# create empty partition table
function create_label {
print "creating empty partition table"
parted -s $1 mklabel msdos > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "creating empty partition failed!"
exit 1
fi
}
# create partition, with fstype start and end in sectors
function create_partition {
print creating partition on $1 with $2
parted -s $1 -- unit MiB mkpart primary $2 $3 $4 > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "creating primary partition failed!"
exit 1
fi
}
function set_boot_flag {
print setting bootflag on $1 partition $2
parted -s $1 set $2 boot on > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "setting bootflag failed!"
exit 1
fi
}
function change_part_type {
print setting partition type on $1 partition $2 to $3
sfdisk --change-id $1 $2 $3 >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "changing partition type failed!"
exit 1
fi
}
function create_filesystem {
print creating filesystem $2 on $1 partition $3
mkfs.ext2 -j -F -q ${1}${3} >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "creating filesystem on partition failed!"
exit 1
fi
}
function mount_fs {
print mounting ${1}${2} to $4 with filesystem $3
mount -t $3 ${1}${2} $4
if [ $? -ne 0 ]; then
echo "mounting filesystem failed!"
exit 1
fi
}
function extract_archive {
print extracting archive $1 onto $2
tar -C $2 -xpf $1
if [ $? -ne 0 ]; then
echo "archive extraction failed!"
exit 1
fi
}
function create_chroot_installer {
(
print emerge-webrsync
print emerge dhcpcd
print rc-update add sshd default
print emerge grub:2
) >/mnt/install
chmod 755 /mnt/install
}
function create_chroot_grubinstaller {
(
print 'grub-mkconfig > /boot/grub/grub.cfg'
print grub-install /dev/sda
) >/mnt/installgrub
chmod 755 /mnt/installgrub
}
function chroot_install {
print Installing Gentoo
cat /etc/resolv.conf > /mnt/etc/resolv.conf
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -t tmpfs tmpfs /mnt/dev/shm
chroot /mnt /install
if [ $? -ne 0 ]; then
echo "Gentoo installation failed!"
umount /mnt/dev/shm
umount /mnt/{proc,dev,sys}
umount /mnt
exit 1
fi
printf "Now manually install a kernel"
chroot /mnt /bin/bash
printf "Now installang bootloader"
chroot /mnt /installgrub
if [ $? -ne 0 ]; then
echo "Gentoo installation failed!"
umount /mnt/dev/shm
umount /mnt/{proc,dev,sys}
umount /mnt
exit 1
fi
}
case $arch {
(x86|x86_64)
create_label $device
create_partition $device sw 2 2048
create_partition $device ext2 2049 -1
set_boot_flag $device 2
partprobe $device
sync
create_filesystem $device $fs 2
[[ -x /sbin/mdev ]] && mdev -s
mount_fs $device 2 $fs /mnt
extract_archive $archive /mnt
create_chroot_installer
chroot_install /mnt
print "/dev/sda2 / ext4 defaults 0 1" > /mnt/etc/fstab
print hostname=\"$hostname\" > /mnt/etc/conf.d/hostname
chmod 1777 /mnt/tmp
sync
umount /mnt/dev/shm
umount /mnt/{proc,dev,sys}
umount /mnt
;;
}
echo "Successfully installed Gentoo on $target."
exit 0
|