Auteur : Emmanuel Ravion

Date : Mars 2008

OpenBSD sur Alpha avec un disque IDE

Sommaire

  1. Introduction
  2. Installation d'OpenBSD sur les disques IDE et SCSI
  3. Récupération des sources et configuration du noyau
  4. Backup du kernel d'origine
  5. Recompilation du noyau
  6. Installation du nouveau noyau
  7. Faire taire le disque SCSI
  8. Extraits du dmesg de l'AlphaStation 200
  9. Documentation de référence

1. Introduction

Je voulais installer OpenBSD sur une machine Alpha. Mais comme ces machines sont anciennes , elles utilisent des disques SCSI qui sont certes plus robustes, mais qui font aussi beaucoup de bruit. Je voulais pouvoir faire tourner la machine sans casque anti-bruit. Je propose donc une solution pour booter sur le disques SCSI puis faire en sorte que le système utilise le disque IDE pour le reste du temps en modifiant le noyau. Pour ce faire, il faut ajouter une carte PCI/IDE compatible et un disque IDE dans la machine. Le disque IDE donne aussi de meilleurs temps de réponse ce qui est un plus non négligeable. La prochaine étape sera de passer sur un disque SATA. Juste pour le fun !

2. Installation d'OpenBSD sur les disques IDE et SCSI

Il faut donc faire 2 installations. Une sur le disque SCSI et une sur le disque IDE.
Installation standard sur sd0 (le disque SCSI) :

>>> boot DKA400 (adresse du CDROM)

Pour différencier la machine bootant sur le disque SCSI et celle bootant sur le disque IDE, j'utilise alpha-scsi pour le SCSI et alpha-ide pour l'IDE. Pour partitionner le disque SCSI, je propose une configuration simple : 1 seule partition. Au final, on n'aura plus besoin de ce disque qu'au démarrage.

/dev/sd0a / ffs rw 1 1

Faire ensuite une installation standard sur (le disque IDE). Le disque n'est pas présent sur l'interface SRM, mais comme la carte PCI/IDE est reconnue par le CD d'installation d'OpenBSD, il est possible d'installer un système dessus. Comme précédemment :

>>> boot DKA400 (adresse du CDROM)

On donne le nom alpha-ide à la machine. Le partitionnement est là plus élaboré, puisque ce sera le disque final de la machine. A chacun d'adapter en fonction de ses besoins. J'utiliserai la partition /dev/wd0f pour les sources du noyau et sa recompilation. Je profiterai ainsi de meilleures performances en I/O disque. Voici donc la fstab correspondante :

/dev/wd0a / ffs rw 1 1

/dev/wd0f /home ffs rw,nodev,nosuid 1 2

/dev/wd0d /usr ffs rw,nodev 1 2

/dev/wd0e /var ffs rw,nodev,nosuid 1 2

3. Récupération des sources et configuration du noyau

Démarrer alpha-scsi en bootant la machine sur sd0 (le disque SCSI)

Seuls les disques SCSI sont vus par SRM (le "bios" de Digital).

>>> boot dka0

On assiste au premier démarrage de la machine sur son disque SCSI.
Je propose de monter la future partition /home du disque IDE sur le /usr/src du disque SCSI. Ceci permettra de gagner du temps lors de la décompression des sources. On pourra ensuite déplacer ces sources une fois la machine démarrée sur le disque IDE.

[alpha-scsi]# mount /dev/wd0f /usr/src

