1) Préparation du chroot.

Démarrez la dedibox en mode secours sur Ubuntu 10 amd64. puis :

sudo su -

Vous allez noter la conf réseau :
 ifcfg route -n

il vous faut l'ip de votre Dedibox (que j'appellerais VOTRE_IP), le broadcast (VOTRE_BROADCAST) et la passerelle (VOTRE_GW), c'est pour plus tard.

Ensuite, on va faire un truc simple, formattez comme suit :

sda1 en ext2
sda2 en ext4
sda3 en swap

swapon /dev/sda3

Ensuite on vas créer le script qui installera pacman :

vi pac.sh

et collez y ce qui suit :

#!/bin/bash
#README {{{
# author......: Lucky <archlinux.org@lucky.take0ver.net>
# filename....: getpac.sh
# description.: get/install pacman on your system
# version.....: 1.0.4
#}}}

#CONFIG {{{
arch="$(uname -m)" #i686 or x86_64
mirror="ftp://mirrors.kernel.org/archlinux"
#}}}

#CHECK {{{
if [ "$(id -u)" -ne "0" ]; then
  echo "This script should be run as root."
  exit 1
fi

if [ "${arch}" = "x86_64" ]; then
  echo "${arch} detected"
elif [ "${arch}" = "i686" ]; then
  echo "${arch} detected"
else
  echo "${arch} not supported"
  echo "set arch manualy on config part"
  exit 1
fi
#}}}

#DIRS_AND_INDEX {{{
scriptdir="$(pwd)"
tempdir="$(mktemp -d -t getpac-XXXXXXXX)"
cd "${tempdir}"
link="${mirror}/core/os/${arch}"
wget -q "${link}/"
#}}}

#PACKAGE_LIST {{{
#pacman-3.3.3-1-x86_64.pkg.tar.gz
pacman_pkg="$(grep pacman-[0-9].[0-9] index.html | perl -ne 'print "$1\n" if />(.*?tar.gz)/;' | tail -1)"
#pacman-mirrorlist-20100131-1-x86_64.pkg.tar.gz
pacmanmirror_pkg="$(grep pacman-mirror index.html | perl -ne 'print "$1\n" if />(.*?tar.gz)/;' | tail -1)"
#acl-2.2.48-1-x86_64.pkg.tar.gz
acl_pkg="$(grep acl-[0-9].[0-9] index.html | perl -ne 'print "$1\n" if />(.*?tar.gz)/;' | tail -1)"
#attr-2.4.44-1-x86_64.pkg.tar.gz
attr_pkg="$(grep attr-[0-9].[0-9] index.html | perl -ne 'print "$1\n" if />(.*?tar.gz)/;' | tail -1)"
#libarchive-2.7.1-1-x86_64.pkg.tar.gz
libarchive_pkg="$(grep libarchive-[0-9].[0-9] index.html | perl -ne 'print "$1\n" if />(.*?tar.gz)/;' | tail -1)"
#libfetch-2.26-1-x86_64.pkg.tar.gz
libfetch_pkg="$(grep libfetch-[0-9].[0-9] index.html | perl -ne 'print "$1\n" if />(.*?tar.gz)/;' | tail -1)"
#expat-2.0.1-5-i686.pkg.tar.gz
expat_pkg="$(grep expat-[0-9].[0-9] index.html | perl -ne 'print "$1\n" if />(.*?tar.gz)/;' | tail -1)"
#openssl-1.0.0-2-i686.pkg.tar.gz
openssl_pkg="$(grep openssl-[0-9].[0-9] index.html | perl -ne 'print "$1\n" if />(.*?tar.gz)/;' | tail -1)"
#xz-4.999.9beta-3-x86_64.pkg.tar.gz
xz_pkg="$(grep xz-[0-9].[0-9] index.html | perl -ne 'print "$1\n" if />(.*?tar.gz)/;' | tail -1)"
#}}}

#GET_PACKAGES {{{
pkgs="${pacman_pkg} ${pacmanmirror_pkg} ${acl_pkg} ${attr_pkg} ${libarchive_pkg} ${libfetch_pkg} ${expat_pkg} ${openssl_pkg} ${xz_pkg}"
for pkg in ${pkgs}; do
  echo "${pkg}"
  wget -q "${link}/${pkg}"
done
#}}}

