Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
nfsroot [Le 27/06/2010, 13:05]
congelli501 créée
nfsroot [Le 30/07/2010, 13:58] (Version actuelle)
congelli501
Ligne 1: Ligne 1:
 ====== Tuto NFS root avec démarrage depuis une clé USB ====== ====== Tuto NFS root avec démarrage depuis une clé USB ======
-Désolé, ce tuto est sous format odt et n'est pas beaucoup rédigé+===== Création du nfsroot avec debootstrap (dans /nfsroot) ===== 
-Si quelqu'un pouvait arranger ça ?+==== Le dossier ==== 
 +<​code>​ 
 +sudo mkdir /nfsroot 
 +</​code>​ 
 +==== debootstrap ==== 
 +<​code>​ 
 +sudo apt-get install dchroot debootstrap  
 +sudo debootstrap --arch i386 `lsb_release -c -s` /nfsroot http://​archive.ubuntu.com/​ubuntu/​ 
 +</​code>​ 
 +==== Config ==== 
 +<​code>​ 
 +sudo cp /​etc/​resolv.conf /​nfsroot/​etc/​resolv.conf  
 +sudo cp /​etc/​apt/​sources.list /​nfsroot/​etc/​apt/​ </​code>​ 
 +==== Mount (/dev et /proc) ==== 
 +<​code>​ 
 +sudo mount --bind /dev /​nfsroot/​dev  
 +sudo mount -t proc /proc /​nfsroot/​proc </​code>​ 
 +==== chroot ==== 
 + <​code>​ 
 +sudo chroot /nfsroot </​code>​ 
 +==== install ==== 
 +<​code>​ 
 +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 </​code>​ 
 +==== Config pour boot avec nfs ====
  
-{{:tutuo2.odt|tuto_nfsroot.odt}}+=== config ​/​etc/​hostname === 
 + <​code>​ 
 +echo "​nfs-ub"​ > /​etc/​hostname  
 +</​code>​ 
 +=== config : /etc/hosts === 
 + <​code>​ 
 +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</​code>​ 
 +=== config : user === 
 +<​code>​ 
 +adduser congelli501  
 +usermod -G admin -a congelli501</​code>​ 
 +=== sudo === 
 +<​code>​ 
 +visudo # Permet d'​éditer le fichier sudoers</​code>​ 
 + => Ajouter: 
 +<​code>​ 
 +# Members of the admin group may gain root privileges  
 +%admin ALL=(ALL) ALL </​code>​ 
 +=== config : /etc/fstab === 
 + 
 +<​code>​ 
 +# /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 </​code>​ 
 +=== config : /​etc/​initramfs-tools/​initramfs.conf === 
 +Il faut modifier l'​initramfs pour pouvoir lancer le système depuis un server NFS. 
 + 
 +Transformer 
 +<​code>​ 
 +BOOT=local 
 +</​code>​ 
 +en 
 +<​code>​ 
 +BOOT=nfs  
 +</​code>​ 
 +Et 
 +<​code>​ 
 +MODULES=most 
 +</​code>​ 
 +en 
 +<​code>​ 
 +MODULES=netboot  
 +</​code>​ 
 +=== Reconstruction de l' initramfs === 
 +<​code>​ 
 +apt-get install linux-image-generic  
 +#​dpkg-reconfigure "​linux-image-`uname -r`"  
 +update-initramfs -u </​code>​ 
 +=== 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: 
 +<​code>​ 
 +# eth0 ne doit pas être reconfigurée  
 +iface eth0 inet manual </​code>​ 
 +==== exit ==== 
 +On quitte le chroot. 
 + <​code>​ 
 +exit</​code>​ 
 +==== umount ==== 
 +On démonte proc et dev. 
 +<​code>​ 
 +sudo umount /​nfsroot/​proc  
 +sudo umount /​nfsroot/​dev</​code>​ 
 +===== Partage NFS ===== 
 +  
 +==== Installation ==== 
 +<​code>​ 
 +sudo apt-get install nfs-kernel-server </​code>​ 
 +==== Config ==== 
 + 
 +Ajouter dans le fichier /​etc/​exports : 
 +<​code>​ 
 +/​nfsroot ​            ​192.168.0.*(rw,​no_root_squash,​async,​subtree_check)  
 +(Il peut être utile de changer "​192.168.0.*"​)  
 +</​code>​ 
 +==== Reload ==== 
 +<​code>​ 
 +sudo service nfs-kernel-server reload  
 +</​code>​ 
 +===== Boot du client depuis une clé USB ===== 
 + 
 +==== Création du script d'​installation ==== 
 +<​code>​ 
 +touch install_usb-boot  
 +chmod +x install_usb-boot  
 +nano install_usb-boot 
 +</​code>​ 
 +==== Copier ce script dans install_usb-boot ==== 
 +<​code>​ 
 +#!/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</​code>​ 
 +==== Connectez la clé usb ==== 
 + 
 +Elle doit contenir une partition formatée en extX, ntfs ou fat32 
 +==== Installation ==== 
 +<​code>​ 
 +sudo ./​install_usb-boot /dev/sdc1 /​nfsroot</​code>​ 
 + 
 +===== C'est fini ===== 
 + 
 +Il ne vous reste plus qu'à booter sur la clé.
  
 --- //​[[:​utilisateurs:​congelli501|congelli501]] Le 27/06/2010, 13:04// --- //​[[:​utilisateurs:​congelli501|congelli501]] Le 27/06/2010, 13:04//
  • nfsroot.1277636732.txt.gz
  • Dernière modification: Le 27/06/2010, 13:05
  • par congelli501