blondeau.net

(net)work in progress

Une Gentoo dans un D-Link DNS-323

31/01/2012: En cours de réécriture pour prendre en compte baselayout-2.0.3 et 
            openrc-0.9.4, mettre un kernel 2.6.39.6, corriger quelques merdouilles
            et essayer de vous filer un truc vraiment fini et qui marche! ;)
            Bref, attendez l'annonce officielle que c'est fini avant de vous lancer !

 

DLink DNS-323

Bon, donc vous voulez installer une vraie Gentoo d’administrateur système bien barbu sur votre D-Link DNS-323 mais vous vous cognez la tête contre les murs ? Faut dire aussi que c’est un peu du grand n’importe quoi, quand même… Installer une Gentoo sur un truc qui va mettre plus de moult heures à vous compiler un noyau, est-ce bien raisonnable ?

Ben, moi, je dis que ouais ! Mais va falloir mettre quelques trucs en place comme de la cross-compilation et du distcc pour que ce soit viable.

Le but est, pour l’instant, de faire une installation non destructrice. On ne va pas écraser le noyau dans le firmware, mais utiliser le principe du ‘fun_plug’ pour remplacer dynamiquement le noyau en mémoire par un tout neuf fraîchement compilé (un 2.6.37 actuellement) et charger un initramfs qui lancera la Gentoo installée sur une clé USB branché dans le port théoriquement réservé à l’imprimante. Bien évidemment, on gèrera le ventilo et la mise en veille des disques durs.

Le gros avantage de la Gentoo sur la clé USB, c’est que ça laisse les disques peinards quoi qu’on fasse. Pas de swap, pas de logs, bref, pas d’accès disques à la noix qu’il faut traquer pour être sûr qu’ils restent en veille 24h/24 si on ne leur demande rien. Bref, ça nous donne un super p’tit serveur qui ne fait pas un bruit, qui ne consomme pas grand chose, et sur lequel on peut faire tourner un nombre raisonnable de services.

Coté matos, je précise que mon DNS-323 est une révision B1 avec un firmware 1.06. Il intègre deux disques identiques de 500 Go formatés en mode ‘Standard’, donc sans aucune configuration RAID. Je backup un disque sur l’autre quotidiennement avec rsync en utilisant l’option ‘–link-dest’ qui permet d’avoir un backup ‘à la TimeMachine’. Je détaillerai ça plus tard.

Sinon, juste un dernier conseil avant de commencer: fabriquez vous un câble série pour pouvoir avoir accès à la console en cas de besoin. En aveugle c’est faisable, mais quand ça merde, y’a un gros risque de foulure du cerveau. Vous pouvez trouver la doc correspondante ici.

Allez, on commence !

Je fais comme si votre DNS-323 sortait directement de sa boite, et que vous n’ayez fait que le configurer (Hostname, IP/Netmask/GW, utilisateurs, etc…) donc comme si on partait de la base. A vous de voir où prendre le train en marche selon votre cas.

1) Installation de ffp

Je ne réinvente pas la roue ici. On installe ffp (fonz fun_plug) dans sa version 0.5.

On commence par copier d’une manière ou d’une autre les fichiers fun_plug et fun_plug.tgz à la racine de Volume_1 et on reboot le DNS-323 via l’interface Web. Si ça prend plus de temps que d’habitude et que le disque de droite s’affole, c’est super bon signe.

A la fin, on se retrouve normalement avec un répertoire ffp, un fichier ffp.log, une désintégration spectaculaire du fichier fun_plug.tgz, et un accès telnet au DNS-323.

En cas de problème, allez donc faire un tour sur le HowTo ffp.

Histoire de tester tout ça, on va juste se créer un petit coin tranquille pour travailler:

telnet dns-323 
mkdir -p /mnt/HD_a2/DNS-323/Files 

2) Installation de cleanboot

Histoire de pouvoir faire des reboots à gogo, on va installer cleanboot 2.1-ffp05, ce qui va nous permettre de garder les filesystems des disques propres.

cd /mnt/HD_a2/DNS-323/Files
wget http://pof.eslack.org/dns323/cleanboot-2.1-ffp05.tgz
funpkg -i cleanboot-2.1-ffp05.tgz
chmod a+x /ffp/start/cleanboot.sh
/ffp/start/cleanboot.sh start

