Magellan Linux

Annotation of /trunk/mlivecdbuild/profiles/alx-0_7_branch/prepare_custom

Parent Directory Parent Directory | Revision Log 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)
-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