#EXTRACT_PACKAGES {{{
for pkg in *.tar.gz; do
  tar xvzf "${pkg}" -C /;
done
#}}}

#ADD_MIRROR {{{
(tmpfile="$(mktemp)" && { echo "Server = ${mirror}/"'$repo'"/os/${arch}" | cat - "/etc/pacman.d/mirrorlist" > ${tmpfile} && mv ${tmpfile} "/etc/pacman.d/mirrorlist"; } )
#}}}

#SYNC_PACMAN {{{
echo "" && \
pacman -Sy && \
echo "" && \
echo "\o/ pacman is ready now \o/"
cd "${scriptdir}"
#}}}

Ensuite on installe pacman :

chmod 700 pac.sh
./pac.sh

Il fait sa cuisine, et vous pouvez vous faire un café pendant ce temps. Tiens d'ailleur en parlant de ça, pour les possesseurs de cafetière Senseo, il existe des dosettes  re-utilisable ça évite de faire trop de déchets et en plus ça coute moins cher en café. Ha... on me dit que c'est pas le moment de faire mon Hulot, donc reprenons.

Maintenant, nous allons monter les dossiers qui vont bien pour le chroot :

mkdir /newarch
mount /dev/sda2 /newarch

mkdir /newarch/boot
mount /dev/sda1 /newarch/boot

et on lance l'archboostrap :

mkdir -p /newarch/var/lib/pacman/pkg
pacman --cachedir /newarch/var/cache/pacman/pkg -Sy -r /newarch
pacman --cachedir /newarch/var/cache/pacman/pkg -S base -r /newarch

Pendant qu'il fais son truc, on peux causer café si vous voulez, moi j'aime bien l"Ethiopien, c'est pas top amer, et vous ?

Ah, il à fini (trop rapide cette Dedibox Oo), terminons le chroot :

Là c'est pour être sur d'avoir le minimum de nods dans /dev avec les bon droits :

cd /newarch/dev
rm console ; mknod -m 600 console c 5 1
rm null ; mknod -m 666 null c 1 3
rm zero ; mknod -m 666 zero c 1 5

Quelques confs :
cp /etc/resolv.conf /newarch/etc/
cp /etc/pacman.d/mirrorlist /newarch/etc/pacman.d

montage de proc sys dev :

for i in proc sys dev ; do mount -o bind /$i /newarch/$i ; done

chroot !!! (enfin, depuis le temps qu'on en parle ^^)
chroot /newarch /bin/bash

2) On termine la configuration de notre Dedibox dans le chroot.

pacman -S kernel26 lsof mc vim sudo screen ipcalc nmap iptraf iftop htop iotop openssh git

Ah un truc important, il manque 1 firmware dans les archives de Archlinux : bnx2-mips-09-6.0.17.fw il est légèrement indispensable, en ceci que c'est celui de la carte réseau, donc il faut le rajouter :

cd /root
wget http://aur.archlinux.org/packages/linux-firmware-git/linux-firmware-git/PKGBUILD
makepkg
pacman -Uf linux-firmware-git-20110202-1-any.pkg.tar.xz

ouf! ça aurais été dommage d'avoir une Dediox sans interface réseau ;-)

Passons à fstab :

vim /etc/fstab


ajouter :
#
# /etc/fstab: static file system information
#
# <file system>        <dir>         <type>    <options>          <dump> <pass>
devpts                 /dev/pts      devpts    defaults            0      0
shm                    /dev/shm      tmpfs     nodev,nosuid        0      0
UUID=d00e6807-0afb-41ec-b3b8-7a21809fe405 / ext4 defaults 0 1
UUID=6936a8a9-64cd-4c49-a8dc-219ec674f17c /boot ext2 defaults 0 1
UUID=941f4051-b060-4756-aad9-325b6cebcbf7 swap swap defaults 0 0

"Nan mais attends, d'ou qu'il les sort les uuid machin truc là ? Oo" qu'on me dis dans l'oreillette, et bien ils sont là :

ls -la /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 100  8 févr. 21:37 .
drwxr-xr-x 6 root root 120  8 févr. 21:37 ..
lrwxrwxrwx 1 root root  10  8 févr. 21:38 6936a8a9-64cd-4c49-a8dc-219ec674f17c -> ../../sda1
lrwxrwxrwx 1 root root  10  8 févr. 21:38 941f4051-b060-4756-aad9-325b6cebcbf7 -> ../../sda3
lrwxrwxrwx 1 root root  10  8 févr. 21:38 d00e6807-0afb-41ec-b3b8-7a21809fe405 -> ../../sda2