3) Modification du répertoire d’installation de ffp (facultatif)

Vu que j’aime bien que ça ne soit pas trop le bordel à la racine de mes disques durs, je passe par cette petite étape histoire de pouvoir regrouper dans un répertoire tous les petits outils qui ne font pas partie intégrante de la Gentoo.

Vous n’êtes pas du tout obligé de le faire, et le reste de ce tutorial restera tout de même valide:

cd /mnt/HD_a2/DNS-323
cp -a /mnt/HD_a2/ffp .

Puis, on édite le fichier /mnt/HD_a2/fun_plug pour modifier la variable FFP_PATH:

FFP_PATH=/mnt/HD_a2/DNS-323/ffp

on reboot:

reboot

On attends le temps qu’il faut, et on fait le ménage:

telnet dns-323
rm -rf /mnt/HD_a2/ffp

4) Installation de fsck

Zou ! Installation d’une seconde création de fonz: fsck. Pour deux raisons. La première c’est que des fois, en cas de galère, ça permet de booter un noyau et une image initrd qui permettent de faire un fsck des disques. La seconde, c’est qu’on va utiliser les merveilleux modules reloaded*.ko pour écraser en live et proprement le noyau courant, en le remplaçant par notre tout neuf à nous:

cd /mnt/HD_a2/DNS-323/ 
rsync -av inreto.de::dns323/fsck . 

Et pendant qu’on y est, on va rapatrier la totalité des packages ffp supplémentaires, et installer bash:

cd /mnt/HD_a2/DNS-323/Files
rsync -av inreto.de::dns323/fun-plug/0.5/packages .
cd packages
funpkg -i bash-*.tgz

5) Gentoo kernel and initramfs

Maintenant qu’on a bien pompé et bien exploité le travail des autres, on va pouvoir passer au mien. On va donc décompresser dans répertoire astucieusement nommé gentoo le nécessaire à reload, les initramfs et le noyau:

cd /mnt/HD_a2/DNS-323
wget https://www.blondeau.net/Files/DNS-323/reload-gentoo/reload-gentoo-latest.tar.bz2
tar xvjf reload-gentoo-latest.tar.bz2
cd gentoo
ls -la

6) Et c’est parti !!!

A partir de maintenant, il serait préférable que votre clé USB soit branchée dans le port imprimante de votre DNS-323, parce qu’on va carrément s’en servir.

Nous allons appeler le script tools.sh, qui va remplacer le kernel en mémoire par le 2.6.37 fraichement téléchargé et lancer l’initramfs-tools qui va nous permettre de partitionner la clé, et d’y installer notre gentoo.

On commence par reloader tout ça:

./tools.sh

Dans votre terminal, vous devriez voir apparaitre cela, avant de perdre la main:

Kernel:         /mnt/HD_a2/DNS-323/gentoo/zImage-2.6.37
Initramfs:      /mnt/HD_a2/DNS-323/gentoo/initramfs-tools.gz
ExtraCmd:=      console=ttyS0,115200 logfile=/mnt/HD_a2/tools.log

machtype:       1542
cmdline:        console=ttyS0,115200 logfile=/mnt/HD_a2/tools.log ip=192.168.x.x::192.168.x.x:255.255.255.0:dns-323:eth0:none

Si vous avez une console série, vous devriez y voir cela: reload-tools.txt

Une trentaine de secondes plus tard, l’accès telnet sur votre DNS-323 devrait être à nouveau disponible sur son adresse IP classique (c’est à dire celle configurée dans le setup officiel D-Link).

Si vous avez le moindre problème ici, et que vous n’avez pas modifié le script tools.sh, vous devriez pouvoir jeter un oeil au fichier /mnt/HD_a2/tools.log (ou /Volume_1/tools.log via samba) après avoir rebooté votre DNS-323 pour voir ce qui s’est passé. Tenez moi au courant de ce que vous trouvez (ou pas) dedans.

7) Non-Partitionnement, formatage est installation d’une archive stage3

Il est temps maintenant de dire au revoir à toutes les données que vous avez laissé sur votre clé, puisqu’on va formater tout ça. On va donc se connecter en telnet (login root, pas de mot de passe) sur notre bousin, et formater directement /dev/sda sans faire de partitionnement. Pourquoi ne pas faire de partitionnement, me demandez-vous ? Tout simplement parce que les périphériques de stockage mémoire (Clés USB et SSD) nécessitent un alignement correct des partitions pour obtenir des vitesses d’écriture optimales. Je ne vais pas vous expliquer tout ça ici, mais en résumé, il faut s’aligner avec le “Erase Block Size”.

