NanoOS
Rédigé par BeHuman
Aucun commentaire
Classé dans : Shell/Bash

Se script permet de créer rapidement un système Linux fonctionnel avec busybox. J'ai trouvé se script sur le site d'ADComp, je balancerai le lien dans la soirée ca rje ne l'ai pas sous les yeux.
Cependant j'ai effectuer quelque modification au script pour qu'il s'utilise de façon graphique via zenity
#!/bin/bash # Mini Linux/BusyBox system by ADcomp # *** tested with Ubuntu 12.04 LTS, 12.10 *** function createSystem() { # base directory ( echo "10" echo "#Création des répertoire de base" mkdir NanoOS && cd NanoOS # live directory mkdir -p live/boot/isolinux # minimal root filesystem sleep 1 echo "20" echo "#Création du système de fichier root" mkdir rootfs && cd rootfs mkdir bin lib proc root sbin sys tmp mkdir -p usr/lib usr/local usr/share/kmap usr/bin usr/sbin mkdir -p var/cache var/lib var/lock var/log var/run var/spool mkdir -p dev/pts dev/shm dev/input dev/net dev/usb mkdir -p etc/init.d chmod 1777 tmp sleep 1 # copy /dev nodes .. echo "30" echo "#Copie des noeuds /dev" cp -dpR /dev/console dev/ cp -dpR /dev/tty dev/ cp -dpR /dev/tty[0-6] dev/ cp -dpR /dev/null dev/ cp -dpR /dev/zero dev/ cp -dpR /dev/ram0 dev/ # busybox sleep 1 echo "40" echo "#Copie de Busybox & création des liens symbolique" cp /bin/busybox bin chmod 4755 bin/busybox chroot ../rootfs /bin/busybox --install -s rm linuxrc ln -s bin/busybox init # keyboard /bin/busybox dumpkmap > usr/share/kmap/dump.kmap echo """# /etc/fstab: information about static file system. proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 devpts /dev/pts devpts defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 """ > etc/fstab echo """#! /bin/sh echo "Processing /etc/init.d/rcS ... " /bin/mount proc /bin/mount -a /bin/hostname -F /etc/hostname /sbin/ifconfig lo 127.0.0.1 up /sbin/loadkmap < /usr/share/kmap/dump.kmap """ > etc/init.d/rcS chmod a+x etc/init.d/rcS echo """::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh tty2::askfirst:-/bin/sh ::ctrlaltdel:/bin/umount -a -r ::ctrlaltdel:/sbin/reboot """ > etc/inittab # config stuff .. sleep 1 echo "50" echo "#Configuration Hostname" echo "127.0.0.1 localhost" > etc/hosts echo "minux" > etc/hostname echo "/bin/sh" > etc/shells echo "Mini Linux BusyBox experiment 0.1" > etc/issue echo "order hosts,bind" > etc/host.conf echo "multi on" >> etc/host.conf echo """PATH="/usr/sbin:/usr/bin:/sbin:/bin" LD_LIBRARY_PATH="/usr/lib:/lib" if [ "`id -u`" -eq 0 ]; then PS1='\e[1m\u@\h:\w\#\e[m ' else PS1='\e[1m\u@\h:\w\$\e[m ' fi DISPLAY=:0.0 export PATH LD_LIBRARY_PATH PS1 DISPLAY ignoreeof umask 022 """ > etc/profile # Users, groups and passwords sleep 0.5 echo "60" echo "#Création utilisateurs, groupes et mots de passe" echo "root:x:0:0:root:/root:/bin/sh" > etc/passwd echo "root::13525:0:99999:7:::" > etc/shadow echo "root:x:0:" > etc/group echo "root:*::" > etc/gshadow chmod 640 etc/shadow chmod 640 etc/gshadow sleep 0.5 echo "65" echo "#Compression de rootfs --> live/boot/rootfs.gz" find . -print | cpio -o -H newc | gzip -9 > ../live/boot/rootfs.gz cd .. # configure bootloader sleep 0.5 echo "70" echo "#Copie de isolinux.bin --> live/boot/isolinux" cp /usr/lib/syslinux/isolinux.bin live/boot/isolinux echo "75" sleep 0.5 echo "#Création de la configuration d'isolinux" echo """default live label live kernel /boot/vmlinuz append initrd=/boot/rootfs.gz rw root=/dev/null quiet implicit 0 prompt 0 """ > live/boot/isolinux/isolinux.cfg # copy linux kernel sleep 1 echo "80" echo "#Copie du noyau --> live/boot/vmlinuz" for kernel in /boot/vmlinuz-*; do echo " * $kernel" ; done cp $kernel live/boot/vmlinuz chmod a+rw live/boot/vmlinuz # create iso image echo "90" echo "#Création d'une image ISO" genisoimage -R -o cd.iso -b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -V "Live" -input-charset iso8859-1 -boot-info-table live ) | zenity --progress --title="NanoOS" text="" --auto-close # test with Qemu zenity --question --title="NanoOS" --text="Voulez-vous lancer la simulation ?" if [ "$?" -eq 0 ]; then if [[ -f "/usr/bin/qemu-system-i386" ]]; then qemu-system-i386 -cdrom NanoOS/cd.iso else zenity --question --title="NanoOS" --text="Qemu n'est pas installé, voulez l'installer maintenant ?" if [ "$?" -eq 0 ]; then apt-get install -y -f -m qemu-kvm | zenity --progress --title="NanoOS" --text="Installation de Qemu en cours..." --auto-close --pulsate fi qemu-system-i386 -cdrom NanoOS/cd.iso fi fi # Clear zenity --question --title="NanoOS" --text="Voulez-vous supprimer NanoOS ?" if [ "$?" -eq 1 ]; then exit fi rm -rf NanoOS } if [ `whoami` != "root" ]; then gksudo -m "La création NanoOS nécessite les privilèges administrateur" "$0" & exit fi createSystem