Installation de FreeBSD sur un Sheevaplug
Depuis 8.1 il est possible d’installer et d’utiliser convenablement FreeBSD sur un Sheevaplug. Ce guide est avant-tout un mémo donc je ne prends pas la peine de détailler toutes les étapes, mais il pourra surement servir à d’autres. La procédure est la même pour un e-sata Sheevaplug (j’ai rajouté deux trois tips pour ce modèle).
Toutes les manipulations suivantes s’effectuent sur un FreeBSD 8.1 (amd64).
Récupération des sources
cp /usr/share/examples/cvsup/cvs-supfile ~
$EDITOR cvs-supfile
*default host=cvsup8.freebsd.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_8_1
*default delete use-rel-suffix
*default compress
src-all
csup ~/cvs-supfile
Patchs
bind_segfault.diff : Corrige une erreur de segmentation de Bind9
default_root_pass.diff : Rajoute simplement le mots de passe ‘root’ au compte root
force_fsck.diff : Ajoute une option dans ‘rc.conf’ pour forcer le fsck au boot
usb_boot.diff : Pour booter via le port USB
Pour appliquer les patchs:
patch -p < the_patch
Construction du monde
cd /usr/src
make -j 8 buildworld TARGET_ARCH=arm
Configuration du kernel
Pour le e-sata Sheevaplug:
cd /usr/src/sys/arm/conf
cp SHEEVAPLUG SHEEVAPLUG_ESATA
$EDITOR SHEEVAPLUG_ESATA
# e-sata support
device ata
device atadisk
Pour tous les modèles il faut modifier le paramètre ROOTDEVNAME dans la configuration du kernel. Il faut donner l’emplacement de / sur le support de stockage. Par exemple ad0s2a dans le cas d’un disque connecté au port e-sata.:
# Root fs
options ROOTDEVNAME=\"ufs:/dev/ad0s2a\"
Partionnement
Il faut au minimum deux partitions sur votre support, une première pour stocker le kernel et une seconde pour votre système. (Remplacer da0 par le bon device)
Suppression des partitions existantes:
gpart delete -i 1 da0
gpart destroy da0
Création d’une partition FAT32:
gpart create -s MBR da0
gpart add -s 32M -t freebsd da0
newfs_msdos /dev/da0s1
Partition système (Cas d’un seul slice):
gpart add -t freebsd da0
bsdlabel -w /dev/da0s2
newfs -n da0s2a
Installation du monde
mkdir /mnt/sheeva
mount /dev/da0sa2 /mnt/sheeva
export DESTDIR=/mnt/sheeva
make installworld distrib-dirs distribution TARGET_ARCH=arm
umount /mnt/sheeva
Configuration
rc.conf:
hostname="foobar"
ifconfig_mge0="DHCP"
sshd_enable="YES"
# Force fsck
fsck_y_enable="YES"
background_fsck="NO"
force_fsck="YES"
force_fsck_list="/"
# Ntp
ntpd_enable="YES"
ntpd_flags="-g"
fstab:
/dev/ad0s2a / ufs rw,noclusterr,noclusterw 0 0
Installation du kernel
mkdir /mnt/kernel
mount -t msdosfs /dev/da0s1 /mnt/kernel
cp /usr/obj/arm/usr/src/sys/SHEEVAPLUG/kernel.bin /mnt/kernel
# (ou SHEEVAPLUG_ESATA)
Fin de l’installation
sync
umount /mnt/sheeva
umount /mnt/kernel
On peut maintenant brancher le support au Sheevaplug.
Configuration du Sheevaplug
Il faut maintenant préciser à l’u-boot où se trouve le kernel et de le charger en RAM.
Marvell>> setenv bootcmd "bootcmd=ide reset;fatload ide 1:1 900000 kernel.bin;go 900000"
Marvell>> saveenv
Marvell>> boot
Première connexion:
login : root
pass : root
passwd
tzsetup
adduser -m -G wheel foobar
Problèmes et solutions
Les bugs que j’ai recontré et comment les résoudre.
xz (Core Dump)
mv /usr/bin/xz /usr/bin/xz-sav
cd /usr/ports/xz
$EDITOR MakeFile
#.if ${OSVERSION} >= 900012 || (${OSVERSION} <>= 800505)
#IGNORE= is already in the base system
#.endif
make install clean
Perl
Il faut utiliser la version 5.8.