igor@0: #!/bin/sh igor@0: igor@0: DYNAMIPS_BUILD=yes igor@0: XENOMIPS_FS_BUILD=yes igor@0: CONFIG_FS_BUILD=no igor@0: IOS_FS_BUILD=yes igor@0: igor@0: #Xenomips FS igor@0: XENOMIPS_FS_SIZE=2048k # size in 1k blocks igor@0: XENOMIPS_FS_NAME=xenomips1.img igor@0: igor@0: # Config FS igor@0: CONFIG_FS_SIZE=100k igor@0: CONFIG_FS_NAME=xenomips-config1.img igor@0: igor@0: # IOS FS igor@0: IOS_FS_SIZE=2048k igor@0: IOS_FS_NAME=xenomips-ios1.img igor@0: igor@0: igor@0: XENOMIPS_DIR="files/" igor@0: igor@0: igor@0: DEBIAN_MIRROR=http://debian.org.ua/debian igor@0: DISTRO=sid igor@0: PACKAGES="openssh-server libc6-xen libelf1 libpcap0.8 screen nfs-common quagga" igor@0: DYNAMIPS_SOURCES=http://www.ipflow.utc.fr/dynamips/dynamips-0.2.7.tar.gz igor@0: DYNAMIPS_BUILD_DIR=dynamips/ igor@0: KERNEL_VERSION=`uname -r` igor@0: SSH_OPEN_KEY=files/id_dsa.pub igor@0: igor@0: IOS_DIR="ios/" igor@0: igor@0: WORK_DIR=${XENOMIPS_FS_NAME%%.img} igor@0: igor@0: build_and_install_dynamips() igor@0: { igor@0: OLD_PWD="`pwd`" igor@0: DESTDIR=`pwd`/${WORK_DIR} igor@0: igor@0: if echo $DYNAMIPS_BUILD | grep -qi ^y igor@0: then igor@0: rm -rf ${DYNAMIPS_BUILD_DIR}/ igor@0: mkdir -p ${DYNAMIPS_BUILD_DIR}/ igor@0: cd ${DYNAMIPS_BUILD_DIR}/ igor@0: wget $DYNAMIPS_SOURCES igor@0: tar xfz dynamips*tar* igor@0: cd dynamips*/ igor@0: perl -p -i -e s@^PCAP_LIB=.*@PCAP_LIB=-lpcap@ Makefile igor@0: make igor@0: else igor@0: cd ${DYNAMIPS_BUILD_DIR}/dynamips*/ igor@0: fi igor@0: make install DESTDIR=${DESTDIR} igor@0: cd ${OLD_PWD} igor@0: } igor@0: igor@0: igor@0: dd if=/dev/zero of=${XENOMIPS_FS_NAME} count=${XENOMIPS_FS_SIZE} bs=1024 igor@0: mkfs.ext3 -F ${XENOMIPS_FS_NAME} igor@0: mkdir -p ${WORK_DIR} igor@0: mount -o loop ${XENOMIPS_FS_NAME} ${WORK_DIR} igor@0: debootstrap ${DISTRO} ${WORK_DIR} ${DEBIAN_MIRROR} igor@0: cat <<SCRIPT | chroot ${WORK_DIR} sh -s igor@0: unset LANG igor@0: apt-get -y --force-yes install ${PACKAGES} igor@0: /etc/init.d/ssh stop igor@0: cat <<FSTAB > /etc/fstab igor@0: /dev/hda1 / ext3 ro 0 0 igor@0: /dev/hda2 /xenomips/ios ext3 ro 0 0 igor@0: /dev/hda3 /xenomips/config ext3 rw 0 0 igor@0: FSTAB igor@0: mkdir -p /data/Cisco_IOS /xenomips igor@0: igor@0: cat <<'INTERFACES' > /etc/network/interfaces igor@0: auto lo eth0 igor@0: igor@0: iface lo inet loopback igor@0: up for i in \`ifconfig -a | grep 'eth.*Link encap' | awk '{print \$1}'\`; do ifconfig \$i up ; done || true igor@0: igor@0: iface eth0 inet dhcp igor@0: INTERFACES igor@0: igor@0: echo /usr/local/bin/xenomips.sh > /etc/rc.local igor@0: cd /etc/rcS.d; ln -s ../init.d/xenomips-init S35xenomips-init igor@0: rm /etc/rc2.d/S*quagga igor@0: igor@0: perl -i -p -e s@C_PATH=/etc/quagga@C_PATH=/xenomips/etc/quagga@ /etc/init.d/quagga igor@0: igor@0: mkdir -p /xenomips/{ios,config,dynamips,etc/quagga} /var/lib/xenomips /root/.ssh igor@0: igor@0: screen -ls | grep -q Attached && screen -x || screen -ls | grep -q Detached && screen -r igor@0: SCRIPT igor@0: igor@0: cp -R /lib/modules/${KERNEL_VERSION} ${WORK_DIR}/lib/modules igor@0: igor@0: cp ${XENOMIPS_DIR}/xenomips-init ${WORK_DIR}/etc/init.d/ igor@0: cp ${XENOMIPS_DIR}/xenomips.sh ${WORK_DIR}/usr/local/bin igor@0: sudo chmod +x ${WORK_DIR}/usr/local/bin/xenomips.sh ${WORK_DIR}/etc/init.d/xenomips-init igor@0: igor@0: cat ${SSH_OPEN_KEY} > ${WORK_DIR}/root/.ssh/authorized_keys igor@0: chmod 600 ${WORK_DIR}/root/.ssh/authorized_keys igor@0: igor@0: build_and_install_dynamips igor@0: igor@0: umount ${WORK_DIR} igor@0: igor@0: if echo $CONFIG_FS_BUILD | grep -qi ^y igor@0: then igor@0: dd if=/dev/zero of=${CONFIG_FS_NAME} bs=1k count=${CONFIG_FS_SIZE} igor@0: mkfs.ext3 -F ${CONFIG_FS_NAME} igor@0: fi igor@0: igor@0: igor@0: if echo $IOS_FS_BUILD | grep -qi ^y igor@0: then igor@0: dd if=/dev/zero of=${IOS_FS_NAME} bs=1k count=${CONFIG_FS_SIZE} igor@0: mkfs.ext3 -F ${IOS_FS_NAME} igor@0: mount -o loop ${IOS_FS_NAME} ${WORK_DIR} igor@0: cp ${IOS_DIR}/* ${WORK_DIR} igor@0: umount ${WORK_DIR} igor@0: fi igor@0: