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). # # <file system> <mount point> <type> <options> <dump> <pass> 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 <device>." echo "The partition should be formated in extX, fat32 or ntfs." echo "Usage: install_usb-boot <device>" 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é.
— congelli501 Le 27/06/2010, 13:04