root / common_linux.sh @ 47c86659
History | View | Annotate | Download (6.1 kB)
1 | 5dc61974 | Nikos Skalkotos | |
---|---|---|---|
2 | 5dc61974 | Nikos Skalkotos | get_os_type() { |
3 | 5dc61974 | Nikos Skalkotos | target=$1 |
4 | 5dc61974 | Nikos Skalkotos | if [ -z "${target}" ] ; then |
5 | 5dc61974 | Nikos Skalkotos | log_error "target is not set in get_os_type" |
6 | 5dc61974 | Nikos Skalkotos | exit 1 |
7 | 5dc61974 | Nikos Skalkotos | fi |
8 | 5dc61974 | Nikos Skalkotos | if [ -e ${target}/etc/redhat-release ] ; then |
9 | 5dc61974 | Nikos Skalkotos | OS_TYPE="redhat" |
10 | 5dc61974 | Nikos Skalkotos | elif [ -e ${target}/etc/debian_version ] ; then |
11 | 5dc61974 | Nikos Skalkotos | OS_TYPE="debian" |
12 | 5dc61974 | Nikos Skalkotos | elif [ -e ${target}/etc/gentoo-release ] ; then |
13 | 5dc61974 | Nikos Skalkotos | OS_TYPE="gentoo" |
14 | 5dc61974 | Nikos Skalkotos | elif [ -e ${target}/etc/SuSE-release ] ; then |
15 | 5dc61974 | Nikos Skalkotos | OS_TYPE="suse" |
16 | 5dc61974 | Nikos Skalkotos | fi |
17 | 5dc61974 | Nikos Skalkotos | } |
18 | 5dc61974 | Nikos Skalkotos | |
19 | 5dc61974 | Nikos Skalkotos | get_os() { |
20 | 5dc61974 | Nikos Skalkotos | target=$1 |
21 | 5dc61974 | Nikos Skalkotos | if [ -z "${target}" ] ; then |
22 | 5dc61974 | Nikos Skalkotos | log_error "target is not set in get_os" |
23 | 5dc61974 | Nikos Skalkotos | exit 1 |
24 | 5dc61974 | Nikos Skalkotos | fi |
25 | 5dc61974 | Nikos Skalkotos | lsb="/usr/bin/lsb_release" |
26 | 5dc61974 | Nikos Skalkotos | if [ -e ${target}/$lsb ] ; then |
27 | 5dc61974 | Nikos Skalkotos | OPERATING_SYSTEM="$(chroot ${target} ${lsb} -i -s | tr "[:upper:]" "[:lower:]")" |
28 | 5dc61974 | Nikos Skalkotos | elif [ -e ${target}/etc/debian_version ] ; then |
29 | 5dc61974 | Nikos Skalkotos | OPERATING_SYSTEM="debian" |
30 | 5dc61974 | Nikos Skalkotos | elif [ -e ${target}/etc/gentoo-release ] ; then |
31 | 5dc61974 | Nikos Skalkotos | OPERATING_SYSTEM="gentoo" |
32 | 5dc61974 | Nikos Skalkotos | elif [ -e ${target}/etc/fedora-release ] ; then |
33 | 5dc61974 | Nikos Skalkotos | OPERATING_SYSTEM="fedora" |
34 | 5dc61974 | Nikos Skalkotos | elif [ -e ${target}/etc/redhat-release ] ; then |
35 | 5dc61974 | Nikos Skalkotos | if [ -n "$(grep -i centos ${target}/etc/redhat-release)" ] ; then |
36 | 5dc61974 | Nikos Skalkotos | OPERATING_SYSTEM="centos" |
37 | 5dc61974 | Nikos Skalkotos | else |
38 | 5dc61974 | Nikos Skalkotos | OPERATING_SYSTEM="redhat" |
39 | 5dc61974 | Nikos Skalkotos | fi |
40 | 5dc61974 | Nikos Skalkotos | fi |
41 | 5dc61974 | Nikos Skalkotos | } |
42 | 5dc61974 | Nikos Skalkotos | |
43 | 5dc61974 | Nikos Skalkotos | get_os_release() { |
44 | 5dc61974 | Nikos Skalkotos | target=$1 |
45 | 5dc61974 | Nikos Skalkotos | if [ -z "${target}" ] ; then |
46 | 5dc61974 | Nikos Skalkotos | log_error "target is not set in get_os_release" |
47 | 5dc61974 | Nikos Skalkotos | exit 1 |
48 | 5dc61974 | Nikos Skalkotos | fi |
49 | 5dc61974 | Nikos Skalkotos | lsb="/usr/bin/lsb_release" |
50 | 5dc61974 | Nikos Skalkotos | if [ -e ${target}/$lsb ] ; then |
51 | 5dc61974 | Nikos Skalkotos | OS_RELEASE="$(chroot ${target} ${lsb} -r -s | tr "[:upper:]" "[:lower:]")" |
52 | 5dc61974 | Nikos Skalkotos | elif [ -e ${target}/etc/debian_version ] ; then |
53 | 5dc61974 | Nikos Skalkotos | OS_RELEASE="$(cat ${target}/etc/debian_version)" |
54 | 5dc61974 | Nikos Skalkotos | elif [ -e ${target}/etc/fedora-release ] ; then |
55 | 5dc61974 | Nikos Skalkotos | OS_RELEASE="$(cat ${target}/etc/fedora-release | awk '{print $3}')" |
56 | 5dc61974 | Nikos Skalkotos | elif [ -e ${$target}/etc/redhat-release ] ; then |
57 | 5dc61974 | Nikos Skalkotos | OS_RELEASE="$(cat ${target}/etc/redhat-release | awk '{print $3}')" |
58 | 5dc61974 | Nikos Skalkotos | fi |
59 | 5dc61974 | Nikos Skalkotos | } |
60 | 5dc61974 | Nikos Skalkotos | |
61 | bb78ba49 | Nikos Skalkotos | linux_format_disk0() { |
62 | 5dc61974 | Nikos Skalkotos | local sfdisk_cmd="$SFDISK -uM -H 255 -S 63 --quiet --Linux --DOS $1" |
63 | 5dc61974 | Nikos Skalkotos | if [ "${SWAP}" = "yes" -a -z "${KERNEL_PATH}" ] ; then |
64 | 5dc61974 | Nikos Skalkotos | # Create three partitions: |
65 | 5dc61974 | Nikos Skalkotos | # 1 - 100MB /boot, bootable |
66 | 5dc61974 | Nikos Skalkotos | # 2 - Size of Memory, swap |
67 | 5dc61974 | Nikos Skalkotos | # 3 - Rest |
68 | 5dc61974 | Nikos Skalkotos | $sfdisk_cmd > /dev/null <<EOF |
69 | 5dc61974 | Nikos Skalkotos | ,100,L,* |
70 | 5dc61974 | Nikos Skalkotos | ,${SWAP_SIZE},S |
71 | 5dc61974 | Nikos Skalkotos | ,,L |
72 | 5dc61974 | Nikos Skalkotos | EOF |
73 | 5dc61974 | Nikos Skalkotos | elif [ "${SWAP}" = "no" -a -z "${KERNEL_PATH}" ] ; then |
74 | 5dc61974 | Nikos Skalkotos | # Create two partitions: |
75 | 5dc61974 | Nikos Skalkotos | # 1 - 100MB /boot, bootable |
76 | 5dc61974 | Nikos Skalkotos | # 2 - Rest |
77 | 5dc61974 | Nikos Skalkotos | $sfdisk_cmd > /dev/null <<EOF |
78 | 5dc61974 | Nikos Skalkotos | ,100,L,* |
79 | 5dc61974 | Nikos Skalkotos | ,,L |
80 | 5dc61974 | Nikos Skalkotos | EOF |
81 | 5dc61974 | Nikos Skalkotos | elif [ "${SWAP}" = "yes" -a -n "${KERNEL_PATH}" ] ; then |
82 | 5dc61974 | Nikos Skalkotos | # Create two partitions: |
83 | 5dc61974 | Nikos Skalkotos | # 1 - Size of Memory, swap |
84 | 5dc61974 | Nikos Skalkotos | # 2 - Rest |
85 | 5dc61974 | Nikos Skalkotos | $sfdisk_cmd > /dev/null <<EOF |
86 | 5dc61974 | Nikos Skalkotos | ,$SWAP_SIZE,S |
87 | 5dc61974 | Nikos Skalkotos | ,,L |
88 | 5dc61974 | Nikos Skalkotos | EOF |
89 | 5dc61974 | Nikos Skalkotos | elif [ "${SWAP}" = "no" -a -n "${KERNEL_PATH}" ] ; then |
90 | 5dc61974 | Nikos Skalkotos | # Create two partitions: |
91 | 5dc61974 | Nikos Skalkotos | # 1 - Whole |
92 | 5dc61974 | Nikos Skalkotos | $sfdisk_cmd > /dev/null <<EOF |
93 | 5dc61974 | Nikos Skalkotos | ,,L |
94 | 5dc61974 | Nikos Skalkotos | EOF |
95 | 5dc61974 | Nikos Skalkotos | fi |
96 | 5dc61974 | Nikos Skalkotos | } |
97 | 5dc61974 | Nikos Skalkotos | |
98 | bb78ba49 | Nikos Skalkotos | linux_mkfs_disk0() { |
99 | 5dc61974 | Nikos Skalkotos | local mkfs="mkfs.${FILESYSTEM}" |
100 | 5dc61974 | Nikos Skalkotos | # Format / |
101 | 5dc61974 | Nikos Skalkotos | $mkfs -Fq -L / $root_dev > /dev/null |
102 | 5dc61974 | Nikos Skalkotos | # Format /boot |
103 | 5dc61974 | Nikos Skalkotos | if [ -n "${boot_dev}" ] ; then |
104 | 5dc61974 | Nikos Skalkotos | $mkfs -Fq -L /boot $boot_dev > /dev/null |
105 | 5dc61974 | Nikos Skalkotos | fi |
106 | 5dc61974 | Nikos Skalkotos | # Format swap |
107 | 5dc61974 | Nikos Skalkotos | if [ -n "${swap_dev}" ] ; then |
108 | 5dc61974 | Nikos Skalkotos | # Format swap |
109 | 5dc61974 | Nikos Skalkotos | mkswap -f $swap_dev > /dev/null |
110 | 5dc61974 | Nikos Skalkotos | fi |
111 | 5dc61974 | Nikos Skalkotos | # During reinstalls, ext4 needs a little time after a mkfs so add it here |
112 | 5dc61974 | Nikos Skalkotos | # and also run a sync to be sure. |
113 | 5dc61974 | Nikos Skalkotos | sync |
114 | 5dc61974 | Nikos Skalkotos | sleep 2 |
115 | 5dc61974 | Nikos Skalkotos | } |
116 | 5dc61974 | Nikos Skalkotos | |
117 | bb78ba49 | Nikos Skalkotos | linux_setup_fstab() { |
118 | 5dc61974 | Nikos Skalkotos | local target=$1 fs=${FILESYSTEM} |
119 | 5dc61974 | Nikos Skalkotos | get_os_type $target |
120 | 5dc61974 | Nikos Skalkotos | cat > $target/etc/fstab <<EOF |
121 | 5dc61974 | Nikos Skalkotos | # /etc/fstab: static file system information. |
122 | 5dc61974 | Nikos Skalkotos | # |
123 | 5dc61974 | Nikos Skalkotos | # <file system> <mount point> <type> <options> <dump> <pass> |
124 | 5dc61974 | Nikos Skalkotos | UUID=$root_uuid / $fs defaults 0 1 |
125 | 5dc61974 | Nikos Skalkotos | proc /proc proc defaults 0 0 |
126 | 5dc61974 | Nikos Skalkotos | EOF |
127 | 5dc61974 | Nikos Skalkotos | |
128 | 5dc61974 | Nikos Skalkotos | if [ -n "$boot_dev" -a -n "$boot_uuid" ] ; then |
129 | 5dc61974 | Nikos Skalkotos | cat >> $target/etc/fstab <<EOF |
130 | 5dc61974 | Nikos Skalkotos | UUID=$boot_uuid /boot $fs defaults 1 2 |
131 | 5dc61974 | Nikos Skalkotos | EOF |
132 | 5dc61974 | Nikos Skalkotos | fi |
133 | 5dc61974 | Nikos Skalkotos | |
134 | 5dc61974 | Nikos Skalkotos | if [ -n "$swap_dev" -a -n "$swap_uuid" ] ; then |
135 | 5dc61974 | Nikos Skalkotos | cat >> $target/etc/fstab <<EOF |
136 | 5dc61974 | Nikos Skalkotos | UUID=$swap_uuid swap swap defaults 0 0 |
137 | 5dc61974 | Nikos Skalkotos | EOF |
138 | 5dc61974 | Nikos Skalkotos | fi |
139 | 5dc61974 | Nikos Skalkotos | |
140 | 5dc61974 | Nikos Skalkotos | # OS Specific fstabs |
141 | 5dc61974 | Nikos Skalkotos | if [ "$OS_TYPE" = "redhat" ] ; then |
142 | 5dc61974 | Nikos Skalkotos | cat >> $target/etc/fstab <<EOF |
143 | 5dc61974 | Nikos Skalkotos | tmpfs /dev/shm tmpfs defaults 0 0 |
144 | 5dc61974 | Nikos Skalkotos | devpts /dev/pts devpts gid=5,mode=620 0 0 |
145 | 5dc61974 | Nikos Skalkotos | sysfs /sys sysfs defaults 0 0 |
146 | 5dc61974 | Nikos Skalkotos | EOF |
147 | 5dc61974 | Nikos Skalkotos | fi |
148 | 5dc61974 | Nikos Skalkotos | |
149 | 5dc61974 | Nikos Skalkotos | if [ "$OS_TYPE" = "gentoo" ] ; then |
150 | 5dc61974 | Nikos Skalkotos | cat >> $target/etc/fstab <<EOF |
151 | 5dc61974 | Nikos Skalkotos | shm /dev/shm tmpfs nodev,nosuid,noexec 0 0 |
152 | 5dc61974 | Nikos Skalkotos | EOF |
153 | 5dc61974 | Nikos Skalkotos | fi |
154 | 5dc61974 | Nikos Skalkotos | } |
155 | 5dc61974 | Nikos Skalkotos | |
156 | bb78ba49 | Nikos Skalkotos | linux_setup_console() { |
157 | 5dc61974 | Nikos Skalkotos | local target=$1 |
158 | 5dc61974 | Nikos Skalkotos | if [ -z "$target" ] ; then |
159 | 5dc61974 | Nikos Skalkotos | log_error "target not set for setup_console" |
160 | 5dc61974 | Nikos Skalkotos | exit 1 |
161 | 5dc61974 | Nikos Skalkotos | fi |
162 | 5dc61974 | Nikos Skalkotos | # Upstart is on this system, so do this instead |
163 | 5dc61974 | Nikos Skalkotos | if [ -e ${target}/etc/event.d/tty1 ] ; then |
164 | 5dc61974 | Nikos Skalkotos | cat ${target}/etc/event.d/tty1 | sed -re 's/tty1/ttyS0/' \ |
165 | 5dc61974 | Nikos Skalkotos | > ${target}/etc/event.d/ttyS0 |
166 | 5dc61974 | Nikos Skalkotos | return |
167 | 5dc61974 | Nikos Skalkotos | fi |
168 | 5dc61974 | Nikos Skalkotos | # upstart in karmic and newer |
169 | 5dc61974 | Nikos Skalkotos | if [ -e ${target}/etc/init/tty1.conf ] ; then |
170 | 5dc61974 | Nikos Skalkotos | cat ${target}/etc/init/tty1.conf | \ |
171 | 5dc61974 | Nikos Skalkotos | sed -re 's/^exec.*/exec \/sbin\/getty -L 115200 ttyS0 vt102/' \ |
172 | 5dc61974 | Nikos Skalkotos | > ${target}/etc/init/ttyS0.conf |
173 | 5dc61974 | Nikos Skalkotos | sed -ie 's/tty1/ttyS0/g' ${target}/etc/init/ttyS0.conf |
174 | 5dc61974 | Nikos Skalkotos | return |
175 | 5dc61974 | Nikos Skalkotos | fi |
176 | 5dc61974 | Nikos Skalkotos | get_os $target |
177 | 5dc61974 | Nikos Skalkotos | case $OPERATING_SYSTEM in |
178 | 5dc61974 | Nikos Skalkotos | gentoo) |
179 | 5dc61974 | Nikos Skalkotos | sed -i -e 's/.*ttyS0.*/s0:12345:respawn:\/sbin\/agetty 115200 ttyS0 vt100/' \ |
180 | 5dc61974 | Nikos Skalkotos | ${target}/etc/inittab |
181 | 5dc61974 | Nikos Skalkotos | ;; |
182 | 5dc61974 | Nikos Skalkotos | centos) |
183 | 5dc61974 | Nikos Skalkotos | echo "s0:12345:respawn:/sbin/agetty 115200 ttyS0 vt100" >> \ |
184 | 5dc61974 | Nikos Skalkotos | ${target}/etc/inittab |
185 | 5dc61974 | Nikos Skalkotos | ;; |
186 | 5dc61974 | Nikos Skalkotos | debian|ubuntu) |
187 | 5dc61974 | Nikos Skalkotos | sed -i -e 's/.*T0.*/T0:23:respawn:\/sbin\/getty -L ttyS0 115200 vt100/' \ |
188 | 5dc61974 | Nikos Skalkotos | ${target}/etc/inittab |
189 | 5dc61974 | Nikos Skalkotos | ;; |
190 | 5dc61974 | Nikos Skalkotos | *) |
191 | 5dc61974 | Nikos Skalkotos | echo "No support for your OS in instance-image, skipping..." |
192 | 5dc61974 | Nikos Skalkotos | ;; |
193 | 5dc61974 | Nikos Skalkotos | esac |
194 | 5dc61974 | Nikos Skalkotos | } |
195 | 5dc61974 | Nikos Skalkotos | |
196 | bb78ba49 | Nikos Skalkotos | linux_filesystem_check() { |
197 | 5dc61974 | Nikos Skalkotos | local target=$1 |
198 | 5dc61974 | Nikos Skalkotos | if [ -z "$target" ] ; then |
199 | 5dc61974 | Nikos Skalkotos | log_error "target not set for filesystem_check" |
200 | 5dc61974 | Nikos Skalkotos | exit 1 |
201 | 5dc61974 | Nikos Skalkotos | fi |
202 | 5dc61974 | Nikos Skalkotos | |
203 | 5dc61974 | Nikos Skalkotos | get_os $target |
204 | 5dc61974 | Nikos Skalkotos | |
205 | 5dc61974 | Nikos Skalkotos | if [ "${OPERATING_SYSTEM}" = "fedora" ]; then |
206 | 5dc61974 | Nikos Skalkotos | # we have to force a filesystem relabeling for SELinux after messing |
207 | 5dc61974 | Nikos Skalkotos | # around with the filesystem in fedora |
208 | 5dc61974 | Nikos Skalkotos | echo "Enforce an automatic relabeling in the initial boot process..." |
209 | 5dc61974 | Nikos Skalkotos | touch $target/.autorelabel |
210 | 5dc61974 | Nikos Skalkotos | fi |
211 | 5dc61974 | Nikos Skalkotos | } |