Annotation of elwix/build_fs.sh, revision 1.2
1.2 ! misho 1: #!/bin/sh
! 2: #
! 3: # ELWIX Build script for ELWIX CompactFlash image
! 4: #
! 5: # (C) AITNET ltd - Sofia/Bulgaria <office@aitnet.org>
! 6: # by Michael Pounov <misho@elwix.org>
! 7: #
! 8: # $Id: build_fs.sh,v 1.1.2.6 2011/09/25 16:53:40 misho Exp $
! 9: #
! 10:
! 11: [ -r ./config/rc.elwix ] && . ./config/rc.elwix
! 12: if [ X"${ELWIX_IS_CONFIGURED}" != X"YES" ]; then
! 13: echo
! 14: echo "ELWIX project is not configured !?!"
! 15: echo
! 16: exit 1
! 17: fi
! 18:
! 19: if [ ! -d ${BSDSRC} ]; then
! 20: echo
! 21: echo "ELWIX project is not configured - missing BSD sources !?!"
! 22: echo
! 23: exit 1
! 24: fi
! 25:
! 26: if [ "${USER}" != "root" ]; then
! 27: echo
! 28: echo "ELWIX project is not configured - FS must build under root !?!"
! 29: echo
! 30: exit 1
! 31: fi
! 32:
! 33: clean_fsdir()
! 34: {
! 35: echo "+++ Clean ELWIX FS ..."
! 36: rm -rf ${FS}
! 37:
! 38: echo "+++ Clean ELWIX FS release ..."
! 39: rm -rf ${REL}/${OS}
! 40: }
! 41:
! 42: build_fsdir()
! 43: {
! 44: echo "+++ Build ELWIX FS directory ..."
! 45: mkdir -p ${FS}
! 46:
! 47: cd ${FS}
! 48:
! 49: # altroot
! 50: install -d altroot;
! 51: # altroot/var
! 52: install -d altroot/var;
! 53: install -d altroot/var/account;
! 54: install -d altroot/var/at;
! 55: install -d altroot/var/at/jobs;
! 56: install -d altroot/var/at/spool;
! 57: install -d -g authpf -m 0770 altroot/var/authpf;
! 58: install -d -m 0750 altroot/var/cron;
! 59: install -d -m 0700 altroot/var/cron/tabs;
! 60: install -d altroot/var/db;
! 61: install -d -m 0555 altroot/var/empty;
! 62: install -d altroot/var/log;
! 63: install -d -o www -g www altroot/var/log/lighttpd;
! 64: install -d -o quagga -g quagga altroot/var/log/quagga;
! 65: install -d altroot/var/named;
! 66: install -d altroot/var/run;
! 67: install -d -o www -g www altroot/var/run/lighttpd;
! 68: install -d -o bind -g bind altroot/var/run/named;
! 69: install -d -o quagga -g quagga altroot/var/run/quagga;
! 70: install -d altroot/var/spool;
! 71: install -d -o uucp -g dialer -m 0775 altroot/var/spool/lock;
! 72: install -d -g daemon altroot/var/spool/lpd;
! 73: install -d -g daemon altroot/var/spool/output;
! 74: install -d -g daemon altroot/var/spool/output/lpd;
! 75: # boot
! 76: install -d boot;
! 77: # cf
! 78: install -d cf;
! 79: # etc
! 80: install -d etc;
! 81: # exports
! 82: install -d exports;
! 83: # home
! 84: install -d home;
! 85: # root
! 86: install -d -m 0700 root;
! 87: # local
! 88: install -d local;
! 89: # tftpboot
! 90: install -d tftpboot;
! 91:
! 92: chown -hR root:wheel .
! 93: cd -
! 94: }
! 95:
! 96: mkboot()
! 97: {
! 98: echo "+++ Build ELWIX FS boot directory ..."
! 99: InstallDir ${WORLD}/boot $1/boot
! 100:
! 101: install -m 644 ${CFGDIR}/boot/boot.config $1;
! 102: install -m 644 ${CFGDIR}/boot/beastie.4th $1/boot;
! 103: install -m 644 ${CFGDIR}/boot/brand.4th $1/boot;
! 104: install -m 644 ${CFGDIR}/boot/menu.4th $1/boot;
! 105:
! 106: if [ -r ${CFGDIR}/boot/loader_${TARGET_ARCH}.conf ]; then
! 107: install -m 644 ${CFGDIR}/boot/loader_${TARGET_ARCH}.conf $1/boot/loader.conf;
! 108: else
! 109: echo;
! 110: echo "Can't find right loader.conf for TARGET_ARCH=${TARGET_ARCH} ... loader.conf not installed!";
! 111: echo;
! 112: fi;
! 113: }
! 114:
! 115: mkvar()
! 116: {
! 117: echo "+++ Build ELWIX FS var directory ..."
! 118: ln -s /tmp $1/altroot/var/tmp
! 119:
! 120: touch $1/altroot/var/log/elwix
! 121: touch $1/altroot/var/log/lastlog
! 122: touch $1/altroot/var/log/wifi.log
! 123: touch $1/altroot/var/log/wtmp
! 124: touch $1/altroot/var/run/utmp
! 125: touch $1/altroot/var/account/acct
! 126:
! 127: touch $1/altroot/var/log/auth.log
! 128: touch $1/altroot/var/log/cron
! 129: touch $1/altroot/var/log/console.log
! 130: touch $1/altroot/var/log/debug.log
! 131: touch $1/altroot/var/log/lpd-errs
! 132: touch $1/altroot/var/log/maillog
! 133: touch $1/altroot/var/log/messages
! 134: touch $1/altroot/var/log/security
! 135: touch $1/altroot/var/log/xferlog
! 136: touch $1/altroot/var/log/ppp.log
! 137: chgrp network $1/altroot/var/log/ppp.log
! 138:
! 139: InstallDir ${WORLD}/var/named $1/altroot/var/named
! 140: InstallList ${ELWIX_BSDSRC} ${BSDSRC} $1/altroot/var/named
! 141: install -v ${FS_ETC}/resolv.safe $1/altroot/var/run/resolv.conf
! 142: }
! 143:
! 144: create_etc_motd()
! 145: {
! 146: ELWIX_VER="ELWIX-${VERSION}_${TARGET_ARCH}";
! 147: ELWIX_HDR_MOTD="${ELWIX_VER} :: Build date ${BUILD_DATE}";
! 148:
! 149: awk -v fo="${1:-motd}" 'BEGIN { print "'"${ELWIX_HDR_MOTD}"'" > fo; } { print $0 >> fo; }' \
! 150: ${CFGDIR}/elwix_signature.txt;
! 151: }
! 152:
! 153: create_etc_fstab()
! 154: {
! 155: cat >$1 <<_EOF
! 156: # Automatic generated fstab for ELWIX at ${BUILD_DATE}
! 157: #
! 158: /dev/ufs/elwix /elwix ufs ro 0 1
! 159: md3 /tmp mfs rw,-s8m,-oasync,-S 0 0
! 160: md4 /var mfs rw,-s16m,-S 0 0
! 161: _EOF
! 162: }
! 163:
! 164: mketc()
! 165: {
! 166: echo "+++ Build ELWIX FS etc directory ..."
! 167: InstallDir ${FS_ETC} $1/etc
! 168:
! 169: chown -R root:wheel $1/etc;
! 170:
! 171: chmod 0600 $1/etc/opieaccess;
! 172: chmod 0600 $1/etc/opiekeys;
! 173:
! 174: chmod 0600 $1/etc/master.passwd;
! 175: chmod 0600 $1/etc/spwd.db;
! 176: chmod 0600 $1/etc/ssh/ssh_host_dsa_key;
! 177: chmod 0600 $1/etc/ssh/ssh_host_key;
! 178: chmod 0600 $1/etc/ssh/ssh_host_rsa_key;
! 179:
! 180: chmod 0440 $1/etc/sudoers;
! 181:
! 182: chgrp www $1/etc/config.xml;
! 183: chmod 0660 $1/etc/config.xml;
! 184:
! 185: ln -sf /etc/rc.s $1/etc/rc.S
! 186:
! 187: ln -sf /usr/share/zoneinfo/${TIMEZONE} $1/etc/localtime;
! 188: ln -sf /usr/share/misc/termcap $1/etc/termcap;
! 189:
! 190: ln -sf /var/named/etc/namedb $1/etc/namedb;
! 191: ln -sf /var/run/resolv.conf $1/etc/resolv.conf;
! 192:
! 193: echo ${TARGET_ARCH} >$1/etc/platform;
! 194:
! 195: create_etc_motd $1/etc/motd;
! 196: create_etc_fstab $1/etc/fstab;
! 197: }
! 198:
! 199: mkbackup()
! 200: {
! 201: echo "+++ Build ELWIX FS backup factory default directory ..."
! 202: mkdir -p $1/altroot/backup
! 203:
! 204: cd $1
! 205: tar -czf altroot/backup/.etc.tgz etc
! 206: cp -p etc/config.xml altroot/backup
! 207: cd altroot
! 208: tar -czf backup/.var.tgz var
! 209: }
! 210:
! 211: mkhome()
! 212: {
! 213: echo "+++ Build ELWIX FS root home directory ..."
! 214: install -d $1/root/.ssh
! 215: [ -r ${CFGDIR}/root.skel/ssh/authorized_keys2 ] && \
! 216: install -v ${CFGDIR}/root.skel/ssh/authorized_keys2 $1/root/.ssh;
! 217:
! 218: install -v ${CFGDIR}/root.skel/cshrc $1/root/.cshrc;
! 219: install -v ${CFGDIR}/root.skel/login $1/root/.login;
! 220: install -v ${CFGDIR}/root.skel/logout $1/root/.logout;
! 221: install -v ${CFGDIR}/root.skel/profile $1/root/.profile;
! 222: install -v ${CFGDIR}/root.skel/vimrc $1/root/.vimrc;
! 223: }
! 224:
! 225: install_fsdir()
! 226: {
! 227: echo "+++ Install ELWIX FS in bundle OS install file ..."
! 228:
! 229: install -v ${REL}/${ROOTFS_KERN} ${FS}/boot/kernel
! 230:
! 231: install -v ${REL}/${ROMFS_IMG} ${FS}/elwix-firmware-${VERSION}_${TARGET_ARCH}
! 232: ln -s /elwix/elwix-firmware-${VERSION}_${TARGET_ARCH} ${FS}/${ROMFS_IMG}
! 233:
! 234: cd $FS
! 235: tar -czvf ${REL}/${OS} .
! 236: }
! 237:
! 238: cleancvs()
! 239: {
! 240: echo "+++ ELWIX clean CVS tags ..."
! 241:
! 242: find $1 -type d -name CVS -exec rm -rf {} \; >/dev/null 2>&1
! 243: }
! 244:
! 245: ### main()
! 246: if [ ! -r ${REL}/${ROOTFS_KERN} -o ! -r ${REL}/${ROMFS_IMG} ]; then
! 247: echo
! 248: echo "Error:: not found kernel or firmware elwix files ..."
! 249: echo
! 250: echo " For fix this issue, please re-run build_rootfs.sh or build_romfs.sh"
! 251: echo
! 252: exit 1
! 253: fi
! 254:
! 255: clean_fsdir
! 256: build_fsdir
! 257:
! 258: mkboot ${FS}
! 259: mkhome ${FS}
! 260: mkvar ${FS}
! 261: mketc ${FS}
! 262: cleancvs ${FS}
! 263: mkbackup ${FS}
! 264:
! 265: install_fsdir
! 266:
! 267: echo "+++ Complete build ELWIX FS"
! 268: echo "ELWIX finish version ${VERSION}, Good luck!"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>