====== 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//