La récupération des sources pour recompiler le noyau se fait de deux façons différentes

  • Soit sur un référentiel OpenBSD : il faut alors copier les fichiers src.tar.gz et sys.tar.gz à copier dans /usr/src :

    [alpha-scsi]# cp src.tar.gz /usr/src

    [alpha-scsi]# cp sys.tar.gz /usr/src

    puis exécuter un tar xvzf src.tar.gz et enfin un tar xvzf sys.tar.gz.

  • Soit sur le serveur CVS :

    [alpha-scsi]# cd /usr

    [alpha-scsi]# export CVSROOT=anoncvs@anoncvs.skyrock.com:/cvs/openbsd

    [alpha-scsi]# cvs -d$CVSROOT checkout -rOPENBSD_4_0 -P src

    4. Backup du kernel d'origine

    Avant de créer un nouveau kernel, il est plus sage d'effectuer une copie de sauvegarde du kernel actuel.

    [alpha-scsi]# cp /bsd /bsd.orig

    Modification du disque "root" dans le fichier /usr/src/sys/arch/alpha/conf/GENERIC. C'est là qu'on positionne l'aiguillage qui indiquera au système que son disque est le disque IDE et non celui sur lequel il vient de booter.

    Pour celà, on commente la ligne "config bsd swap generic", et on ajoute la ligne  "config bsd root on wd0a".

    5. Recompilation du noyau

    C'est l'étape qui prend le plus de temps. Comme la machine tourne sur son disque SCSI qui est bruyant, c'est l'occasion d'aller faire autre chose dans une autre pièce. Ou d'aller se promener s'il fait beau :o)

    [alpha-scsi]# cd /usr/src/sys/arch/alpha/conf

    [alpha-scsi]# config GENERIC

    [alpha-scsi]# cd ../compile/GENERIC


    [alpha-scsi]# time make clean

    temps sur Alphastation 200 :  

    0m7.23s real

    0m3.62s user

    0m1.86s system

    temps sur Alphastation 800 :

    0m1.57s real

    0m0.44s user

    0m0.46s system


    [alpha-scsi]# time make depend

    temps Alphastation 200 :

    11m25.87s real

    8m17.18s user

    2m47.30s system

    temps Alphastation 800 :

    5m17.31s real

    3m39.87s user

    1m9.82s system


    [alpha-scsi]# time make

    [...lots of output...]

    temps Alphastation 200 : 

     

    254m18.35s real  

    239m28.79s user

    11m33.38s system

    (Soit 4h16 minutes)

    temps Alphastation 800

    114m4.04s

    real   107m5.85s user

    5m9.55s system

    Pour suivre l'avancée de la compilation on peut regarder combien de fichiers sont présents dans /usr/src/sys/arch/alpha/compile/GENERIC. Le nombre de fichiers est dépendant de la version l'OpenBSD. 825 fichiers pour une 4.2. (cette méthode n'est pas très fiable, je n'ai pas fait de tests pour la valider. Mais le principe est là ).  J'ai fait mon installation le 17 Octobre. Je compte donc le nombre de fichiers créés à cette date.

    [root@alpha-scsi]# cd /usr/src/sys/arch/alpha/compile/GENERIC/

    [root@alpha-scsi]# ls -rtl | grep "Oct 17" | wc -l

    825

    6. Installation du nouveau noyau

    On touche au but. Le noyau est recompilé, il ne reste plus qu'à l'installer :

    [root@alpha-scsi]# make install

    rm -f /obsd

    ln /bsd /obsd

    cp bsd /nbsd

    mv /nbsd /bsd

    On redémarre la machine pour qu'elle prenne en compte ce nouveau noyau :

    [root@alpha-scsi]# reboot

    On assiste au démarrage de la machine sur son disque SCSI, puis le disque IDE prend le relais. Le système procédera notamment à la génération des clés RSA/DSA pour OpenSSH.

    7. Faire taire le disque SCSI

    Une fois le nouveau kernel (/bsd du disque SCSI) chargé, c'est le système sur le disque IDE qui sera utilisé.
    On peut donc stopper le disque SCSI qui tourne pour rien :

    [alpha-ide]# scsi -f /dev/rsd0c -v -c "1b 0 0 0 0 0"

    SCIOCCOMMAND ioctl: Command accepted.

    return status 1 (Command Timeout) after 2000 ms host adapter status 254

    Command out (6 of 6):

    1b 00 00 00 00 00

    No sense sent.

    Cette ligne de commande peut-être ajoutée dans le fichier /etc/rc.local (qui est quant à lui sur le disque IDE).

    À faire pour remettre les sources à leur place et récupérer /home : déplacer le contenu du point de montage /home/* vers /usr/src :

    [root@alpha-ide]# mv /home/* /usr/src/

    8. Extraits du dmesg de l'AlphaStation 200

    On notera que la carte PCI/IDE utilise une puce reconnue par OpenBSD.

    [root@alpha-ide]# dmesg

    AlphaStation 200 4/233, 233MHz

    8192 byte page size, 1 processor.

    total memory = 134217728 (131072K)

    2 disks SCSI testés :

    sd0 at scsibus0 targ 0 lun 0: <SEAGATE, ST34573N,5742>SCSI2 0/direct fixed

    sd0 at scsibus0 targ 2 lun 0: <SEAGATE, ST318404LSUN18G,5221>SCSI3 0/direct fixed

    1 carte PCI/IDE testée :

    pciide0 at pci0 dev 12 function 0 "Promise PDC20268" rev 0x01: DMA,

    channel 0 configured to native-PCI, channel 1 configured to native-PCI

    pciide0: using isa irq 10 for native-PCI interrupt

    wd0 at pciide0 channel 0 drive 0: <IC35L060AVV207-0>

    wd0: 16-sector PIO, LBA48, 57220MB, 117187500 sectors

    wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 2

    9. Documentation de référence

  • Début de pageDébut de pageDébut de page

    Dernière mise à jour de cette page : Lundi 31 mars 2008
    Version : 1.01
    Écrit avec VIM sous Mac OS X.

    [ Accueil | Editorial | Forums | Petites Annonces | Articles | Téléchargement | Sélection de Liens | Infos Site | ]

    AntiRobot