Après de bon et loyaux services, le disque dur qui a hébergé ma machine FreeBSD donnait de sérieux signes de fatigue.
J'ai donc entrepris de tout remettre à plat, je ne pourrais donc plus affirmer haut et fort que ma machine a suivi toutes les mises à jours de FreeBSD sans réinstallation depuis la 7.
Pour ceux que ça pourrait intéresser, je présente ici la méthode utilisée et les scripts qui l'accompagnent.
Donc, j'ai
préparé une image d'installation de FreeBSD 11 sur un stick USB.
Mais, je lui ai collé quelques scripts pour me faire une installation ZFS aux petits oignons:
Je suis l'installation jusqu'au partitionnement de disque, puis j'ouvre une console, pour lancer mes scripts en deux étapes:
D'abord sectoriser mon disque (ada0):
Code:#!/bin/sh
# on recommence tout
gpart destroy -F /dev/ada0
# schema GPT
gpart create -s GPT /dev/ada0
# ada0p1: EFI
gpart add -t efi -s 100M -a 1M -l EFI /dev/ada0
# ada0p2 swap
gpart add -t freebsd-swap -s 8G -a 1M -l fbsdswap0 /dev/ada0
# ada0p3 zfs
gpart add -t freebsd-zfs -a 1M -l fbsdllanura /dev/ada0
#copie de l'EFI
newfs_msdos -F 16 -L FreeBSD_EFI /dev/ada0p1
mkdir -p /tmp/efi
mount -t msdosfs /dev/ada0p1 /tmp/efi
mkdir -p /tmp/efi/EFI/BOOT
cp /boot/boot1.efi /tmp/efi/EFI/BOOT/BOOTX64.EFI
umount /tmp/efi
#creation du pool zfs
zpool create -f -O canmount=off -O mountpoint=none -R /mnt llroot /dev/ada0p3
Donc, une partition
msdos pour l'
UEFI, un
swap natif et tout le reste en
ZFS.
Ensuite, du ZFS bien cloisonné:
Code:zfs create -o mountpoint=none llroot/ROOT
zfs create -o mountpoint=none llroot/HOME
zfs create -o mountpoint=none llroot/VAR
zfs create -o mountpoint=none llroot/DATA
zfs create -o mountpoint=none llroot/BCK
zfs create -o mountpoint=none llroot/VM
zfs create -o mountpoint=none llroot/JAILS
zfs create -o mountpoint=/ llroot/ROOT/master
zfs create -o mountpoint=/tmp llroot/ROOT/tmp
zfs create -o mountpoint=/data llroot/DATA/master
zfs create -o mountpoint=/usr/home llroot/HOME/master
zfs create -o mountpoint=/usr/src llroot/ROOT/src
zfs create -o mountpoint=/usr/ports llroot/ROOT/ports
zfs create -o mountpoint=/usr/obj llroot/ROOT/obj
zfs create -o mountpoint=/var llroot/VAR/master
zfs create -o mountpoint=/var/log llroot/VAR/log
zfs create -o mountpoint=/var/db llroot/VAR/db
zfs create -o mountpoint=/var/tmp llroot/VAR/tmp
zfs create -o mountpoint=/var/cache llroot/VAR/cache
zfs create -o mountpoint=/var/crash llroot/VAR/crash
zfs create -o mountpoint=/var/run llroot/VAR/run
zfs create -o mountpoint=/backups llroot/BCK/master
zfs create -o mountpoint=/vm llroot/VM/master
zfs create -o mountpoint=/jails llroot/JAILS/master
# automatic mount point
zpool set bootfs=llroot/ROOT/master llroot
La dernière ligne sert à activer le «root» ZFS sans avoir à le mettre dans «/boot/loader.conf»
Ensuite, j'ai choisi de tout installer sauf les sources et les ports, puisque je compte suivre la branche stable.
Après un reboot, j'ai aussi rajouté le swap dans le fstab:
Code:/dev/ada0p2 none swap sw 0 0
et comme mon ancien disque ( dont le pool zfs est nommé «zroot») est toujours branché, j'ai pu récupérer mes données; ici dans «/mnt» :
Code:zpool import -R /mnt zroot
Dont, des fichiers de configuration:
Code:# /boot/loader.conf.local
autoboot_delay="3"
linux_load="YES"
linux64_load="YES"
nvidia-modeset_load="YES"
kern.racct.enable=1
kern.vty=vt
vfs.zfs.arc_max="4G"
Code:# /etc/rc.conf.local
zfs_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO" # Start a localhost-only MTA for mail submission
sendmail_outbound_enable="NO" # Dequeue stuck mail (YES/NO).
sendmail_msp_queue_enable="NO" # Dequeue stuck clientmqueue mail (YES/NO).
dbus_enable="yes"
clear_tmp_enable="YES"
autofs_enable="YES"
slim_enable="yes"
ensuite il a suffit de réinstaller ma collection de soft grace à
pkgng;
Et surtout, à coup de
rsync, rappatrier les «homes» de mes utilisateurs...
Un jeu d'enfant !
D'ailleurs, mes filles ont pu continuer leurs parties sans perdre leurs scores et
écouter leur
groupe favori. (oui, ça change de la reine des neiges)
En parallèle le rappatriement des ports:
Code:portsnap fetch extract
et des sources
Code:svn co https://svn0.us-west.freebsd.org/base/stable/11 /usr/src