NetBSD sur un iBook G4
Par Olivier Duchateau le samedi 31 juillet 2010, 20h44 - BSD - Lien permanent
J'ai souhaité ne pas conservé MacOS X, donc NetBSD occupera la totalité du disque (56G). De plus, toute la configuration se fera avec un clavier en QWERTY.
Quelques remarques à propos de MacOS X
Pour démarrer à partir du CD, il faut obtenir le prompt Open Firmware. Il faut appuyer simultanément sur les touches commande + option + O + F.
La touche commande est celle où il y a la pomme. Option est la touche Alt
.
/!\ Sous le prompt Open Firmware, le clavier est en QWERTY (pour les claviers AZERTY).
Ensuite on va modifier la valeur de l'auto-boot
. Par défaut cette valeur est à true, on va la mettre à false.
ok 0 > setenv auto-boot? false 0 > reset-all
Remarque : On peut faire la même chose sous MacOS X, dans la console tapez :
sudo su nvram 'auto-boot?'='false' exit
Let's go
Pour booter sur le CD à partir du prompt :
ok 0 > boot cd:,ofwboot.xcf netbsd.macppc
On valide le choix de l'émulateur de terminal, mais on ne procède pas à l'installation, il faut choisir (S)hell
.
Le partionnement
Depuis la version 5.0.x, l'outil de partionnement, pdisk(8) est présent dans le média d'installation.
/!\ LE CLAVIER EST EN QWERTY et LE SHELL /bin/sh
On peut lancer cette commande :
# /sbin/pdisk /dev/wd0c Edit /dev/wd0c - Command (? for help):
La lettre "c" correspond à la totalité du disque.
On va ré-initialiser la table des partitions grâce à l'option i. Cela a également pour effet de supprimer toutes les partitions.
Ensuite, on va créer une partition particulière, qui servira plus tard à stocker le fichier ofwboot.xcf
. Cette partition doit être dans le format HFS ou HFS+.
- option : C (C majuscule)
- offset : 2p (car c'est la deuxième partition)
- size : 32m
- type : Apple_HFS
- name : boot (le nom n'a aucune importance)
Maintenant, on va partitionner le disque pour installer le futur système.
Pour la racine :
- option : c (c minuscule)
- offset : 3p
- size : 5g
- bzb bit : a
- name : root
Pour la swap :
- option : c (c minuscule)
- offset : 4p
- size : 1g
- bzb bit : b
- name : swap
Pour la partition temporaire (/tmp) :
- option : c (c minuscule)
- offset : 5p
- size : 512m
- bzb bit : e
- name : tmp
Pour la partition /var :
- option : c (c minuscule)
- offset : 6p
- size : 1g
- bzb bit : f
- name : var
Pour la partition /usr :
- option : c (c minuscule)
- offset : 7p
- size : 35g
- bzb bit : g
- name : usr
Pour la partition /home :
- option : c (c minuscule)
- offset : 8p
- size : 8p (prend la totalité de l'espace libre)
- bzb bit : h
- name : home
L'option "p" affiche toutes les partitions (dans mon cas) :
Command (? for help): p Partition map (with 512 byte blocks) on '/dev/wd0c' #: type name length base ( size ) 1: Apple_partition_map Apple 63 @ 1 2: Apple_HFS boot 65536 @ 64 ( 32.0M) 3: Apple_UNIX_SVR2 root 10485760 @ 65600 ( 5.0G) S0 RUFS k0 / 4: Apple_UNIX_SVR2 swap 2097152 @ 10551360 ( 1.0G) S1 SFS k0 (swap) 5: Apple_UNIX_SVR2 tmp 1048576 @ 12648512 (512.0M) S2 UFS k0 6: Apple_UNIX_SVR2 var 2097152 @ 13697088 ( 1.0G) S2 UFS k0 7: Apple_UNIX_SVR2 usr 73400320 @ 15794240 ( 35.0G) S2 UFS k0 /usr 8: Apple_UNIX_SVR2 home 28015680 @ 89194560 ( 13.4G) S2 UFS k0 Device block size=512, Number of Blocks=117210240 (55.9G) DeviceType=0x0, DeviceId=0x0 Command (? for help):
Pour connaître le véritable nom de chacune de nos partitions [1], on doit utiliser disklabel(8).
# disklabel /dev/wd0 # /dev/wd0c: type: ESDI disk: FUJITSU MHT2060A [...] 8 partitions: # size offset fstype [fsize bsize cpg/sgs] a: 10485760 65600 4.2BSD 0 0 0 # (Cyl. 65*- 10467*) b: 2097152 10551360 swap # (Cyl. 10467*- 12548*) c: 117210240 0 unused 0 0 # (Cyl. 0 - 116279) d: 65536 64 HFS # (Cyl. 0*- 65*) e: 2097152 13697088 4.2BSD 0 0 0 # (Cyl. 13588*- 15668*) f: 73400320 15794240 4.2BSD 0 0 0 # (Cyl. 15668*- 88486*) g: 1048576 12648512 4.2BSD 0 0 0 # (Cyl. 12548*- 13588*) h: 28015680 89194560 4.2BSD 0 0 0 # (Cyl. 88486*- 116279) disklabel: boot block size 0 disklabel: super block size 0
On constate, qu'il n'y a pas de correspondance entre pdisk et disklabel au niveau des partitions. Il faut se référer à la taille.
Il faut savoir que : 2097152 correspond à 1g, de plus a est toujours la racine, et b la swap. On peut ainsi déduire l'ordre des partitions par déduction.
On peut formater les partitions avec newfs(8). Il faudra préciser les partitions en raw device et non en bloc device (concrètement on rajoute la lettre "r").
# newfs -m 5 /dev/rwd0a # newfs -m 5 /dev/rwd0e # newfs -m 5 /dev/rwd0g # newfs -m 5 /dev/rwd0f # newfs -m 5 /dev/rwd0h
L'étape suivante consiste à créer le fichier /etc/fstab
. Pour cela on va « monter » la partition racine, et créer les différents répertoires correspondant aux autres partitions.
# mount /dev/wd0a /mnt2 # mkdir /mnt2/etc # mkdir /mnt2/tmp # mkdir /mnt2/usr # mkdir /mnt2/var # mkdir /mnt2/home
Ne connaissant pas l'éditeur ed(1), je passe par la fonction echo
pour écrire dans le fichier /mnt2/etc/fstab
.
# echo "dev/wd0a / ffs rw 1 1" > /mnt2/etc/fstab # echo "/dev/wd0b none swap sw 0 0" >> /mnt2/etc/fstab # echo "/dev/wd0e /var ffs rw,nocoredump 1 2" >> /mnt2/etc/fstab # echo "/dev/wd0f /usr ffs rw,nocoredump 1 2" >> /mnt2/etc/fstab # echo "/dev/wd0g /tmp ffs rw,nocoredump 1 2" >> /mnt2/etc/fstab # echo "/dev/wd0h /home ffs rw,nocoredump 1 2" >> /mnt2/etc/fstab
On « démonte » la partition, et on lance sysinst
. Il faut choisir cette fois-ci Réinstaller des composants.
Si tout c'est parfaitement déroulé, on quitte sysinst
pour récuper le shell. On va réaliser un chroot(8) pour commencer à configuer notre système.
# mount -o rw /dev/wd0a /mnt2 # mount -o rw /dev/wd0f /mnt2/usr # mount -o rw /dev/wd0e /mnt2/var
La partition /var
n'est pas nécessaire, par contre si vous comptez utiliser vi(1), il la faut pour /var/tmp/vi.recover
.
# chroot -u root /mnt2 /bin/ksh
A partir de là, on est à la racine de notre système. On va tout d'abord mettre le clavier en AZERTY.
# wsconsctl -w encoding=fr
Ensuite on va éditer le fichier /etc/rc.conf
, voici un extrait :
[...] # If this is not set to YES, the system will drop into single-user mode. # rc_configured=YES # Add local overrides below # wscons=YES dhclient=YES hostname=brigand.errements.net net_interfaces="gem0" critical_filesystems_local="/var" clear_tmp=YES sshd=YES cron=YES postfix=NO ntpdate=YES ntpdate_hosts="ntp.obspm.fr"
Les deux premiers paramètres sont les plus importants.
Dans le fichier /etc/wscons.conf
on rajoute cette ligne :
[...] # Select a kernel builtin keyboard map by uncommenting the following line and # altering the country code to your requirements # (choose from user, us, uk, de, dk, it, fr, jp, sv, no, es, pt, cz, hu). # See wsconsctl(8), pckbd(4), ukbd(4) etc. for more details. encoding fr [...]
Pour préparer les futurs utilisateurs les fichiers à modifier / créer :
- /etc/login.conf
- /etc/skel
On est prêt à redémarrer la machine. Il faut connaître le numéro de la partition racine, si on l'a oublié, pdisk.
# exit # halt
Fin de l'installation
/!\ Il faut conserver le CD dans le lecteur.
Au prompt de l'OpenFirmware :
ok 0 > boot cd:,ofwboot.xcf hd:3,/netbsd
Normalement la connexion réseau devrait être établie, on va pouvoir installer hfsutils. Là il y a plusieurs méthodes :
- par compilation, via pkgsrc
- en le téléchargeant par ftp / pkg_add(1) ou pkgin
A l'heure où j'écris ces lignes, le pkgsrc-bulk pour les PowerPC donne ça comme résultat :
pkgsrc 2010Q1 bulk build results NetBSD 5.1/powerpc Compiler: gcc Summary: Build started: Wed May 26 07:34:32 2010 UTC Build ended: Thu Jun 3 23:42:33 2010 UTC Successfully packaged: 8266 Packages really broken: 213 Pkgs broken due to them: 283 Total broken: 496 Not packaged: 1 Not available: 292 Total: 497
On peut formater notre partition de boot (celle qui est formatée en HFS).
# hformat /dev/wd0d
On copie le fichier ofwboot.xcf
du CD sur cette partition. Il faut au préalable « monter » le CD.
# mount -t cd9660 /dev/cd0a /mnt # hcopy /mnt/ofwboot.xcf :
Le système est enfin prêt.
Dernières remarques
A chaque démarrage, pour booter, il faut écrire la ligne suivante :
ok 0 > boot hd:2,ofwboot.xcf hd:3,/netbsd
On peut automatiser cette commande :
ok 0 > setenv boot-device hd:2,ofwboot.xcf 0 > setenv boot-file hd:3,/netbsd 0 > reset-all
Désormais à chaque démarrage, au prompt, il suffira de taper boot.
Suivant le gestionnaire de bureaux choisit, il faudra créer les partitions /proc
et /kern
.
# mkdir /proc # mount -t procfs proc /proc # mkdir /kern # mount -t kernfs kernfs /kern
On rajoute ces lignes au fichier /etc/fstab
.
[...] proc /proc procfs rw 0 0 kernfs /kern kernfs rw 0 0
Notes
[1] On parle généralement de slices.
Commentaires
Un avant goût, pour de futurs articles, http://picasaweb.google.fr/duchatea...
On peut mettre à jour la valeur de PKG_PATH, un nouveau pkgsrc-bulk-2010Q2 a été publié le 2 août.
http://mail-index.netbsd.org/pkgsrc...