Dans notre cas, nous n’avons pas besoin d’avoir de partition bootable, donc la façon le plus simple de s’aligner automatiquement, c’est de ne pas faire de partition du tout, et de créer directement notre filesystem sur l’intégralité de la clé, donc sur /dev/sda.

Par sécurité, on va lancer un fdisk pour vérifier que votre clé USB est bien accessible via /dev/sda. Si ce n’est pas le cas, ne poursuivez pas ce tutorial car vous risqueriez de formater autre chose que votre clé !!!

Si vous le voulez, vous pouvez en profiter pour tester la présence d’éventuels badblocks sur la clé. Ca prend un peu plus de temps, mais ça peut éviter des galères futures. (Si ça vous saoule, virez juste les options ‘-c -c’ du mkfs.ext3).

telnet dns-323
fdisk /dev/sda     # Puis tapez 'p' pour afficher les infos de partitionnement
                   # et vérifier qu'il s'agit bien de votre clé.
                   # et enfin 'q' pour quitter fdisk

mkfs.ext3 -c -c -i 8192 /dev/sda    # /dev/sda is entire device, not just one partition!
                                    # Proceed anyway? (y,n) y
mkdir /mnt/gentoo
mount /dev/sda /mnt/gentoo
cd /mnt/gentoo

Ensuite, on va rapatrier une archive stage3 armv5tel ainsi qu’un arbre portage, détarer tout ça, créer un fichier de swap et monter les disques du DNS-323

C’est ici que vous allez pouvoir apprécier les performances de votre clé USB, surtout lors du détarage de l’arbre portage car on ne lui demandera jamais rien de pire: créer plus de 100000 fichiers et répertoires d’un seul coup.

Les DNS utilisés lors des wget sont les DNS publics de Google, donc ça devrait marcher chez tout le monde. Si vous avez des problèmes de résolution de noms, modifiez le fichier /etc/resolv.conf pour y faire apparaitre les DNS de votre FAI.

PENSER A VERIFIER LA DATE !!!

wget ftp://ftp.free.fr/mirrors/ftp.gentoo.org/releases/arm/autobuilds/20120127/armv5tel-softfloat-linux-gnueabi/stage3-armv5tel-20120127.tar.bz2
wget ftp://ftp.free.fr/mirrors/ftp.gentoo.org/snapshots/portage-latest.tar.bz2
tar xjpf stage3-*.tar.bz2
tar xjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
cp -a /lib/modules /mnt/gentoo/lib
mkdir /mnt/gentoo/var/swap
dd if=/dev/zero of=/mnt/gentoo/var/swap/swapfile01 bs=4096 count=128001
mkswap /mnt/gentoo/var/swap/swapfile01
swapon /mnt/gentoo/var/swap/swapfile01
mkdir mnt/HD_a2 mnt/HD_b2
mount /dev/sdb2 /mnt/HD_a2
mount /dev/sdc2 /mnt/HD_b2

8) Installation de la toolchain ARM sur un ordi qui va vite

Bon, comme vous l’avez certainement compris, il ne va pas falloir s’attendre à des performances hors du commun avec votre DNS-323… Et le problème, c’est que des performances hors du commun, c’est quand même assez appréciable sur une Gentoo.

Alors comme l’étape n°9 va concerner la modification des fichiers de config, et que généralement, ça prends toujours un peu de temps, on va en profiter pour lancer l’installation de crossdev et de la chaine de compilation ARM sur votre gros ordi de malade qui fait bien évidemment déjà tourner une gentoo dernier cri.

Attention ! crossdev repose sur l’utilisation d’un overlay. Si vous n’en avez pas chez vous, créez en un en rajoutant une ligne “PORTDIR_OVERLAY=/usr/local/portage” dans votre /etc/make.conf, et en faisant un “mkdir /usr/local/portage”.

Dans un premier temps, sur l’ordi qui va vite, on va installer crossdev et distcc:

emerge -av crossdev distcc

