success-story: setup.rootfs

File setup.rootfs, 3.7 kB (added by tomboy64, 3 years ago)

rootfs build script

Line 
1#!/bin/bash
2
3NEWROOTFS="./BareGenMoko"
4TINDERBOX="./TinderGenMoko"
5ADDPKGS="dhcpcd dropbear \
6          iptables \
7          libusb \
8          mtd-utils \
9          sqlite \
10          usbutils \
11          vim \
12          wireless-tools wpa_supplicant"
13EMRGCMD="emerge-armv4tl-softfloat-linux-gnueabi"
14LOG="log.`echo ${0} | sed -e 's/\.\///'`"
15DEFAULT_SERVICES="dropbear hald"
16BOOT_SERVICES="net.eth0 net.usb0"
17SYS_SERVICES="udev sysfs"
18 
19
20echo "Pruning ${NEWROOTFS}"
21rm -rfv ${NEWROOTFS} > ${LOG}
22 
23echo "Setting up basic directories"
24for i in boot etc dev proc root sys media/card media/card2; do
25  mkdir -vp ${NEWROOTFS}/${i} >> ${LOG};
26done;
27mknod ${NEWROOTFS}/dev/null c 1 3
28mknod ${NEWROOTFS}/dev/console c 5 1
29 
30echo "Setting up basic configuration"
31for i in $( ls ${TINDERBOX}/etc/ | grep -iv portage ); do
32  cp -vR ${TINDERBOX}/etc/${i} ${NEWROOTFS}/etc/ >> ${LOG};
33done;
34 
35echo "Setting up portage configuration"
36cp -LRv ${TINDERBOX}/etc/portage ${NEWROOTFS}/etc/ >> ${LOG}
37sed -i -e 's/\(EMERGE_DEFAULT_OPTS=.*\)"$/\1 --getbinpkg"/' \
38       -e 's/buildpkg//' \
39       -e 's/INSTALL_MASK="/INSTALL_MASK="*.h /' \
40         ${NEWROOTFS}/etc/make.conf
41cp -Lv /etc/resolv.conf ${NEWROOTFS}/etc/ >> ${LOG}
42 
43echo "Updating remote binpkgs"
44./sync-binpkgs >> ${LOG}
45echo "Installing bare @system"
46ROOT=${NEWROOTFS} USE="-X" ${EMRGCMD} -vg vim system >> ${LOG}
47echo "adding my packages"
48ROOT=${NEWROOTFS} USE="-X" ${EMRGCMD} -vg --noreplace ${ADDPKGS} >> ${LOG}
49
50echo "Fixing GCC"
51#for i in $( find /usr/lib* -name libgcc_s*.so* | grep armv4tl ); do
52#  if [ -d `dirname ${i}` ] ; then
53#    mkdir -p `dirname ${i}`
54#  fi
55#  echo "  "`echo ${i} | sed -e 's/.*\///'`;
56#  cp -v ${i} ${NEWROOTFS}/`echo ${i} | sed -e 's/lib64/lib/'`;
57#done;
58#for i in $( find /usr/lib* -name libstdc++*.so* | grep armv4tl ); do
59#  if [ -d `dirname ${i}` ] ; then
60#    mkdir -p `dirname ${i}`
61#  fi
62#  echo "  "`echo ${i} | sed -e 's/.*\///'`;
63#  cp -v ${i} ${NEWROOTFS}/`echo ${i} | sed -e 's/lib64/lib/'`;
64#done;
65cp -v /usr/lib64/gcc/armv4tl-softfloat-linux-gnueabi/4.3.3/libgcc_s.so.1 \
66  ${NEWROOTFS}/usr/lib64/gcc/armv4tl-softfloat-linux-gnueabi/4.3.3/libgcc_s.so.1
67ln -s ./libgcc_s.so.1 \
68  ${NEWROOTFS}/usr/lib64/gcc/armv4tl-softfloat-linux-gnueabi/4.3.3/libgcc_s.so
69cp -v /usr/lib64/gcc/armv4tl-softfloat-linux-gnueabi/4.3.3/libstdc++.so.6.0.10 \
70  ${NEWROOTFS}/usr/lib64/gcc/armv4tl-softfloat-linux-gnueabi/4.3.3/libstdc++.so.6.0.10
71ln -s ./libstdc++.so.6.0.10 \
72  ${NEWROOTFS}/usr/lib64/gcc/armv4tl-softfloat-linux-gnueabi/4.3.3/libstdc++.so.6
73ln -s ./libstdc++.so.6.0.10 \
74  ${NEWROOTFS}/usr/lib64/gcc/armv4tl-softfloat-linux-gnueabi/4.3.3/libstdc++.so
75
76echo "Installing base applications"
77# hack(s) to install sturdy app(s)
78EXTRA_ECONF="--enable-unique" ROOT=${NEWROOTFS} ${EMRGCMD} -v eix >> ${LOG}
79 
80echo "Installing custom files"
81cp -Rv dingbat_config/* ${NEWROOTFS}/ >> ${LOG}
82cp -Lv /etc/wpa_supplicant/wpa_supplicant.conf ${NEWROOTFS}/etc/wpa_supplicant/ >> ${LOG}
83 
84echo "Installing services"
85ln -s ./net.lo ${NEWROOTFS}/etc/init.d/net.eth0
86ln -s ./net.lo ${NEWROOTFS}/etc/init.d/net.usb0
87for i in ${DEFAULT_SERVICES}; do
88  ln -s /etc/init.d/${i} ${NEWROOTFS}/etc/runlevels/default/;
89done;
90for i in ${BOOT_SERVICES}; do
91  ln -s /etc/init.d/${i} ${NEWROOTFS}/etc/runlevels/boot/;
92done;
93for i in ${SYS_SERVICES}; do
94  ln -s /etc/init.d/${i} ${NEWROOTFS}/etc/runlevels/sysinit/;
95done;
96 
97echo "Finding newest kernel"
98# FIXME - for now we just dump what we find
99echo "Loading modules"
100tar -xzpvf AndyTracking/GTA02/modules-GTA02_andy-tracking-*.tar.gz -C ${NEWROOTFS}/ >> ${LOG}
101 
102echo "uncompressed size: `du -sh ${NEWROOTFS}/`"
103 
104echo "Creating image"
105mkfs.jffs2 -r ${NEWROOTFS}/ --pad=0x700000 -o BareGenMoko.jffs2 -e 0x20000 -n
106echo "compressed size: `du -b BareGenMoko.jffs2` Bytes"
107echo "Done."