Annotation of /trunk/mlivecdbuild/profiles/alx-0_7_branch/prepare_custom
Parent Directory | Revision Log
Revision 2664 -
(hide annotations)
(download)
Wed Jul 9 07:22:35 2014 UTC (9 years, 10 months ago) by niro
File size: 7668 byte(s)
Wed Jul 9 07:22:35 2014 UTC (9 years, 10 months ago) by niro
File size: 7668 byte(s)
-generate a netboot image too
1 | niro | 2119 | #!/bin/bash |
2 | |||
3 | niro | 2664 | updateconfig() |
4 | { | ||
5 | local variables="$@" | ||
6 | local value | ||
7 | local i | ||
8 | |||
9 | if [[ -z ${CONFIG} ]] | ||
10 | then | ||
11 | echo "You must define \$CONFIG varibale first!" | ||
12 | return 1 | ||
13 | fi | ||
14 | |||
15 | for i in ${variables} | ||
16 | do | ||
17 | value="$(eval echo \${NEW_${i}})" | ||
18 | if [[ ! -z $(grep "^${i}=" ${CONFIG}) ]] | ||
19 | then | ||
20 | echo "fixing ${i} -> ${value}" | ||
21 | sed -i "s|^\(${i}=\).*|\1\"${value}\"|" ${CONFIG} | ||
22 | else | ||
23 | echo "adding ${i}=${value}" | ||
24 | echo "${i}=\"${value}\"" >> ${CONFIG} | ||
25 | fi | ||
26 | done | ||
27 | } | ||
28 | |||
29 | ## | ||
30 | # create the install tarball | ||
31 | ## | ||
32 | create_install_tarball() | ||
33 | { | ||
34 | install -d ${LIVECDROOT}/install-temp | ||
35 | install -d ${CDISOROOT}/system | ||
36 | |||
37 | # use all settings from the global config, but the basesystem | ||
38 | # has to be the normal install basesystem not for livecds | ||
39 | mage-bootstrap \ | ||
40 | --root ${LIVECDROOT}/install-temp \ | ||
41 | --profile ${MAGE_PROFILE} \ | ||
42 | --magerc ${MAGERC} \ | ||
43 | --toolchain ${TOOLCHAIN} \ | ||
44 | --update-tarball \ | ||
45 | --basesystem basesystem || die "bootstrapping target system failed!" | ||
46 | |||
47 | # set an empty root password for the install system too | ||
48 | chroot ${LIVECDROOT}/install-temp passwd -d root | ||
49 | |||
50 | # add user station with empty password | ||
51 | chroot ${LIVECDROOT}/install-temp adduser -G users -h /home/station -s /bin/bash -D station | ||
52 | |||
53 | # install xinitrc | ||
54 | echo 'exec startfluxbox' > ${LIVECDROOT}/install-temp/home/station/.xinitrc | ||
55 | |||
56 | # fix hostname and hosts file | ||
57 | echo "alx-i486" > ${LIVECDROOT}/install-temp/etc/hostname | ||
58 | echo "127.0.0.1 localhost alx-i486.magellan-linux.de alx-i486" > ${LIVECDROOT}/install-temp/etc/hosts | ||
59 | cat >> ${LIVECDROOT}/install-temp/etc/hosts << EOF | ||
60 | ::1 ip6-localhost ip6-loopback | ||
61 | fe00::0 ip6-localnet | ||
62 | ff00::0 ip6-mcastprefix | ||
63 | ff02::1 ip6-allnodes | ||
64 | ff02::2 ip6-allrouters | ||
65 | ff02::3 ip6-allhosts | ||
66 | EOF | ||
67 | |||
68 | # create a default network interface config file | ||
69 | cat > ${LIVECDROOT}/install-temp/etc/conf.d/net.eth0 << EOF | ||
70 | ONBOOT="yes" | ||
71 | NETWORKING="dhcp" | ||
72 | EOF | ||
73 | |||
74 | # fix mage.rc and config.rc | ||
75 | NEW_SQL_USER="alx_install" | ||
76 | NEW_SQL_PASS="@lx" | ||
77 | NEW_SQL_HOST="128.20.41.110" | ||
78 | NEW_SQL_DB="alx_web" | ||
79 | NEW_SMB_UPDATE_HOST="//${NEW_SQL_HOST}/magetmp" | ||
80 | NEW_SMB_UPDATE_USER="${NEW_SQL_USER}" | ||
81 | NEW_SMB_UPDATE_PASS="${NEW_SQL_PASS}" | ||
82 | NEW_MAGE_MIRRORS="http://${NEW_SQL_HOST}/magellan/alx-070" | ||
83 | NEW_MAGE_RSYNC="rsync://${NEW_SQL_HOST}/mage-alx-070" | ||
84 | NEW_RSYNC="${NEW_MAGE_RSYNC}" | ||
85 | NEW_SMAGE2RSYNC="rsync://${NEW_SQL_HOST}/smage-alx-070" | ||
86 | NEW_MIRRORS="${NEW_MAGE_MIRRORS}" | ||
87 | NEW_MAGE_UNINSTALL_TIMEOUT="0" | ||
88 | CONFIG="${LIVECDROOT}/install-temp/etc/mage.rc" | ||
89 | updateconfig RSYNC SMAGE2RSYNC MIRRORS MAGE_UNINSTALL_TIMEOUT | ||
90 | CONFIG="${LIVECDROOT}/install-temp/etc/alxconfig-ng/config.rc" | ||
91 | updateconfig SQL_USER SQL_PASS SQL_HOST SQL_DB SMB_UPDATE_HOST SMB_UPDATE_USER SMB_UPDATE_PASS MAGE_MIRRORS MAGE_RSYNC | ||
92 | |||
93 | # create tarball | ||
94 | [[ -f ${CDISOROOT}/system/alx-i486.tar.bz2 ]] && rm ${CDISOROOT}/system/alx-i486.tar.bz2 | ||
95 | ( cd ${LIVECDROOT}/install-temp; tar cvjpf ${CDISOROOT}/system/alx-i486.tar.bz2 ./ | tee log) | ||
96 | |||
97 | # create images.conf | ||
98 | echo "CDIMAGENAME=alx-i486.tar.bz2" > ${CDISOROOT}/system/images.conf | ||
99 | echo "TOTALLINES=$(wc -l ${LIVECDROOT}/install-temp/log | cut -d' ' -f1)" >> ${CDISOROOT}/system/images.conf | ||
100 | |||
101 | create_netboot_image | ||
102 | |||
103 | # clean up | ||
104 | if [[ -d ${LIVECDROOT}/install-temp ]] | ||
105 | then | ||
106 | rm -rf ${LIVECDROOT}/install-temp | ||
107 | fi | ||
108 | } | ||
109 | |||
110 | ## | ||
111 | # create the network image | ||
112 | ## | ||
113 | create_netboot_image() | ||
114 | { | ||
115 | install -d ${CDISOROOT}/netboot | ||
116 | install -d ${LIVECDROOT}/network-temp | ||
117 | |||
118 | install -d ${LIVECDROOT}/network-temp/{LiveOS,mnt} || die | ||
119 | |||
120 | # get the actual size of the chroot | ||
121 | size=$(du -s ${LIVECDROOT}/install-temp | sed 's:^\(.*\)[[:space:]].*:\1:') | ||
122 | |||
123 | # generate a ext3fs file for devicemapper | ||
124 | dd if=/dev/zero of=${LIVECDROOT}/network-temp/LiveOS/ext3fs.img bs=1024 count=$(( ${size} + 10 )) || die | ||
125 | # create a filesystem | ||
126 | mkfs.ext3 -L "_${CDID}_EXT3" -m 1 -b 1024 -F ${LIVECDROOT}/network-temp/LiveOS/ext3fs.img || die | ||
127 | # set mount_counts and check_intervals to 0 | ||
128 | # set dir_index top, to speed up thing with hashed b-trees | ||
129 | # allow acls too | ||
130 | tune2fs -c0 -i0 -Odir_index -ouser_xattr,acl ${LIVECDROOT}/network-temp/LiveOS/ext3fs.img || die | ||
131 | |||
132 | # losetup the device | ||
133 | loopdev=$(losetup -f) | ||
134 | [[ -z ${loopdev} ]] && die "No unused loopdev found. Maybe you want 'modprobe loop'?" | ||
135 | |||
136 | # mount the image | ||
137 | losetup ${loopdev} ${LIVECDROOT}/network-temp/LiveOS/ext3fs.img || die | ||
138 | mount ${loopdev} ${LIVECDROOT}/network-temp/mnt || die | ||
139 | |||
140 | # copy everything to the image file and preserve permissions | ||
141 | ( cd ${LIVECDROOT}/install-temp && tar cpf - . ) | ( cd ${LIVECDROOT}/network-temp/mnt && tar xvpf - ) | ||
142 | sleep 3 | ||
143 | |||
144 | # now umount everything and create the squashfs image | ||
145 | umount ${LIVECDROOT}/network-temp/mnt || die | ||
146 | losetup -d ${loopdev} || die | ||
147 | # remove mount to not ending up in the squashfs image | ||
148 | if [[ -d ${LIVECDROOT}/network-temp/mnt ]] | ||
149 | then | ||
150 | rm -r ${LIVECDROOT}/network-temp/mnt || die | ||
151 | fi | ||
152 | mksquashfs ${LIVECDROOT}/network-temp ${CDISOROOT}/netboot/squashfs.img || die | ||
153 | |||
154 | # copy kernel and create initramfs to isoroot/netboot | ||
155 | install -d ${CDISOROOT}/netboot || die | ||
156 | # kernel | ||
157 | kimg="$(find ${CDCHROOTDIR}/boot -name kernel-\* -printf '%f\n')" | ||
158 | install ${CDCHROOTDIR}/boot/${kimg} ${CDISOROOT}/netboot/${CDKERNELNAME} || die | ||
159 | # initrd | ||
160 | install -d ${CDCHROOTDIR}/etc/dracut.conf.d || die | ||
161 | echo 'add_dracutmodules+=" livenet busybox"' > ${CDCHROOTDIR}/etc/dracut.conf.d/03-netboot.conf || die | ||
162 | echo 'omit_dracutmodules+=" systemd plymouth mcored"' >> ${CDCHROOTDIR}/etc/dracut.conf.d/03-netboot.conf || die | ||
163 | # install dracut-dev package to have all modules | ||
164 | custom_packages install dracut-dev curl curl-dev || die | ||
165 | ## mlivecdbuild function | ||
166 | generate_initrd | ||
167 | mv ${CDISOROOT}/isolinux/initrd.gz ${CDISOROOT}/netboot/ || die | ||
168 | custom_packages uninstall dracut-dev curl curl-dev || die | ||
169 | if [ -e ${CDCHROOTDIR}/etc/dracut.conf.d/03-netboot.conf ] | ||
170 | then | ||
171 | rm ${CDCHROOTDIR}/etc/dracut.conf.d/03-netboot.conf | ||
172 | fi | ||
173 | |||
174 | # final cleanup | ||
175 | if [[ -d ${LIVECDROOT}/network-temp ]] | ||
176 | then | ||
177 | rm -r ${LIVECDROOT}/network-temp || die | ||
178 | fi | ||
179 | } | ||
180 | |||
181 | niro | 2119 | # set an empty root password |
182 | chroot ${CDCHROOTDIR} passwd -d root | ||
183 | |||
184 | # install a custom boot-duration matching this livecd | ||
185 | install -d ${CDCHROOTDIR}/var/lib/plymouth || die | ||
186 | install -m 0644 $(get_profile boot-duration.livecd) ${CDCHROOTDIR}/var/lib/plymouth/boot-duration || die | ||
187 | |||
188 | niro | 2121 | # install mnt-cdrom mount service, should be provided by alxinstall-ng |
189 | niro | 2661 | #install -m 0644 $(get_profile mnt-cdrom.mount) ${CDCHROOTDIR}/usr/lib/systemd/system/mnt-cdrom.mount || die |
190 | #ln -snf ../mnt-cdrom.mount ${CDCHROOTDIR}/usr/lib/systemd/system/local-fs.target.wants/mnt-cdrom.mount || die | ||
191 | niro | 2121 | |
192 | niro | 2119 | # disable splash X11 vt change and set splash to be always verbose |
193 | #if [[ -f ${CDCHROOTDIR}/etc/splash/splash.conf ]] | ||
194 | #then | ||
195 | # sed -i -e 's:^\(SPLASH_X11_TTY=.*\):#\1:' \ | ||
196 | # -e 's:^\(SPLASH_MODE=\).*:\1\"verbose\":' \ | ||
197 | # ${CDCHROOTDIR}/etc/splash/splash.conf | ||
198 | #fi | ||
199 | |||
200 | niro | 2661 | # setup de keymap and locales |
201 | if [ -f ${CDCHROOTDIR}/etc/vconsole.conf ] | ||
202 | then | ||
203 | niro | 2663 | cat > ${CDCHROOTDIR}/etc/vconsole.conf << EOF || die |
204 | niro | 2661 | KEYMAP=de |
205 | KEYMAP_TOGGLE= | ||
206 | FONT=lat9w-16 | ||
207 | FONT_MAP=8859-1_to_uni | ||
208 | FONT_UNIMAP= | ||
209 | EOF | ||
210 | fi | ||
211 | if [ -f ${CDCHROOTDIR}/etc/locale.conf ] | ||
212 | then | ||
213 | niro | 2662 | sed -i "s:^\(LANG=\).*:\1\"de_DE.utf8\":" ${CDCHROOTDIR}/etc/locale.conf || die |
214 | niro | 2661 | fi |
215 | |||
216 | niro | 2119 | # stop here if the user don't want to create the install tarball |
217 | niro | 2664 | [[ -n ${SKIP_CREATE_INSTALL_TARBALL} ]] || create_install_tarball |
218 | niro | 2119 | |
219 | # install usb-install script | ||
220 | [ ! -d ${CDISOROOT}/usb-install ] && mkdir ${CDISOROOT}/usb-install | ||
221 | [ -f $(get_profile usb-install/usb-install.cmd) ] && cp $(get_profile usb-install)/usb-install.cmd ${CDISOROOT}/usb-install | ||
222 | [ -f $(get_profile usb-install/syslinux.exe) ] && cp $(get_profile usb-install)/syslinux.exe ${CDISOROOT}/usb-install | ||
223 | [ -f $(get_profile usb-install/syslinux.cfg) ] && cp $(get_profile usb-install)/syslinux.cfg ${CDISOROOT}/usb-install |