Contents of /trunk/mlivecdbuild/profiles/alx-0_7_branch/prepare_custom
Parent Directory | Revision Log
Revision 2873 -
(show annotations)
(download)
Fri Jul 17 11:43:55 2015 UTC (8 years, 9 months ago) by niro
File size: 8703 byte(s)
Fri Jul 17 11:43:55 2015 UTC (8 years, 9 months ago) by niro
File size: 8703 byte(s)
-fixed whitespaces
1 | #!/bin/bash |
2 | |
3 | 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, bootloader 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 | # bootloader |
174 | install -d ${CDISOROOT}/netboot/pxelinux.cfg |
175 | [ -f $(get_profile netboot/pxelinux.0) ] && install -m0644 $(get_profile netboot/pxelinux.0) ${CDISOROOT}/netboot |
176 | [ -f $(get_profile netboot/pxelinux.cfg/default) ] && install -m0644 $(get_profile netboot/pxelinux.cfg/default) ${CDISOROOT}/netboot/pxelinux.cfg |
177 | [ -f $(get_profile netboot/pxelinux.cfg/boot.cat) ] && install -m0644 $(get_profile netboot/pxelinux.cfg/boot.cat) ${CDISOROOT}/netboot/pxelinux.cfg |
178 | [ -f $(get_profile boot.lss) ] && install -m0644 $(get_profile boot.lss) ${CDISOROOT}/netboot/pxelinux.cfg |
179 | [ -f $(get_profile boot.msg) ] && install -m0644 $(get_profile boot.msg) ${CDISOROOT}/netboot/pxelinux.cfg |
180 | [ -f $(get_profile debug.msg) ] && install -m0644 $(get_profile debug.msg) ${CDISOROOT}/netboot/pxelinux.cfg |
181 | [ -f $(get_profile help.msg) ] && install -m0644 $(get_profile help.msg) ${CDISOROOT}/netboot/pxelinux.cfg |
182 | [ -f $(get_profile index.msg) ] && install -m0644 $(get_profile index.msg) ${CDISOROOT}/netboot/pxelinux.cfg |
183 | |
184 | # final cleanup |
185 | if [[ -d ${LIVECDROOT}/network-temp ]] |
186 | then |
187 | rm -r ${LIVECDROOT}/network-temp || die |
188 | fi |
189 | } |
190 | |
191 | # set an empty root password |
192 | chroot ${CDCHROOTDIR} passwd -d root |
193 | |
194 | # install a custom boot-duration matching this livecd |
195 | install -d ${CDCHROOTDIR}/var/lib/plymouth || die |
196 | install -m 0644 $(get_profile boot-duration.livecd) ${CDCHROOTDIR}/var/lib/plymouth/boot-duration || die |
197 | |
198 | # install mnt-cdrom mount service, should be provided by alxinstall-ng |
199 | #install -m 0644 $(get_profile mnt-cdrom.mount) ${CDCHROOTDIR}/usr/lib/systemd/system/mnt-cdrom.mount || die |
200 | #ln -snf ../mnt-cdrom.mount ${CDCHROOTDIR}/usr/lib/systemd/system/local-fs.target.wants/mnt-cdrom.mount || die |
201 | |
202 | # disable splash X11 vt change and set splash to be always verbose |
203 | #if [[ -f ${CDCHROOTDIR}/etc/splash/splash.conf ]] |
204 | #then |
205 | # sed -i -e 's:^\(SPLASH_X11_TTY=.*\):#\1:' \ |
206 | # -e 's:^\(SPLASH_MODE=\).*:\1\"verbose\":' \ |
207 | # ${CDCHROOTDIR}/etc/splash/splash.conf |
208 | #fi |
209 | |
210 | # setup de keymap and locales |
211 | if [ -f ${CDCHROOTDIR}/etc/vconsole.conf ] |
212 | then |
213 | cat > ${CDCHROOTDIR}/etc/vconsole.conf << EOF || die |
214 | KEYMAP=de |
215 | KEYMAP_TOGGLE= |
216 | FONT=lat9w-16 |
217 | FONT_MAP=8859-1_to_uni |
218 | FONT_UNIMAP= |
219 | EOF |
220 | fi |
221 | if [ -f ${CDCHROOTDIR}/etc/locale.conf ] |
222 | then |
223 | sed -i "s:^\(LANG=\).*:\1\"de_DE.utf8\":" ${CDCHROOTDIR}/etc/locale.conf || die |
224 | fi |
225 | |
226 | # stop here if the user don't want to create the install tarball |
227 | [[ -n ${SKIP_CREATE_INSTALL_TARBALL} ]] || create_install_tarball |
228 | |
229 | # install usb-install script |
230 | [ ! -d ${CDISOROOT}/usb-install ] && mkdir ${CDISOROOT}/usb-install |
231 | [ -f $(get_profile usb-install/usb-install.cmd) ] && cp $(get_profile usb-install)/usb-install.cmd ${CDISOROOT}/usb-install |
232 | [ -f $(get_profile usb-install/syslinux.exe) ] && cp $(get_profile usb-install)/syslinux.exe ${CDISOROOT}/usb-install |
233 | [ -f $(get_profile usb-install/syslinux.cfg) ] && cp $(get_profile usb-install)/syslinux.cfg ${CDISOROOT}/usb-install |