Annotation of elwix/build_fs.sh, revision 1.1.2.1
1.1.2.1 ! 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_romfs.sh,v 1.1.1.1.2.2 2011/07/21 11:17:05 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: install -d boot/defaults;
! 78: install -d boot/firmware;
! 79: install -d boot/kernel;
! 80: install -d boot/modules;
! 81: install -d boot/zfs;
! 82: # cf
! 83: install -d cf;
! 84: # etc
! 85: install -d etc;
! 86: # exports
! 87: install -d exports;
! 88: # home
! 89: install -d home;
! 90: # root
! 91: install -d -m 0700 root;
! 92: # local
! 93: install -d local;
! 94: # tftpboot
! 95: install -d tftpboot;
! 96:
! 97: chown -hR root:wheel .
! 98: cd -
! 99: }
! 100:
! 101: mkboot()
! 102: {
! 103: echo "+++ Build ELWIX FS boot directory ..."
! 104: InstallDir ${WORLD}/boot $1/boot
! 105:
! 106: install -m 644 ${CFGDIR}/boot/boot.config $1;
! 107: install -m 644 ${CFGDIR}/boot/beastie.4th $1/boot;
! 108:
! 109: if [ -r ${CFGDIR}/boot/loader_${TARGET_ARCH}.conf ]; then
! 110: install -m 644 ${CFGDIR}/boot/loader_${TARGET_ARCH}.conf $1/boot/loader.conf;
! 111: else
! 112: echo;
! 113: echo "Can't find right loader.conf for TARGET_ARCH=${TARGET_ARCH} ... loader.conf not installed!";
! 114: echo;
! 115: fi;
! 116: }
! 117:
! 118: mkvar()
! 119: {
! 120: echo "+++ Build ELWIX FS var directory ..."
! 121: ln -s /tmp $1/altroot/var/tmp
! 122:
! 123: touch $1/altroot/var/log/elwix
! 124: touch $1/altroot/var/log/lastlog
! 125: touch $1/altroot/var/log/wifi.log
! 126: touch $1/altroot/var/log/wtmp
! 127: touch $1/altroot/var/run/utmp
! 128: touch $1/altroot/var/account/acct
! 129:
! 130: touch $1/altroot/var/log/auth.log
! 131: touch $1/altroot/var/log/cron
! 132: touch $1/altroot/var/log/console.log
! 133: touch $1/altroot/var/log/debug.log
! 134: touch $1/altroot/var/log/lpd-errs
! 135: touch $1/altroot/var/log/maillog
! 136: touch $1/altroot/var/log/messages
! 137: touch $1/altroot/var/log/security
! 138: touch $1/altroot/var/log/xferlog
! 139: touch $1/altroot/var/log/ppp.log
! 140: chgrp network $1/altroot/var/log/ppp.log
! 141:
! 142: InstallDir ${WORLD}/var/named $1/altroot/var/named
! 143: InstallList ${ELWIX_BSDSRC} ${BSDSRC} $1/altroot/var/named
! 144: install -v ${FS_ETC}/resolv.safe $1/altroot/var/run/resolv.conf
! 145: }
! 146:
! 147: create_etc_motd()
! 148: {
! 149: ELWIX_VER="ELWIX-${VERSION}_${TARGET_ARCH}";
! 150: ELWIX_HDR_MOTD="${ELWIX_VER} :: Build date ${BUILD_DATE}";
! 151:
! 152: awk -v fo="${1:-motd}" 'BEGIN { print "'"${ELWIX_HDR_MOTD}"'" > fo; } { print $0 >> fo; }' \
! 153: ${CFGDIR}/elwix_signature.txt;
! 154: }
! 155:
! 156: create_etc_fstab()
! 157: {
! 158: cat >$1 <<_EOF
! 159: # Automatic generated fstab for ELWIX at ${BUILD_DATE}
! 160: #
! 161: /dev/ufs/elwix /elwix ufs ro 0 1
! 162: md3 /tmp mfs rw,-s8m,-oasync,-S 0 0
! 163: md4 /var mfs rw,-s16m,-S 0 0
! 164: _EOF
! 165: }
! 166:
! 167: mketc()
! 168: {
! 169: echo "+++ Build ELWIX FS etc directory ..."
! 170: InstallDir ${FS_ETC} $1/etc
! 171:
! 172: chown -R root:wheel $1/etc;
! 173:
! 174: chmod 0600 $1/etc/opieaccess;
! 175: chmod 0600 $1/etc/opiekeys;
! 176:
! 177: chmod 0600 $1/etc/master.passwd;
! 178: chmod 0600 $1/etc/spwd.db;
! 179: chmod 0600 $1/etc/ssh/ssh_host_dsa_key;
! 180: chmod 0600 $1/etc/ssh/ssh_host_key;
! 181: chmod 0600 $1/etc/ssh/ssh_host_rsa_key;
! 182:
! 183: chmod 0440 $1/etc/sudoers;
! 184:
! 185: chgrp www $1/etc/config.xml;
! 186: chmod 0660 $1/etc/config.xml;
! 187:
! 188: ln -sf /etc/rc.s $1/etc/rc.S
! 189:
! 190: ln -sf /usr/share/zoneinfo/${TIMEZONE} $1/etc/localtime;
! 191: ln -sf /usr/share/misc/termcap $1/etc/termcap;
! 192:
! 193: ln -sf /var/named/etc/namedb $1/etc/namedb;
! 194: ln -sf /var/run/resolv.conf $1/etc/resolv.conf;
! 195:
! 196: echo ${TARGET_ARCH} >$1/etc/platform;
! 197:
! 198: create_etc_motd $1/etc/motd;
! 199: create_etc_fstab $1/etc/fstab;
! 200: }
! 201:
! 202: mkbackup()
! 203: {
! 204: echo "+++ Build elwix fs backup factory default directory ..."
! 205: mkdir -p $1/altroot/backup
! 206:
! 207: cd $1
! 208: tar -czf altroot/backup/.etc.tgz etc
! 209: cp -p etc/config.xml altroot/backup
! 210: cd altroot
! 211: tar -czf backup/.var.tgz var
! 212: cd $TOPDIR
! 213: }
! 214:
! 215: mkhome()
! 216: {
! 217: echo "+++ Build ELWIX FS root home directory ..."
! 218: install -d $1/root/.ssh
! 219: [ -r ${CFGDIR}/root.skel/ssh/authorized_keys2 ] && \
! 220: install -v ${CFGDIR}/root.skel/ssh/authorized_keys2 $1/root/.ssh;
! 221:
! 222: install -v ${CFGDIR}/root.skel/cshrc $1/root/.cshrc;
! 223: install -v ${CFGDIR}/root.skel/login $1/root/.login;
! 224: install -v ${CFGDIR}/root.skel/logout $1/root/.logout;
! 225: install -v ${CFGDIR}/root.skel/profile $1/root/.profile;
! 226: install -v ${CFGDIR}/root.skel/vimrc $1/root/.vimrc;
! 227: }
! 228:
! 229: install_fsdir()
! 230: {
! 231: echo "+++ Install elwix fs in bundle OS install file ..."
! 232:
! 233: sed -nE -e 's/^ *([^ #]+) */\1/p' < $ELWIX_FS | tr ':' '\n' |
! 234: tar -C / -cvf - -T - | tar -C $FS -x -f -
! 235:
! 236: install -v $REL/$ROOTFS_KERN $FS/boot/kernel
! 237:
! 238: install -v $REL/$FW_IMG $FS/elwix-firmware_$VERSION
! 239: ln -s /elwix/elwix-firmware_$VERSION $FS/$FW_IMG
! 240:
! 241: cd $FS
! 242: tar -czvf $REL/$OS .
! 243: cd $TOPDIR
! 244: }
! 245:
! 246: ### main()
! 247: if [ ! -r ${REL}/${ROOTFS_KERN} -o ! -r ${REL}/${ROMFS_IMG} ]; then
! 248: echo
! 249: echo "Error:: not found kernel or firmware elwix files ..."
! 250: echo
! 251: echo " For fix this issue, please re-run build_rootfs.sh or build_romfs.sh"
! 252: echo
! 253: exit 1
! 254: fi
! 255:
! 256: clean_fsdir
! 257: build_fsdir
! 258:
! 259: mkboot ${FS}
! 260: mkhome ${FS}
! 261: mkvar ${FS}
! 262: mketc ${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>