2 # Copyright (c) 2006 Jean Milanez Melo <jmelo@freebsdbrasil.com.br>
4 # Patrick Tracanelli <eksffa@freebsdbrasil.com.br>
8 CURRENTDIR=/usr/src/tools/tools/tinybsd
9 WORKDIR=/usr/obj/tinybsdbuild
11 DEFINSTARGS="-o 0 -g 0 -m 555"
22 Usage: $0 <mediasize in sectors> <heads according to firmware>
23 <sectors according to firmware> <conf> [<tinybsd image name>]
25 Example: $0 62592 4 32
29 $0 62592 4 32 wireless
31 Run diskinfo(8) -v against your CF device to get correct information
40 echo "${TS} Alternative conf name not set; defaulting to 'default'"
48 echo "${TS} Alternative image name not set; defaulting to 'tinybsd.bin'"
53 chflags -R noschg ${WORKDIR}
54 echo "${TS} Removing "${WORKDIR}
56 echo "${TS} Removing Build Kernel Directory"
57 rm -rf /usr/obj/usr/src/sys/${KERNCONF}
69 echo "${TS} Creating directory hierarchy... "
70 mtree -deU -f /etc/mtree/BSD.root.dist -p ${WORKDIR}
71 mtree -deU -f /etc/mtree/BSD.usr.dist -p ${WORKDIR}/usr
72 mtree -deU -f /etc/mtree/BSD.var.dist -p ${WORKDIR}/var
78 for file in `cat ${CURRENTDIR}/conf/${CONF}/tinybsd.basefiles | grep -v "#" | \
79 cut -f1 -d":" | sort | uniq` ; do
80 echo "${TS} Copying "/${file}" to "${WORKDIR}/${file}
81 cp -fp /${file} ${WORKDIR}/${file} ;
87 echo "${TS} Building customized tiny beastie kernel... "
88 cp -p ${CURRENTDIR}/conf/${CONF}/${KERNCONF} /usr/src/sys/i386/conf
90 make buildkernel KERNCONF=${KERNCONF} || exit 1
91 gzip -9 /usr/obj/usr/src/sys/${KERNCONF}/kernel
92 install ${DEFINSTARGS} /usr/obj/usr/src/sys/${KERNCONF}/kernel.gz ${WORKDIR}/boot/kernel/
93 install ${DEFINSTARGS} \
94 /usr/obj/usr/src/sys/${KERNCONF}/modules/usr/src/sys/modules/acpi/acpi/acpi.ko \
95 ${WORKDIR}/boot/kernel
96 install -o 0 -g 0 -m 444 /sys/i386/conf/GENERIC.hints ${WORKDIR}/boot/device.hints
102 TDEPFILE="`mktemp -t deps`"
103 TDEPFILES="`mktemp -t depsymlnk`"
105 cd ${CURRENTDIR}/conf/${CONF}
106 for file in `cat tinybsd.basefiles | grep -v "#" | cut -f1 -d":"`; do
107 ldd -f "%p\n" /${file} >> ${TDEPFILE} ; # don't worry on progs been "not dynamic"
110 for libdeplib in `cat ${TDEPFILE} | sort | uniq`; do
111 ldd -f "%p\n" /${libdeplib} >> ${TDEPFILE} ;
114 for pamdep in `ls -1 /usr/lib/pam*`; do
115 echo $pamdep >> ${TDEPFILE} ;
116 ldd -f "%p\n" /${pamdep} >> ${TDEPFILE} ;
119 for lib in `cat ${TDEPFILE} | sort | uniq`; do
120 echo "${TS} Copying "${lib}" to "${WORKDIR}${lib}
121 cp -fp ${lib} ${WORKDIR}${lib} ;
124 for depsymlink in `cat ${TDEPFILE}`; do
125 echo "${TS} Checking if ${depsymlink} is a symbolic link"
126 /bin/ls -l $depsymlink | grep "\->" | awk '{print $11":"$9}' >> ${TDEPFILES}
129 for i in `cat ${TDEPFILES}`; do
130 SOURCE_FILE=`echo $i | awk -F ":" '{print $1}'`
131 TARGET_FILE=`echo $i | awk -F ":" '{print $2}'`
133 echo "${TS} Unlinking ${WORKDIR}${TARGET_FILE}"
134 chroot ${WORKDIR} /bin/rm -f ${TARGET_FILE}
136 echo "${TS} Symlinking ${SOURCE_FILE} to ${TARGET_FILE}"
137 chroot ${WORKDIR} /bin/ln -s ${SOURCE_FILE} ${TARGET_FILE}
140 echo -n "${TS} Unlinking "
141 rm -fv ${TDEPFILE} ${TDEPFILES}
147 cd /usr/src/etc/sendmail/
148 make freebsd.cf freebsd.submit.cf
151 mkdir -p ${WORKDIR}/var/named/etc/namedb
152 make distribution DESTDIR=${WORKDIR}
155 personal_directories() {
156 echo "${TS} Copying your custom configuration on conf/ ..."
157 for custom in `find ${CURRENTDIR}/conf/${CONF}/ -type d -depth 1`; do
158 cp -Rp ${custom}/* ${WORKDIR}/${custom#${CURRENTDIR}/conf/${CONF}/}/
164 for i in `cat tinybsd.basefiles | grep -v "#" | grep ":"`; do
165 SOURCE_FILE=`echo $i | awk -F ":" {'print $1'}`
166 TARGET_FILE=`echo $i | awk -F ":" {'print $2'}`
167 chroot ${WORKDIR} /bin/ln -vs /${SOURCE_FILE} ${TARGET_FILE}
176 VNODEFILE=`mktemp -t tinybsd`
177 IMGMNT=`mktemp -d -t tinybsd`
179 dd if=/dev/zero of=${VNODEFILE} count=${SECTUNIT}
181 MD=`mdconfig -a -t vnode -f ${VNODEFILE} -x ${SECTRACK} -y ${TRACKCYL}`
183 diskinfo -v /dev/${MD}
188 cp -p /boot/boot0 ${WORKDIR}/boot/boot0
189 bsdlabel -w -B /dev/${MD}
190 newfs -O2 -U /dev/${MD}a
192 mount /dev/${MD}a ${IMGMNT}
194 ( cd ${WORKDIR} && find . -print | cpio -dump ${IMGMNT} ) || true
199 dd if=/dev/${MD} of=${CURRENTDIR}/${IMG} bs=64k
206 ##########################