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] – créée congelli501nfsroot [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//