notez bien celui de sda2, on s'en servira plus tard.

Passons à /etc/rc.conf, modifiez les valeurs suivantes :
LOCALE="fr_FR.UTF-8"
HARDWARECLOCK="UTC"
TIMEZONE="Europe/Paris"
KEYMAP="fr"
eth0="eth0 VOTRE_IP netmask 255.255.255.0 broadcast VOTRE_BROADCAST"
gateway="default gw VOTRE_GW"
ROUTES=(gateway)

et aussi, ajoutez sshd à la ligne : DAEMONS=()

modifiez votre /etc/hosts (avec localhost, le nom de votre dedbox, etc..)


pour les locales :

vim /etc/locale.gen

décommenter:
en_US.UTF-8 UTF-8
en_US ISO-8859-1
fr_FR.UTF-8 UTF-8
fr_FR ISO-8859-1
fr_FR@euro ISO-8859-15


locale-gen



On vas passer au boot :
vim /etc/mkinitcpio.conf

et modifiez comme suit :
MODULES="mpt2sas scsi_transport_sas mptscsih mptbase ext4 bnx2"
HOOKS="base udev ide pata scsi sata filesystems keymap"


Ensuite :
mkinitcpio -p kernel26
grep -v rootfs /proc/mounts > /etc/mtab
grub-install /dev/sda


le menu de grub :
vi /boot/grub/menu.lst

modifiez les lignes kernel avec l'uuid correspond à /dev/sda2 :
kernel /vmlinuz26 root=/dev/disk/by-uuid/d00e6807-0afb-41ec-b3b8-7a21809fe405 ro hpet=disable


Le reste de la conf du système :

1 seule console suffit car vou n'avez qu'un idrac non ?
vi /etc/inittab

et modifiez comme suit :
c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux
#c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux
#c3:2345:respawn:/sbin/agetty -8 38400 tty3 linux
#c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux
#c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux
#c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux


changement de pass root
passwd

ajoutez un utilisateur :
useradd -m -g users -G audio,lp,optical,storage,video,wheel,games,power,scanner -s /bin/bash toto
passwd toto



un peux de sécurité :
vim /etc/ssh/sshd_config
et changer le port par défaut de ssh puis PermitRootLogin à no

vim /etc/sudoers
autoriser toto

vim /etc/hosts.allow
ajouter :
ALL: 127.0.0.1 localhost
sshd: ALL

vim /etc/hosts.deny
ajouter :
ALL: ALL

quelques trucs dans le bash système :

vim /etc/bash.bashrc
ajouter :

alias ls='ls --color=auto'
alias ll='ls -la'
alias free='free -m'
alias df='df -h'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias grep='grep --color'
alias vi='vim'
# activation date_heure dans la commande history
export HISTTIMEFORMAT="%Y/%m/%d_%T : "
PATH=~/bin:$PATH
export PATH


Un peux de couleurs dans vim :

vim /etc/vimrc
et ajoutez :
set background=dark
:syntax on


Bon, à ce point là, on à un système prêt. On vas redemarrer la Dedibox :
exit
umount /newarch/{boot,proc,sys,dev}
umount /newarch


et repassez votre  votre dedibox en mode normal.

3) YAOURT

La dernière opération consiste à instaler YAOURT. Vous vous reconnectez avec toto  (attention à supprimer l'ancienne clé publique dans vote .ssh/know_hosts).

sudo su -
vi /etc/pacman.conf

et ajouter :
[multilib]
Include = /etc/pacman.d/mirrorlist

[archlinuxfr]
Server = http://repo.archlinux.fr/x86_64


et enfin :
pacman -Sy yaourt

voilà! Dotre Dedibox est installée avec Archlinux. pensez à installer un firewall  et à mettre un fail2ban car le reseau Dedibox est particulièrement agressif (j'entend par là que dès que votre Dedibox sera en ligne, elle sera scannée, testée par des méchant pas beaux qui voudrons la pirater)

Et bien sur, je suis à l'écoute de toute suggestion sur cet article, et notement pour les corrections éventuelles.