Une fois que c’est bon, il faut éditer le fichier /etc/conf.d/distccd pour rajouter les directives –listen et –allow, et démarer le serveur distccd:

vi /etc/conf.d/distccd
rc-update add distccd default
/etc/init.d/distccd start

Ensuite, sur le DNS-323, on va lister les versions installées des packages binutils, gcc, kernel-headers et glibc pour pouvoir les refiler plus tard à crossdev. Une commande magique pour lister tout ça sans se fouler la tête peut être la suivante:

ls -d /mnt/gentoo/var/db/pkg/*/* | egrep "binutils-[0-9]|gcc-[0-9]|linux-headers-|glibc" | xargs -n 1 basename

Chez moi, aujourd’hui, ça me donne ça:

binutils-2.21.1-r1
gcc-4.5.3-r1
linux-headers-2.6.39
glibc-2.13-r4

Et là, on a tout ce qu’il nous faut pour compiler notre toolchain ARM avec crossdev ! Donc sur l’ordi qui va vite, on lance la commande suivante:

crossdev --b 2.21.1-r1 --g 4.5.3-r1 --k 2.6.39 --l 2.13-r4 --target armv5tel-softfloat-linux-gnueabi

Comme c’est sensé durer un peu longtemps, vous pouvez passer au paragraphe suivant pour attaquer la modif des fichiers de conf.

 

 

Attention ! A partir de cette limite, l’article passe dans un état non vérifié, ce qui veut dire qu’il ne peut plus vraiment être suivi à la lettre. Il s’agit du brouillon des commandes qu’il vous faudra saisir par la suite, mais que je n’ai pas encore validé par une ré-installation de mon coté. Mais comme vous pouvez le constater, ça bouge, et ça peut toujours être intéressant de jeter un oeil dessus.

 

9) Modification des fichiers de configuration

Chez moi, parce que je possède un backup bien spécifique et que je n’ai pas besoin d’éditer de fichiers particuliers, je balance les commandes suivantes:

cd /tmp
cp -a /mnt/HD_b2/dns-323/gentoo/current/var/tmp/private-gentoo-files.tar.bz2 .
tar xvjf private-gentoo-files.tar.bz2

Mais comme ça ne conviendrait pas chez vous, je vous propose de vous baser sur l’archive suivante que j’ai épurée et légèrement adaptée rien que pour vos beaux yeux:

cd /tmp
wget https://www.blondeau.net/Files/DNS-323/config-files/public-gentoo-files-latest.tar.bz2
tar xvjf public-gentoo-files-latest.tar.bz2

Voici ce que ça devrait donner chez vous:

gentoo-files/
gentoo-files/etc/
gentoo-files/etc/inittab
gentoo-files/etc/locale.gen
gentoo-files/etc/localtime
gentoo-files/etc/make.conf
gentoo-files/etc/env.d/
gentoo-files/etc/env.d/02locale
gentoo-files/etc/local.d/
gentoo-files/etc/local.d/99fancontrol.start
gentoo-files/etc/conf.d/
gentoo-files/etc/conf.d/hostname
gentoo-files/etc/conf.d/hwclock
gentoo-files/etc/conf.d/net
gentoo-files/etc/resolv.conf
gentoo-files/etc/portage/
gentoo-files/etc/portage/package.keywords
gentoo-files/etc/portage/package.use
gentoo-files/etc/fstab
gentoo-files/usr/
gentoo-files/usr/local/
gentoo-files/usr/local/bin/
gentoo-files/usr/local/bin/fancontrol.pl
gentoo-files/usr/local/portage/

Maintenant, il va falloir que vous jetiez un coup d’oeil à tous ces fichiers pour faire les modifications adéquates. La configuration réseau contenue dedans a pour hostname dns-323, pour domaine yourdomain.net, une IP fixe en 192.168.0.1/24, une gateway en 192.168.0.254 et les DNS de chez Free. Donc il vous sera nécéssaire d’éditer au minimum les fichiers suivants:

cd gentoo-files
vi etc/conf.d/hostname
vi etc/conf.d/net

Pour le reste des fichiers, je vous laisse juger par vous même. Voici cependant quelques infos:

Le fichier /etc/fstab se base sur l’utilisation d’une clé non partitionnée, donc si vous avez opté pour une solution différente n’oubliez pas de faire les adaptations nécessaires.

Dans /etc/inittab, j’ai commenté les lignes concernants les terminaux, et j’ai modifié celle de la console série pour fixer la vitesse de communication.

Le fichier /etc/locale.gen déclare les locales en_US.ISO-8859-1 et en_US.UTF-8, et /etc/localtime est une copie de /usr/share/zoneinfo/Europe/Paris.

Le fichier /etc/make.conf devrait être assez générique… Vérifiez juste que la variable USE corresponde à vos attentes, modifiez éventuellement le GENTOO_MIRRORS, et revenez jouer avec le MAKEOPTS quand vous commencerez à cross compiler avec distcc.

Enfin, le fichier /etc/local.d/99fancontrol.start execute le script /usr/local/bin/fancontrol.pl qui gère la vitesse de rotation du ventilateur en fonction de la température du processeur, ainsi que l’éclairage du bouton power pour visualiser si les disques sont en veille ou non.

Voila, voila… A partir du moment où vous êtes sur de vos modifs, vous n’avez plus qu’à balancer la commande suivante pour remplacer les vrais fichiers de conf:

cd /tmp/gentoo-files
tar cvf - * | (cd /mnt/gentoo; tar xvf -)

Et ça continue…

cd
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash

env-update
source /etc/profile
export PS1="(chroot) $PS1"
passwd

locale-gen
ln -nfs net.lo /etc/init.d/net.eth0
rc-update add net.eth0 default
rc-update add sshd default
rc-update del termencoding boot
rc-update del keymaps boot
exit

swapoff /mnt/gentoo/var/swap/swapfile01 
umount /mnt/gentoo/proc
umount /mnt/gentoo/dev
umount /mnt/gentoo
umount /mnt/HD_b2
umount /mnt/HD_a2
fsck.ext3 -f /dev/sda
reboot

On attends 1 mn 30 environ, et on se reconnecte en telnet:

telnet dns-323

Et on boot pour la première fois notre gentoo.

cd /mnt/HD_a2/DNS-323/gentoo
./gentoo.sh

Ce coup ci, dans votre terminal, vous devriez voir apparaitre celà, avant de perdre la main:

Kernel:         /mnt/HD_a2/DNS-323/gentoo/zImage-2.6.37
Initramfs:      /mnt/HD_a2/DNS-323/gentoo/initramfs-gentoo.gz
ExtraCmd:=      console=ttyS0,115200

machtype:       1542
cmdline:        console=ttyS0,115200 ip=192.168.x.x::192.168.x.x:255.255.255.0:dns-323:eth0:none

Quand à votre éventuelle console série, elle devrait vous dire un truc du genre: reload-gentoo.txt

Et enfin, après avoir attendu 2mn environ (il y a la génération des clés ssh à faire):

ssh root@dns-323

Si vous utilisez un backup:

export DNS323_CONFIG_FILES=/mnt/HD_b2/dns-323/gentoo/current

Et puis c’est reparti !

rm /portage-latest.tar.bz2 /stage3-armv5tel-*.tar.bz2

emerge hdparm
cp -a $DNS323_CONFIG_FILES/etc/conf.d/hdparm /etc/conf.d/
/etc/init.d/hdparm start
rc-update add hdparm default

emerge distcc # Ca va être long puisque distcc n'est pas encore installé
              # et qu'il va falloir compiler (entre autres) glib, et en plus
              # vous verrez une erreur du type:
              # !!! Directory does not exist: '/usr/lib/distcc/bin'
              # !!! Disabled FEATURES='distcc'
              # mais c'est pas grave... Ca ira mieux après !

# Il ne faut continuer que si crossdev et distcc sont ok sur le kivavit !

distcc-config --set-hosts "zeitoun,cpp,lzo"
cd /usr/lib/distcc/bin
rm c++ g++ gcc cc
cp -a $DNS323_CONFIG_FILES/usr/lib/distcc/bin/armv5tel-softfloat-linux-gnueabi-wrapper .
chmod a+x armv5tel-softfloat-linux-gnueabi-wrapper
ln -s armv5tel-softfloat-linux-gnueabi-wrapper cc
ln -s armv5tel-softfloat-linux-gnueabi-wrapper gcc
ln -s armv5tel-softfloat-linux-gnueabi-wrapper g++
ln -s armv5tel-softfloat-linux-gnueabi-wrapper c++
### USER_TIME_QUOTA de 3.8 à ?? pour les "Bailing out because include server spent more than 3.8s" ?
### vi /usr/lib/python2.6/site-packages/include_server/basics.py

echo "alias emerge='pump emerge'" >> /root/.bash_profile
source /root/.bash_profile

cd

emerge --sync
emerge app-misc/screen
screen

emerge syslog-ng vixie-cron
cp -a $DNS323_CONFIG_FILES/etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf
cp -a $DNS323_CONFIG_FILES/etc/syslog-ng/syslog-ng.conf /etc/syslog-ng
/etc/init.d/syslog-ng start
rc-update add syslog-ng default
cp -a $DNS323_CONFIG_FILES/etc/crontab /etc/
/etc/init.d/vixie-cron start
rc-update add vixie-cron default

emerge shorewall shorewall6
cd $DNS323_CONFIG_FILES/etc/shorewall
cp -a interfaces policy routestopped rules shorewall.conf zones /etc/shorewall
/etc/init.d/shorewall start
rc-update add shorewall default
cd $DNS323_CONFIG_FILES/etc/shorewall6
cp -a interfaces policy routestopped rules shorewall.conf zones /etc/shorewall6
/etc/init.d/shorewall6 start
rc-update add shorewall6 default

emerge -uDNav world

emerge apcupsd bind-tools colordiff dhcp eix ethtool gentoolkit logrotate lsof 
     netkit-telnetd ntp samba mlocate tcpdump tinyproxy vim wakeonlan

cd $DNS323_CONFIG_FILES
cp -a etc/apcupsd/apcupsd.conf /etc/apcupsd/apcupsd.conf
cp -a etc/dhcp/dhcpd.conf /etc/dhcp
cp -a etc/dispatch-conf.conf /etc
cp -a etc/updatedb.conf /etc/
cp -a etc/samba/smb.conf /etc/samba/

/etc/init.d/apcupsd
/etc/init.d/dhcpd start
/etc/init.d/ntp-client start
/etc/init.d/ntpd start
rc-update add apcupsd default
rc-update add dhcpd default
rc-update add ntp-client default
rc-update add ntpd default

groupadd  -g 1000 olivier
useradd -c "Olivier Blondeau" -d /home/olivier -u 1000 -g olivier -G wheel -m -s /bin/bash olivier
passwd olivier
smbpasswd -a olivier
/etc/init.d/samba start
rc-update add samba default

Auto-Power-on circuits: http://forum.dsmg600.info/t1602-Auto-start-powerup%3F.html

10 Comments

  1. A quand la suite?

    😀

  2. Depuis quelques semaines, je comptais redérouler une installation complète du bouzin histoire de faire les copier-coller adéquates pour que cet article puisse être utile à quelqu’un d’autre… Et que vois-je aujourd’hui ? Que j’ai justement un quelqu’un d’autre qui réclame !!!

    Ca motive, ça 😉

    Donc, allez, je m’engage devant l’Internet tout entier: “Le début bougera au moins cette semaine, ou la semaine prochaine !”

    Pour la petite histoire, j’avais de grosses instabilités du coté du noyau: des fois il ne tenait pas plus de 2 jours, d’autres fois, il était super stable, mais faisait planter la moitié de mes emerge. Et pour couronner le tout, le fait d’activer ou de désactiver certaines options du noyau qui n’avaient à priori aucun rapport avec quoi que ce soit changeait complètement sa réaction. Bug du noyau sur l’archi ARM, bug gcc ou bug sandbox, je sais pas trop…

    Mais bon, bref, depuis un bon mois, j’ai un noyau 2.6.31 stable qui, en plus, laisse emerge faire son boulot.

    Alors…Partant pour béta-tester ? 😉

    Juste pour titiller: c’est trop de bonheur une fois que ça marche !

  3.  
    Salut,
    déjà, merci pour cet article détaillé et inédit sur le NET (et j'ai cherché…).
    En fait je cherche à faire la même chose avec Debian mais ça m'avance déjà beaucoup!
    Maintenant, mon problème:
    j'ai essayé sur mon NAS et impossible de me connecter après le reload, et pourtant il répond toujours au ping!
    Cela vient peut être de la révision de mon NAS (C1) mais il me semblait qu'elle était quasiment identique au B1 (le C1 possède un système de reboot automatique en cas de pb)…
    Peux tu expliquer comment tu compiles ton kernel STP?
    Sinon, est-il possible d'utiliser le module netconsole pour suivre le reload?
    Merci d'avance,
    Fred

    • Salut Fred,
      Je compile mon noyau sur un PC qui tourne sous Gentoo, et sur lequel j’ai un cross-compilateur arm. Je vais te mettre les .config correspondants aux différents noyaux disponibles ici, si ça peut t’aider: http://www.blondeau.net/DNS-323/config-files/
      Concernant la netconsole, je l’ai utilisée au début avant de me construire mon cable série, mais dans mes talonnements de stabilité du noyau, j’ai eu tendance à réduire les options sélectionnées au strict minimum. Je vais essayer de te compiler un kernel incluant la netconsole d’ici peu.
      Pour le détail de la cross-compilation ça va venir… J’attends juste un nouvel autobuild arm de la Gentoo incluant gcc-4.3.4 pour finir l’article.
      Content de voir qu’il sert à quelqu’un en tout cas 😉
      Olivier.

  4. Merci pour les .config et le noyau avec netconsole!!!
    Et désolé pour mes désastreux multiposts il m'a fallu un peu de temps pour comprendre qu'il y avait une validation. Tu as dû bien rigoler 🙂
    Juste un truc: pour le netconsole il est configuré comment (vers quel IP/port)?
    Re-merci et continue comme ça c'est très utile 😉
    Fred.

    • Salut Fred,
      Pas de problème pour le multipost 😉
      Pour le netconsole, il faut que tu rajoutes une option kernel dans le tools.sh qui sera de la forme:

      netconsole=[src-port]@[src-ip]/[device],[tgt-port]@tgt-ip/[tgt-macaddr]

      donc, par exemple:

      netconsole=@192.168.1.1/,6666@192.168.1.2/

      enverra tes messages noyau sur le port 6666 de l’adresse 192.168.1.2, et tout ça en provenance de 192.168.1.1

      Sur ta machine cible, c’est à dire la 192.168.1.2, tu devras lancer la commande suivante:

      nc -l -u -p 6666

      Pour info, un kernel 2.6.31.6 avec support netconsole est en test en ce moment. S’il tient la route, il deviendra le kernel par défaut de ce tutorial.

      Tiens moi au courant,

      Olivier.

  5. bonjour,

    un peu dans la même problèmatique que Fred j’ai besoin de mettre à jour le noyau reloaded pour ma debian sur mon DNS323.
    Malheureuseument tes .config ne sont plus dispo.

    tu as un backup qui traine ?

    Et as tu des infos sur la chaine de crosscompilation et la preparation du noyeau pour le module reloaded ?

    Merci

    • Bonjour Seb,

      Je viens de corriger tout ça. Le .config de mon dernier kernel compilé (2.6.35.6) se trouve maintenant ici: http://www.blondeau.net/DNS-323/config-files/

      Pour la cross-compilation, c’est expliqué dans dans l’article, mais c’est plutôt spécifique à la gentoo et comme je ne pratique plus la Debian depuis plusieurs année, je ne saurais pas trop te dire comment y installer un cross-compilateur ARM.

      Si ça peut t’aider, tu trouveras aussi mon kernel compilé juste à coté du .config 😉

      Olivier.

  6. Salut,

    j’essaie de me lancer dans la meme approche pour le DNS-320 (le grand frere avec un proc armv5 a 800Mhz), et la question se pose pour la génération initiale du noyau (point 6), sachant que D-Link founit un antédiluvien 2.6.22.18 que je n’arrive pas a faire prendre en compte par crossdev. Un diff intelligent entre ton .config et celui de DLink me permettrait-il d’avoir un truc qui peut (commencer à) tourner ?

    Merci de ton aide

    • Un diff entre les .config risque de générer un bon paquet de lignes vu l’écart entre les versions. J’avais jeté un rapide coup d’œil au hardware du 320 il y a quelque temps, et je m’étais dit que mon noyau devrais y tourner aussi. Ca n’est pas le cas de ton coté ? Je vais régénérer prochainement un kernel 2.6.37.x ou un 2.6.38.x. Si tu veux un coup de main pour le tester et investiguer sur un DNS-320, pas de problème.Olivier.