====== Tuto NFS root avec démarrage depuis une clé USB ====== ===== Création du nfsroot avec debootstrap (dans /nfsroot) ===== ==== Le dossier ==== sudo mkdir /nfsroot ==== debootstrap ==== sudo apt-get install dchroot debootstrap sudo debootstrap --arch i386 `lsb_release -c -s` /nfsroot http://archive.ubuntu.com/ubuntu/ ==== Config ==== sudo cp /etc/resolv.conf /nfsroot/etc/resolv.conf sudo cp /etc/apt/sources.list /nfsroot/etc/apt/ ==== Mount (/dev et /proc) ==== sudo mount --bind /dev /nfsroot/dev sudo mount -t proc /proc /nfsroot/proc ==== chroot ==== sudo chroot /nfsroot ==== install ==== apt-get update apt-get install ubuntu-minimal ubuntu-standard ubuntu-desktop language-pack-fr language-pack-gnome-fr nfs-client # Installation d'Ubuntu apt-get dist-upgrade dpkg-reconfigure locales dpkg-reconfigure console-setup ==== Config pour boot avec nfs ==== === config : /etc/hostname === echo "nfs-ub" > /etc/hostname === config : /etc/hosts === 127.0.0.1 localhost 127.0.1.1 nfs-ub # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts === config : user === adduser congelli501 usermod -G admin -a congelli501 === sudo === visudo # Permet d'éditer le fichier sudoers => Ajouter: # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL === config : /etc/fstab === # /etc/fstab: static file system information. # # Use 'blkid -o value -s UUID' to print the universally unique identifier # for a device; this may be used with UUID= as a more robust way to name # devices that works even if disks are added and removed. See fstab(5). # # proc /proc proc defaults 0 0 /dev/nfs / nfs defaults 1 1 none /tmp tmpfs defaults 0 0 none /var/run tmpfs defaults 0 0 none /var/lock tmpfs defaults 0 0 none /var/tmp tmpfs defaults 0 0 === config : /etc/initramfs-tools/initramfs.conf === Il faut modifier l'initramfs pour pouvoir lancer le système depuis un server NFS. Transformer BOOT=local en BOOT=nfs Et MODULES=most en MODULES=netboot === Reconstruction de l' initramfs === apt-get install linux-image-generic #dpkg-reconfigure "linux-image-`uname -r`" update-initramfs -u === config : /etc/network/interfaces === La connexion sera déjà initialisée lors du boot, si on tente de la reconfigurer, le système ne pourra plus accéder au server NFS. => Ajouter: # eth0 ne doit pas être reconfigurée iface eth0 inet manual ==== exit ==== On quitte le chroot. exit ==== umount ==== On démonte proc et dev. sudo umount /nfsroot/proc sudo umount /nfsroot/dev ===== Partage NFS ===== ==== Installation ==== sudo apt-get install nfs-kernel-server ==== Config ==== Ajouter dans le fichier /etc/exports : /nfsroot 192.168.0.*(rw,no_root_squash,async,subtree_check) (Il peut être utile de changer "192.168.0.*") ==== Reload ==== sudo service nfs-kernel-server reload ===== Boot du client depuis une clé USB ===== ==== Création du script d'installation ==== touch install_usb-boot chmod +x install_usb-boot nano install_usb-boot ==== Copier ce script dans install_usb-boot ==== #!/bin/bash # Script by Congelli501 # Help if [ -z "$1" ] || [ "$1" = '-h' ] || [ "$1" = '--help' ]; then echo "Install linux kernel and grub on partition ." echo "The partition should be formated in extX, fat32 or ntfs." echo "Usage: install_usb-boot " exit 0 fi # Config set -u set -e # Vars serverAdr='192.168.0.2' mountDir='/media/usbboot_tmp_mount' # Device device="$1" if [ ! -b "$device" ]; then echo "Erreur: '$device' n'est pas de type 'bloc'" exit 1 fi #uuid=$(blkid -o udev "$device" | grep "ID_FS_UUID=" | cut -f2 -d'=') uuid=$(blkid -o value -s UUID "$device") device_vol=${device:0:8} # Mount umount "$device" | true mkdir -p "$mountDir" mount "$device" "$mountDir" rm -rf "$mountDir/boot" mkdir -p "$mountDir/boot/grub" # Grub echo "Installing grub2..." grub-install --root-directory="$mountDir" "$device_vol" # Copy kernel echo "Installing kernel..." cp "/boot/vmlinuz-$(uname -r)" "$mountDir/boot/vmlinuz" cp "/boot/initrd.img-$(uname -r)" "$mountDir/boot/initrd.img" # grub.cfg echo "Installing grub.cfg..." cfgFilename="$mountDir/boot/grub/grub.cfg" echo -n "" > "$cfgFilename" echo "echo '$(uname -rs)'" >> "$cfgFilename" echo "echo 'Loading modules...'" >> "$cfgFilename" echo "insmod ext2" >> "$cfgFilename" echo "insmod fat" >> "$cfgFilename" echo "insmod ntfs" >> "$cfgFilename" echo "echo 'Searching file system...'" >> "$cfgFilename" echo "search --no-floppy --fs-uuid --set $uuid" >> "$cfgFilename" echo "echo 'Loading linux...'" >> "$cfgFilename" echo "linux /boot/vmlinuz root=/dev/nfs nfsroot=$serverAdr:/nfsroot ip=dhcp rw quiet splash" >> "$cfgFilename" echo "echo 'Loading initrd...'" >> "$cfgFilename" echo "initrd /boot/initrd.img" >> "$cfgFilename" echo "echo 'Booting...'" >> "$cfgFilename" echo "boot" >> "$cfgFilename" # Umount umount "$device" # Exit exit 0 ==== Connectez la clé usb ==== Elle doit contenir une partition formatée en extX, ntfs ou fat32 ==== Installation ==== sudo ./install_usb-boot /dev/sdc1 /nfsroot ===== C'est fini ===== Il ne vous reste plus qu'à booter sur la clé. --- //[[:utilisateurs:congelli501|congelli501]] Le 27/06/2010, 13:04//