Pour installer FreeBSD sur un MacBook, c'est très simple, il suffit de suivre ces étapes données ci-dessous.

Sommaire

  1. Pré-requis
  2. Configuration matérielle
  3. Installation du système
  4. Utilisation de FreeBSD, et configuration « fine »
    1. Le clavier
    2. Configuration du réseau
    3. Mise à jour et recompilation du système
    4. Économies d'énergie
    5. Gestion des ports
    6. Gravure CD / DVD, et éjection de ce dernier
    7. Audio
    8. Configuration de X.org
  5. Désinstaller FreeBSD
  6. Problèmes divers
  7. Informations supplémentaires

Pré-requis

On va partir du principe que vous utilisez un MacBook avec un clavier azerty français. Dans le cas contraire, il vous faudra changer les paramétrages clavier. De plus, les réglages donnés valent pour les MacBook de première génération, avec un processeur Core Duo. Pour les MacBook avec Core 2 Duo, il y a quelques changements.

  1. Téléchargez l'image ISO de FreeBSD. La 7.0 fera l'affaire. Il y a plusieurs images disponibles :
    • le disque 1 pour l'installation du système
    • le disque 2 (optionnel) pour l'installation d'applications supplémentaires
    • le disque 3 (optionnel) pour l'installation d'applications supplémentaires
    • le « livefs » pour avoir un FreeBSD fonctionnant sur le CD-ROM (utile pour des réparations).
    • le « bootonly » pour une installation via Internet (uniquement via le contrôleur Ethernet, pas le WIFI).
  2. Gravez le disque d'installation de FreeBSD.
  3. Installez tout d'abord Boot Camp. Une fois l'installation de ce dernier effectuée, lancez le, ne créez pas de disque des pilotes (ils sont pour Windows, et vous voulez installer FreeBSD). En revanche, créez une partition pour l'installation de FreeBSD, d'environ 10 ou 15 Go (selon vos besoin, vous pouvez mettre plus si vous le souhaitez).

Revenir au sommaire

Configuration matérielle

Pour la configuration du système, il va falloir connaître quelques informations sur le matériel de votre MacBook. Ce chapitre va bien entendu évoluer au fur et à mesure de mes essais.

  • Processeur : Intel Core Duo ou Core 2 Duo selon le modèle, avec deux cœurs. Un noyau SMP avec support de l'ACPI est donc nécessaire si l'on veut profiter du multi-processeur.
  • Clavier : Azerty français. Il faut utiliser l'azerty belge en console, avec quelques touches raccourcis clavier qui vont changer par rapport à Mac OS X (utiliser la touche <alt>). Pour X.org, l'installation d'un fichier keymap supplémentaire vous permettra d'avoir le même clavier que sous Mac OS X (voir le chapitre correspondant).
  • Carte graphique : i945GM (GMA950). Fonctionne parfaitement.
  • Ecran : 1280x800. Fonctionne parfaitement with X.org 7.3.
  • Souris : Ça dépend de si vous utilisez une souris USB, ou bien le trackpad. Le périphérique à utiliser est « /dev/umsX » (le X variant selon l'ordre de détection des périphériques). Si aucune souris n'est branchée, le trackpad est sous « /dev/ums0 », mais fonctionne mal sous X.org. En revanche ma Logitech MX 1000 (en « /dev/ums0 », le trackpad étant relégué en « /dev/ums1 », fonctionne parfaitement) (voir le chapitre correspondant).
  • Audio : Détecté comme un ICH7 High Definition Audio, fonctionne parfaitement, mais je n'ai pas testé l'enregistrement. (voir le chapitre correspondant).
  • Webcam : Détectée comme périphérique USB générique. N'est supportée ni par SPCA5xx, ni par PWCBSD.
  • Firewire : Détecté par FreeBSD comme un Lucent FW322/323. Il fonctionne correctement.
  • Bluetooth : Le périphérique n'est pas géré par le pilote standard de FreeBSD, « ng_ubt ». FreeBSD semble juste détecter des périphériques « /dev/ukbd1 » et « /dev/ums1 ». Peut-être un pilote générique pour un contrôleur clavier / souris Bluetooth.
  • Contrôleur réseau firewire : Détecté comme périphérique « /dev/net/fwe0 ». Doit surement fonctionner.
  • Contrôleur réseau Ethernet : Détecté par FreeBSD comme un 88E8053 Yukon PCI-E Gigabit Ethernet, fonctionne parfaitement. (voir le chapitre correspondant).
  • Contrôleur réseau WIFI : Sur un MacBook Core Duo, c'est un contrôleur Atheros 5424. Détecté comme périphérique « /dev/net/ath0 », il fonctionne parfaitement (voir le chapitre correspondant). Sur un MacBook Core 2 Duo, il s'agit d'un contrôleur Atheros AR5008 qui ne possède pas de pilote actuellement, donc il ne fonctionne pas.
  • Graveur DVD : Il est détecté comme périphérique « /dev/acd0 ». Avec une modification du noyau pour y inclure le pilote « /dev/net/ath0 », il est détecté en plus comme un pseudo-périphérique SCSI « /dev/cd0 ». Ce pseudo-périphérique SCSI est nécessaire pour l'utilisation des outils « cdrdao », « cdrtools » et « dvd+rw-tools » (voir le chapitre correspondant).
  • Contrôleur SATA : Intel ICHM7, détecté et fonctionne correctement.
  • Contrôleur USB / USB2 : Intel ICH7, détecté et fonctionne correctement.
  • Batterie : Détectée via le périphérique « battery0 ».

Le dmesg est le suivant (MacBook Core Duo) :

Copyright (c) 1992-2008 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008
    root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Genuine Intel(R) CPU           T2500  @ 2.00GHz (1997.34-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x6e8  Stepping = 8
  Features=0xbfe9fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0xc1a9<SSE3,MON,VMX,EST,TM2,xTPR,PDCM>
  AMD Features=0x100000<NX>
  Cores per package: 2
real memory  = 2114781184 (2016 MB)
avail memory = 2059812864 (1964 MB)
ACPI APIC Table: <APPLE  Apple00>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
ioapic0: Changing APIC ID to 1
ioapic0 <Version 2.0> irqs 0-23 on motherboard
kbd0 at kbdmux0
ath_hal: 0.9.20.3 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
hptrr: HPT RocketRAID controller driver v1.1 (Feb 24 2008 19:59:27)
acpi0: <APPLE Apple00> on motherboard
acpi0: [ITHREAD]
acpi_ec0: <Embedded Controller: GPE 0x17, ECDT> port 0x62,0x66 on acpi0
acpi0: Power Button (fixed)
Timecounter "HPET" frequency 14318180 Hz quality 900
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
cpu0: <ACPI CPU> on acpi0
est0: <Enhanced SpeedStep Frequency Control> on cpu0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
cpu1: <ACPI CPU> on acpi0
est1: <Enhanced SpeedStep Frequency Control> on cpu1
p4tcc1: <CPU Frequency Thermal Control> on cpu1
acpi_acad0: <AC Adapter> on acpi0
acpi_lid0: <Control Method Lid Switch> on acpi0
acpi_button0: <Power Button> on acpi0
acpi_button1: <Sleep Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0x20f0-0x20f7 mem 0x90380000-0x903fffff,0x80000000-0x8fffffff,0x90400000-0x9043ffff irq 16 at device 2.0 on pci0
agp0: <Intel 82945GM (945GM GMCH) SVGA controller> on vgapci0
agp0: detected 16124k stolen memory
agp0: aperture size is 256M
vgapci1: <VGA-compatible display> mem 0x90300000-0x9037ffff at device 2.1 on pci0
pci0: <dasp> at device 7.0 (no driver attached)
pci0: <multimedia> at device 27.0 (no driver attached)
pcib1: <ACPI PCI-PCI bridge> irq 17 at device 28.0 on pci0
pci1: <ACPI PCI bus> on pcib1
mskc0: <Marvell Yukon 88E8053 Gigabit Ethernet> port 0x1000-0x10ff mem 0x90200000-0x90203fff irq 16 at device 0.0 on pci1
msk0: <Marvell Technology Group Ltd. Yukon EC Id 0xb6 Rev 0x02> on mskc0
msk0: Ethernet address: 00:16:cb:ce:f9:71 
miibus0: <MII bus> on msk0 
e1000phy0: <Marvell 88E1111 Gigabit PHY> PHY 0 on miibus0
e1000phy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX-FDX, auto
mskc0: [FILTER]
pcib2: <ACPI PCI-PCI bridge> irq 16 at device 28.1 on pci0
pci2: <ACPI PCI bus> on pcib2
ath0: <Atheros 5424/2424> mem 0x90100000-0x9010ffff irq 17 at device 0.0 on pci2
ath0: [ITHREAD]
ath0: using obsoleted if_watchdog interface
ath0: Ethernet address: 00:16:cb:be:f8:40
ath0: mac 10.3 phy 6.1 radio 10.2
uhci0: <UHCI (generic) USB controller> port 0x20a0-0x20bf irq 21 at device 29.0 on pci0
uhci0: [GIANT-LOCKED]
uhci0: [ITHREAD]
usb0: <UHCI (generic) USB controller> on uhci0
usb0: USB revision 1.0
uhub0: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb0
uhub0: 2 ports with 2 removable, self powered
uhci1: <UHCI (generic) USB controller> port 0x2080-0x209f irq 19 at device 29.1 on pci0
uhci1: [GIANT-LOCKED]
uhci1: [ITHREAD]
usb1: <UHCI (generic) USB controller> on uhci1
usb1: USB revision 1.0
uhub1: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb1
uhub1: 2 ports with 2 removable, self powered
uhci2: <UHCI (generic) USB controller> port 0x2060-0x207f irq 18 at device 29.2 on pci0
uhci2: [GIANT-LOCKED]
uhci2: [ITHREAD]
usb2: <UHCI (generic) USB controller> on uhci2
usb2: USB revision 1.0
uhub2: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb2
uhub2: 2 ports with 2 removable, self powered
uhci3: <UHCI (generic) USB controller> port 0x2040-0x205f irq 16 at device 29.3 on pci0
uhci3: [GIANT-LOCKED]
uhci3: [ITHREAD]
usb3: <UHCI (generic) USB controller> on uhci3
usb3: USB revision 1.0
uhub3: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb3
uhub3: 2 ports with 2 removable, self powered
ehci0: <Intel 82801GB/R (ICH7) USB 2.0 controller> mem 0x90445400-0x904457ff irq 21 at device 29.7 on pci0
ehci0: [GIANT-LOCKED]
ehci0: [ITHREAD]
usb4: EHCI version 1.0
usb4: companion controllers, 2 ports each: usb0 usb1 usb2 usb3
usb4: <Intel 82801GB/R (ICH7) USB 2.0 controller> on ehci0
usb4: USB revision 2.0
uhub4: <Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1> on usb4
uhub4: 8 ports with 8 removable, self powered
ugen0: <Micron Built-in iSight, class 255/255, rev 2.00/1.84, addr 2> on uhub4
pcib3: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci3: <ACPI PCI bus> on pcib3
fwohci0: <Lucent FW322/323> mem 0x90000000-0x90000fff irq 19 at device 3.0 on pci3
fwohci0: [FILTER]
fwohci0: OHCI version 1.0 (ROM=0)
fwohci0: No. of Isochronous channels is 8.
fwohci0: EUI64 00:16:cb:ff:fe:e4:24:ce
fwohci0: Phy 1394a available S400, 3 ports.
fwohci0: Link S400, max_rec 2048 bytes.
firewire0: <IEEE1394(FireWire) bus> on fwohci0
dcons_crom0: <dcons configuration ROM> on firewire0
dcons_crom0: bus_addr 0x13c4000
fwe0: <Ethernet over FireWire> on firewire0
if_fwe0: Fake Ethernet address: 02:16:cb:e4:24:ce
fwe0: Ethernet address: 02:16:cb:e4:24:ce
fwip0: <IP over FireWire> on firewire0
fwip0: Firewire address: 00:16:cb:ff:fe:e4:24:ce @ 0xfffe00000000, S400, maxrec 2048
sbp0: <SBP-2/SCSI over FireWire> on firewire0
fwohci0: Initiate bus reset
fwohci0: BUS reset
fwohci0: node_id=0xc000ffc0, gen=2, CYCLEMASTER mode
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel ICH7 UDMA100 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x20c0-0x20cf irq 18 at device 31.1 on pci0
ata0: <ATA channel 0> on atapci0
ata0: [ITHREAD]
ata1: <ATA channel 1> on atapci0
ata1: [ITHREAD]
atapci1: <Intel ICH7M SATA300 controller> port 0x20d8-0x20df,0x20fc-0x20ff,0x20d0-0x20d7,0x20f8-0x20fb,0x2020-0x202f mem 0x90445000-0x904453ff irq 19 at device 31.2 on pci0
atapci1: [ITHREAD]
ata2: <ATA channel 0> on atapci1
ata2: [ITHREAD]
ata3: <ATA channel 1> on atapci1
ata3: [ITHREAD]
pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
battery0: <ACPI Control Method Battery> on acpi0
pmtimer0 on isa0
ppc0: parallel port not found.
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0: configured irq 4 not in bitmap of probed irqs 0
sio0: port may not be enabled
sio0: configured irq 4 not in bitmap of probed irqs 0
sio0: port may not be enabled
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 8250 or not responding
sio0: [FILTER]
sio1: configured irq 3 not in bitmap of probed irqs 0
sio1: port may not be enabled
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
ukbd0: <Apple Computer Apple Internal Keyboard / Trackpad, class 0/0, rev 2.00/0.64, addr 2> on uhub0
kbd1 at ukbd0
ums0: <Apple Computer Apple Internal Keyboard / Trackpad, class 0/0, rev 2.00/0.64, addr 2> on uhub0
ums0: 3 buttons.
uhid0: <Apple Computer Apple Internal Keyboard / Trackpad, class 0/0, rev 2.00/0.64, addr 2> on uhub0
uhid1: <Apple Computer, Inc. IR Receiver, class 0/0, rev 2.00/1.10, addr 2> on uhub2
ukbd1: <vendor 0x05ac product 0x1000, class 0/0, rev 2.00/19.65, addr 2> on uhub3
kbd2 at ukbd1
ums1: <vendor 0x05ac product 0x1000, class 0/0, rev 2.00/19.65, addr 2> on uhub3
ums1: 5 buttons.
Timecounters tick every 1.000 msec
hptrr: no controller detected.firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
firewire0: bus manager 0 (me)

acd0: DVDR <MATSHITADVD-R UJ-857/HBEA> at ata0-master UDMA66
ad5: 57231MB <TOSHIBA MK6034GSX AH105B> at ata2-slave SATA150
GEOM_LABEL: Label for provider ad5p1 is msdosfs/EFI.
WARNING: Expected rawoffset 0, found 84295720
SMP: AP CPU #1 Launched!
Trying to mount root from ufs:/dev/ad5s3a
GEOM_LABEL: Label msdosfs/EFI removed.

Revenir au sommaire

Installation du système

Une fois la partition créée, redémarrez votre MacBook, et laissez appuyé sur la touche <alt>. Sélectionnez ensuite le CD-ROM (ayant pour label « Windows ») pour démarrer l'installation de FreeBSD. Lors de l'installation de FreeBSD, vous pouvez vous référer au manuel en ligne, très bien documenté. En tout cas, vous pouvez suivre ces indications :

  1. Au menu de démarrage, choisissez le démarrage par défaut, en validant avec <Entrée>
  2. Au choix du pays, choisissez « France ». Ce choix conditionnera le jeux de caractère par défaut des utilisateurs sur le système installé.
  3. Au choix du layout du clavier, choisissez le format de clavier belge (« Belgian»), c'est le plus proche du clavier mac français.
  4. Au menu suivant, choisissez « Custom Install ».
  5. Sélectionnez « Partition » afin de créer un slice pour FreeBSD.
  6. Lors de la création du slice pour FreeBSD, vous devez convertir (touche T) le slice au format « fat » créé par Boot Camp vers le format FreeBSD (code 165), puis le rendre bootable (touche S). Quittez cet écran (touche Q). Ensuite, choisir le boot manager de type « Standard » (deuxième choix de la liste).
  7. Sélectionnez « Label » afin de créer les différents systèmes de fichiers. Le mode auto (touche A) peut suffire, sauf besoins particuliers. Quittez ensuite cet écran (touche Q).
  8. Sélectionnez « Distributions », puis « Kern-Developer » (l'installation des sources du système sera utile par la suite). À la question demandant si vous souhaîtez installer l'arborescence des ports, répondez « Yes ». Puis « Exit ».
  9. Sélectionnez « Media », puis « CD/DVD ».
  10. Enfin, sélectionnez « Commit » pour lancer l'installation de FreeBSD.

Une fois les fichiers copiés, il vous sera demandé si vous souhaitez effectuer des tâches post-installation. Il est conseillé d'accepter. Personnellement, j'effectue les étapes suivantes :

  1. « Root password » : création du mot de passe administrateur
  2. « User management », puis « User » : création d'un utilisateur non administrateur. Pour les utilisateurs créés, remplacez le shell « /bin/sh » par « /bin/csh ». Une fois les utilisateurs créés, choisir « Exit » pour revenir au menu précédent.
  3. « Time zone » : choisir le fuseau horaire. Il vous sera demandé si l'horloge CMOS est au format UTC : sélectionnez « Yes », puis sélectionnez votre fuseau horaire.
  4. « Console » puis
    • « Font » : choisir « ISO 8859-15 »
    • « Repeat » : choisir « Fast » (c'est la vitesse de répétition des touches clavier quand on laisse appuyé dessus).
    • « Exit » pour sortir du menu « Console ».
  5. « Networking » puis
    • Vous pouvez choisir les services réseau que vous souhaitez dans ce menu.
    • « Interface » : paramétrages des interfaces réseau. Comme seul le contrôleur WIFI est détecté (« ath0 »), et qu'il n'est pas possible de choisir le réseau WIFI de connexion et le cryptage lors de l'installation de FreeBSD, cette étape peut être sautée. En revanche, si vous souhaitez vous connecter au réseau via le contrôleur Firewire (« fwe0 »), vous pouvez configurer les paramètres TCP/IP de cette interface via ce menu.
    • « sshd » : pour lancer le serveur SSH au démarrage de la machine.
    • « Exit » pour sortir du menu « Networking ».
  6. « Startup » puis
    • Vous pouvez choisir différents paramètres de démarrage dans ce menu.
    • « Quotas » : je désactive le support des quotas utilisateurs. Vous pouvez le laisser si vous pensez vous en servir.
    • « Exit » pour sortir du menu « Startup ».
  7. « Exit » pour sortir du menu des tâches de post-installation.
  8. « Exit » pour revenir au menu initial.
  9. « Exit Install » pour redémarrer l'ordinateur.

Utilisation de FreeBSD, et configuration « fine »

Pour démarrer FreeBSD, il faut sélectionner le disque de démarrage à l'allumage de l'ordinateur en laissant appuyée la touche <Alt>. Le disque de démarrage a pour label « Windows », même s'il contient un autre système d'exploitation que celui de Microsoft.

Le démarrage terminé, nous allons pouvoir passer aux choses sérieuses. Pour cela, connectez vous en « root ».

Revenir au sommaire

Le clavier

Le clavier belge est le plus proche du clavier azerty français, mais sans être identique. Certain caractères ne sont pas placé identiquement, ou demandent des raccourcis clavier.

< : <@>
> : <#>
| : <alt>+<1>
@ : <alt>+<2>
# : <alt>+<3>
{ : <alt>+<9>
} : <alt>+<0>
[ : <alt>+<^>
] : <alt>+<shift>+<$>
` : <alt>+<`>
~ : <alt>+<=>

Sous X.org, la plupart des raccourcis claviers de Mac OS X sont disponibles à l'aide de patchs décris dans la section consacrée à X.org.

Revenir au sommaire

Configuration du réseau

Connexion réseau Firewire

N'ayant pas la possibilité de tester, je ne saurais dire si ça fonctionne. Le contrôleur correspondant étant correctement détecté, il n'y a pas de raison que non. Si quelqu'un a pu essayer, qu'il n'hésite pas à me laisser un commentaire en ce sens.

Connexion réseau Ethernet (pilote FreeBSD)

Vous pouvez configurer le pilote en DHCP ou bien en adressage fixe.

Pour le DHCP, éditez le fichier « /etc/rc.conf » et ajoutez-y la ligne suivante :

ifconfig_msk0="DHCP"

Pour une adressage fixe, éditez le fichier « /etc/rc.conf » et ajoutez-y les lignes suivantes :

defaultrouter="<ip_passerelle>"
ifconfig_rl0="inet 1<adresse_ip> netmask <masque_sous_reseau>"

Dans tous les cas, redémarrez ensuite votre ordinateur afin d'appliquer les changements.

Connexion réseau WIFI (modèles Core Duo seulement)

Pour la suite de la configuration, on va partir du principe que vous vous connectez en WIFI, avec cryptage WPA/WPA2, et en DHCP. Pour d'autres configurations WIFI, reportez vous au manuel en ligne.

Ensuite, il faut configurer FreeBSD pour se connecter au bon réseau WIFI, avec le bon mot de passe. Ça se passe en deux étapes. Tout d'abord, modifiez le fichier « /etc/rc.conf » en y ajoutant la ligne suivante :

ifconfig_ath0="WPA DHCP"

Cette ligne sert à se connecter en WPA, avec adressage TCP/IP par DHCP, sur le contrôleur « ath0 ».

Le paramétrage WPA se fait dans le fichier « /etc/wpa_supplicant.conf » (à créer). Il faut y rajouter les lignes suivantes :

network={
    ssid="votre_ssid"
    key_mgmt=WPA-PSK
    psk="votre_cle"
}

« votre_ssid » correspond au nom du réseau WIFI auquel se connecter
« votre_cle » correspond au mot de passe de connexion à ce réseau.

Vous pouvez maintenant redémarrer votre MacBook, celui-ci se connectera à votre réseau WIFI.

Revenir au sommaire

Mise à jour et recompilation du système

Afin de suivre les mises à jour système (tant d'un point de vue fonctionnalité que sécurité), il est conseillé de suivre la branche -STABLE de FreeBSD 7.x. D'ailleurs, la suite de ce tutoriel considère que vous suivez cette branche. Dans le cas contraire, certaines fonctionnalités pourraient ne pas être disponibles. Pour cela, il va falloir suivre les instructions suivantes.

Tout d'abord, créez un répertoire « /opt/ » et « /opt/data/ ». Dans le répertoire « /opt/data/ », copiez le fichier « /usr/share/examples/cvsup/standard-supfile ». Modifiez ensuite ce fichier de la manière suivante : remplacez la ligne « *default host=CHANGE_THIS.FreeBSD.org » par « *default host=cvsup2.fr.FreeBSD.org » (remplacez « cvsup2.fr.FreeBSD.org » par le miroir le plus proche), et la ligne « *default release=cvs tag=RELENG_7_0 » par « *default release=cvs tag=RELENG_7 » (il est possible que la ligne d'origine soit légèrement différente. En revanche, le résultat doit être celui donné).

Téléchargez ensuite le fichier « FreeBSD sources update script », copiez le dans « /opt/update_src.sh » et donnez lui les droits exécutables.

Lancez ensuite ce script. Celui-ci va mettre à jour les sources du système.

Une fois les sources à jour, allez dans le répertoire « /usr/src/sys/i386/conf » et copiez le fichier « GENERIC » sous un autre nom, par exemple « MAMACHINE » (ce nom est retenir pour la suite). Modifiez ensuite ce fichier, et remplacez la ligne

ident           GENERIC

par

ident           MAMACHINE

puis rajoutez les lignes suivantes (en fin de fichier)

options         CPU_SUSP_HLT                # Autorise l'instruction HLT quand le processeur ne fait rien. Diminue la consommation d'énergie.
options         CPU_UPGRADE_HW_CACHE        # Désactive les vidages de cache inutiles. Les performances peuvent en être améliorées.
options         DEVICE_POLLING              # Active le polling des contrôleurs réseau compatibles. Les performances peuvent en être améliorées.
options         ZERO_COPY_SOCKETS           # Active les transferts réseau sans copie inutiles. Les performances peuvent en être améliorées.
device          drm                         # Active le support de l'accélération graphique
device          i915drm                     # Active le support de l'accélération graphique spécifiquement pour le chipset i945GM
device          atapicam                    # Permet d'accéder aux lecteurs / graveurs de média optique ATA via un sous-système SCSI
device          sound                       # Active le support du son.
device          snd_hda                     # Active le support du son du contrôleur audio du MacBook (Intel ICH7 High Definition Audio)

Vous devez faire la copie et les modifications à chaque fois que vous mettez à jour les sources du système.

Modifiez ensuite le fichier « /etc/make.conf », et donnez lui le contenu suivant

CPUTYPE?=prescott
CFLAGS= -O2 -fno-strict-aliasing -pipe
COPTFLAGS= -O -pipe
NO_PROFILE=true
KERNCONF=MAMACHINE

Le CPUTYPE à « prescott » active le support du SSE3 lors des compilations, au contraire de « pentium-m ». Pour les MacBook basés sur les processeurs Core 2 Duo, utilisez plutôt « nocona » (afin d'activer le support du 64 bit).

Créez ou modifiez ensuite le fichier « /etc/rc.local » et insérez lui la ligne suivante :

/sbin/ifconfig ath0 polling

Cette ligne active le mode polling sur le contrôleur WIFI. Actuellement, il n'est pas supporté, mais cela pourrait changer à l'avenir. Donc autant le faire maintenant.

Si vous avez installé le pilote FreeBSD pour le contrôleur Ethernet, vous pouvez faire de même avec la ligne :

/sbin/ifconfig msk0 polling

Si vous utilisez le contrôleur réseau Firewire, vous pouvez faire de même avec la ligne :

/sbin/ifconfig fwe0 polling

Téléchargez ensuite le fichier « FreeBSD update script (01) », copiez le dans « /opt/build_freebsd_01.sh » et donnez lui les droits exécutables.

Ce script va, dans l'ordre :

  1. Vider le répertoire « /usr/obj », contenant les fichiers temporaires de compilation
  2. Modifier si nécessaire les fichiers de configuration essentiels à l'aide de l'outil mergemaster.
  3. Compiler le système
  4. Compiler le noyau et les modules
  5. Installer le noyau et les modules

La compilation du système, du noyau, des modules et l'installation de ces derniers prend 30 minutes sur un MacBook 2 GHz.

Téléchargez ensuite le fichier « FreeBSD update script (02) », copiez le dans « /opt/build_freebsd_02.sh » et donnez lui les droits exécutables.

Ce script va, dans l'ordre :

  1. Monter les systèmes de fichier et activer la swap
  2. Installer le nouveau système
  3. Modifier si nécessaire les fichiers de configuration à l'aide de l'outil mergemaster.
  4. Redémarrer la machine

Pour recompiler le système, vous devez dans l'ordre :

  1. Mettre à jour les sources avec le script « /opt/update_src.sh »
  2. Effectuer la première partie de l'installation du système avec le script « /opt/build_freebsd_01.sh »
  3. Redémarrer la machine en mode single user (option 4 au menu de démarrage)
  4. Effectuer la deuxième partie de l'installation du système avec le script « /opt/build_freebsd_02.sh »

Revenir au sommaire

Économies d'énergie

Quand on utilise un portable, on essaye d'économiser la batterie, et d'éviter qu'il ne chauffe trop (afin de ne pas trop lancer les ventilateurs, consommateurs de batterie). Un des premiers pas dans cette direction est l'activation dans le noyau de l'option « CPU_SUSP_HLT », permettant d'envoyer l'instruction HLT lors de l'absence d'activité du processeur. Cette instruction met le processeur en état de veille légère, lui faisant moins consommer et moins chauffer.

Une autre option possible est d'activer « powerd ». Ce daemon s'appuie sur l'ACPI et autre supports de gestion de fréquence des processeurs afin d'adapter cette dernière à la charge de la machine. Sur le MacBook 2 GHz, la fréquence varie automatiquement entre 125 MHz et 2 GHz (avec bien entendu des paliers intermédiaires). Pour activer « powerd », il faut ajouter les lignes suivantes dans « /etc/rc.conf »

powerd_enable="YES"
powerd_flags="-a adaptive -b adaptive"

Puis redémarrez la machine ou bien lancez « /etc/rc.d/powerd start » afin d'appliquer la modification.

Vous pouvez obtenir la fréquence du système (en MHz) avec la ligne de commande suivante :

sysctl dev.cpu.0.freq

D'autres modes d'économie d'énergie doivent être possibles, comme la mise en veille profonde lorsque l'on referme le portable, mais je ne sais actuellement pas comment les activer. Dès que j'aurais l'information, je modifierai le chapitre en conséquence.

Revenir au sommaire

Gestion des ports

Pour installer des applications sous FreeBSD, il est conseillé de passer par le système des « ports ». Un « port » est un ensemble d'indications pour le système indiquant où télécharger les sources du programme, comment le compiler et l'installer, et s'occuper des dépendances de ce programme. Afin de gérer plus facilement ces ports, il est utile d'installer « portupgrade ». Pour cela, suivez ces instructions :

Dans le répertoire « /opt/data/ », copiez le fichier « /usr/share/examples/cvsup/ports-supfile ». Modifiez ensuite ce fichier de la manière suivante : remplacez la ligne « *default host=CHANGE_THIS.FreeBSD.org » par « *default host=cvsup2.fr.FreeBSD.org » (remplacez « cvsup2.fr.FreeBSD.org » par le miroir le plus proche).

Téléchargez ensuite le fichier « FreeBSD ports update script », copiez le dans « /opt/update_ports.sh » et donnez lui les droits exécutables.

Lancez ensuite ce script. Celui-ci va mettre à jour l'arbre des ports. Les deux dernières commandes vont échouer, mais ce n'est pas grave pour le moment (« portsdb » et « portversion » font partie de « portupgrade » qui n'est pas encore installé).

Ensuite, aller dans « /usr/ports/ports-mgmt/portupgrade/ », puis lancez « make install clean ». Le système va installer portupgrade et toutes ses dépendances. Un coup de « rehash » pour rafraichir la liste des commandes, et vous êtes prêts à utiliser portupgrade. Celui-ci se compose d'un ensemble de commandes différentes :

  • « portinstall » permet d'installer un port, et ses dépendances. Par exemple, « portinstall vim » pour installer « vim »
  • « portsdb » permet de manipuler la base des ports (spécifique à portupgrade). « portsdb -F » (utilisé dans le script ci-dessus) met à jour la liste des ports disponibles.
  • « portversion » permet de vérifier les versions des ports. « portversion -vl '<' » (utilisé dans le script ci-dessus) liste tous les ports installés et ayant une mise à jour disponible.
  • « pkg_info » donne des informations sur les ports. Sans paramètre, il liste les ports installés. « pkg_info -L un_port » liste tous les fichiers installés par un port.
  • « portupgrade » permet de mettre à jour un port installé. Le paramètre « -a » permet de mettre à jour tous les ports disponibles.
  • « pkg_deinstall » permet de désinstaller un port.

Bien entendu, les pages man de chacun de ces programmes vous donneront toutes les options disponibles.

Le script donné ci-dessus met à jour l'arbre des ports, la base des ports disponibles, et liste ensuite les ports pouvant être mis à jour.

Si vous souhaitez placer des options de configuration et de compilation pour les ports, il y a deux méthodes disponibles :

  1. « /etc/make.conf » : ces options de compilation seront disponibles pour l'ensemble des ports.
  2. « /usr/local/etc/pkgtools.conf » : ces options de compilation peuvent être spécifiées port par port. Cette méthode n'est disponible qu'avec portupgrade (et ses outils dérivés).

Revenir au sommaire

Gravure CD / DVD, et éjection de ce dernier

Gravure de CD

Il y a plusieurs méthodes pour graver des CD.

  • « burncd ». Cet outil fait partie du système de base, et permet de graver sur des graveurs ATAPI. Chacune de mes tentatives a donné un gravage qui se déroule sans erreur, mais impossible par la suite de monter le CD fraîchement gravé.
  • « cdrecord ». Cet ensemble d'outils est à installer via l'arbre des ports. Il a besoin d'un graveur SCSI, donc utilisez le périphérique « /dev/cd0 » au lieu de « /dev/acd0 ». Avec cet outil, pas de problème de gravure, ni de montage du CD.

Plus d'informations sur la gravure de CD sont disponibles dans le manuel en ligne.

Gravure de DVD

Là, pas le choix, il va falloir passer par « dvd+rw-tools » et le périphérique « /dev/cd0 ». La gravure s'effectue sans problème notable, et le DVD monte correctement.

Plus d'informations sur la gravure de DVD sont disponibles dans le manuel en ligne.

Rien à voir avec la gravure, mais si vous souhaitez éjecter votre CD / DVD en ligne de commande, n'oubliez pas d'installer « eject » via l'arbre des ports.

Revenir au sommaire

Audio

Le périphérique audio du MacBook est un ICH7 à la norme HDA et non AC97.

Au démarrage, vous devez voir apparaître dans le « dmesg » les lignes suivantes :

pcm0: <Intel 82801G High Definition Audio Controller> mem 0x90440000-0x90443fff irq 22 at device 27.0 on pci0
pcm0: [ITHREAD]
pcm0: <HDA Codec: Sigmatel STAC9221>
pcm0: <HDA Driver Revision: 20071129_0050>

De même, un « cat /dev/sndstat » doit vous donner les lignes suivantes :

FreeBSD Audio Driver (newpcm: 32bit 2007061600/i386)
Installed devices:
pcm0: <Intel 82801G High Definition Audio Controller> at memory 0x90440000 irq 22 kld snd_hda [20071129_0050] [MPSAFE] (1p:1v/1r:1v channels duplex default)

Le son est désormais fonctionnel, vous pouvez le vérifier avec votre application audio préférée. La seule chose que je n'ai pas testé est l'enregistrement du son. Et comme je n'ai pas de cordon audio optique, je n'ai pu tester ni les entrées ni les sorties correspondantes.

Revenir au sommaire

Configuration de X.org

Avant d'installer X.org, il faut auparavant empêcher « moused » de tourner car celui-ci bloque le fonctionnement de la souris pour X.org. Pour cela, il faut modifier le ficher « /etc/rc.conf » et ajouter les lignes suivantes :

moused_enable="NO"
moused_nondefault_enable="NO"
moused_ums0_enable="NO"
moused_ums1_enable="NO"
moused_ums2_enable="NO"

puis tuer tous les processus de moused en cours de fonctionnement :

killall moused

Lancez l'installation de X.org par

portinstall xorg

Il faut une petite heure pour que tout s'installe. Une fois X.org installé, il faut le configurer. Pour cela, lancez « xorgconfig ». S'ensuit une série de questions.

La souris

Le protocole de souris à utiliser est « Auto ». De toute manière, le trackpad ne fonctionne mal (pointeur instable, positionnement absolu entre la surface du trackpad et l'écran), il vous faudra utiliser une souris externe.
À la question demandant si on veut émuler 3 boutons, répondre « n ».
À la question demandant le périphérique à utiliser, la réponse risque fortement d'être « /dev/ums0 ». À changer selon le périphérique réel.

Le clavier

Le layout du clavier est « MacBook/MacBook Pro (Intl) » (121).
Le pays est « France » (29).
Pas de variante pour le layout, valider simplement avec « Entrée ».
Pas d'option XKB, répondre « n ».

L'écran

Concernant le rafraîchissement horizontal, répondre « 10 ».
Pour le rafraîchissement vertical, répondre « 4 ».
Donnez comme identifiant « MacBook LCD ».

La carte graphique

À la question demandant si on veut parcourir la carte graphique, répondre « y ».
Le contrôleur graphique à utiliser est « i810 » (16).
La mémoire utilisée est « 65536K » (9).
Donnez comme identifiant « GMA950 ».
Laissez les modes comme tels (réponse « 4 »).
Le mode par défaut sera 24 bits (réponse « 5 »).

Quand on vous demande si vous souhaitez écrire le fichier « /etc/X11/xorg.conf », répondez « y ».

Post-configuration : le clavier

Disposition clavier strictement identique à Mac OS X

Enfin, téléchargez le fichier « http://bersace03.free.fr/pub/Linux/xkb-mac/fr.ancien », et copiez le dans le répertoire « /usr/local/share/X11/xkb/symbols/macintosh_vndr/ » avec le nom « fr » (enlever l'extension « .ancien »).

Cette manipulation vous permet d'avoir un clavier fonctionnel sous X.org. En revanche, lors de futures mise à jour ou réinstallation de X.org, vous allez devoir la répéter.

Disposition clavier quasi-identique à Mac OS X

Une autre possibilité est d'avoir une disposition clavier quasiment identique à Mac OS X : la touche <alt> devient le <alt> « Windows », la touche <ctrl> devient le <ctrl> « Windows », la touche <cmd> gauche devient la touche <menu> « Windows », et la petite touche <entrée> (à coté de la touche <cmd> droite) devient la touche <alt> « Mac OS X » (pour les raccourcis claviers des caractères spéciaux).

Cette disposition est celle par défaut avec X.org.

Post-configuration : la carte graphique

Il faut s'attaquer à l'accélération matérielle. Celle-ci est en deux points : un pilote noyau (qui supporte le i945GM du MacBook), et un pilote X.org (qui le supporte aussi).

Il va vous falloir modifier le fichier « /etc/X11/xorg.conf ».
Décommentez les lignes suivantes :

Load       "glx"
Load       "dri"
Section "DRI"
    Mode 0666
EndSection

Modifiez la section « Device », identifiant « GMA950 ». Rajoutez les lignes :

Option	"DRI"	"True"
Option	"NoAccel"	"False"

Après installation du patch, j'ai le résultat suivant :

Dans le fichier de log de X.org :

(II) [drm] DRM interface version 1.2
(II) [drm] DRM open master succeeded.
(II) intel(0): [drm] Using the DRM lock SAREA also for drawables.
(II) intel(0): [drm] framebuffer handle = 0x80040000
(II) intel(0): [drm] added 1 reserved context for kernel
(II) intel(0): [drm] installed DRM signal handler
(II) intel(0): [drm] Registers = 0x90380000
(II) intel(0): [drm] ring buffer = 0x80000000
(II) intel(0): [drm] init sarea width,height = 1280 x 1280 (pitch 2048)
(II) intel(0): [drm] Mapping front buffer
(II) intel(0): [drm] Front Buffer = 0x80040000
(II) intel(0): [drm] Back Buffer = 0x84000000
(II) intel(0): [drm] Depth Buffer = 0x85000000
(II) intel(0): [drm] textures = 0x88000000
(II) intel(0): [drm] Initialized kernel agp heap manager, 33554432
(II) intel(0): [drm] dma control initialized, using IRQ 16
(II) intel(0): [drm] removed 1 reserved context for kernel
(II) intel(0): [drm] unmapping 8192 bytes of SAREA 0xc7d50000 at 0x287ee000
(II) intel(0): [drm] Closed DRM master.
Les problèmes

Le trackpad n'est pas géré par X.org. Le pilote « synaptics » ne fonctionnant pour le moment qu'avec les trackpads PS/2 (via le pilote « psm »), le trackpad du MacBook est inutilisable (il est en USB, donc utilise le pilote « ums »).

Revenir au sommaire

Désinstaller FreeBSD

Les problèmes de la présence de FreeBSD

L'installation de FreeBSD semble masquer le format de partitionnement. Bien qu'il reste au format GPT, Mac OS X ne le reconnait plus que comme un disque au format MBR, ce qui entraine les problèmes suivants :

  • Une fois FreeBSD installé, si par hasard vous ne souhaitiez plus l'utiliser, vous allez vous retrouvez dans l'impossibilité d'annuler les modifications faites par Boot Camp.
  • Il ne devient plus possible sous Mac OS X d'effectuer les mises à jour du firmware EFI. Les seules solutions possible sont : démarrer sur un disque dur externe au format GPT sur lequel est installé Mac OS X, et effectuer la mise à jour depuis ce disque ou bien de d'abord désinstaller FreeBSD.

Si l'on démarre sur le disque d'installation de FreeBSD, qu'on lance le « Live Filesystem », et qu'on lance un « gpt show /dev/ad5 », on voit bien que le disque est au format GPT. D'ailleurs, un « gpt migrate /dev/ad5 » échoue, l'outil rétorquant que le disque est déjà au format GPT, et donc qu'il ne peut migrer vers ce format.

J'ai essayé de réparer la table GPT avec l'utilitaire « gptsync » de rEFIt, mais même lui trouve que la table MBR est trop inconsistante pour faire quoi que ce soit. Il faudrait que l'outil d'installation de FreeBSD/i386 gère les partitionnements GPT, mais à l'heure actuelle c'est seulement le cas pour FreeBSD/ia64 (la version pour processeurs Intel Itanium).

Il reste tout de même possible de désinstaller FreeBSD sans avoir à tout repartionner et réinstaller, mais ça n'a rien d'une partie de plaisir.

Première étape : suppression de la partition FreeBSD

Pour supprimer la partition de FreeBSD, vous allez devoir vous munir d'un CD de Ubuntu, au moins la version 7.04. Démarrez le CD d'Ubuntu, puis une fois le bureau chargé, ouvrez ensuite une session « Terminal », puis exécutez la commande suivante :

sudo parted

Une fois GNU parted lancé, suivez les étapes suivantes:

  • exécutez « print », et notez le numéro de la partition dédiée à FreeBSD (normalement « 3 »).
  • executez « rm <numéro_partition> », où <numéro_partition> est le numéro de la partition notée précédemment.
  • exécutez « quit ».

Enfin, redémarrez le portable sous Mac OS X.

Deuxième étape : restauration de la partition Mac OS X

Enfin, il ne reste plus qu'à restaurer la partition Mac OS X dans son état originel. Pour cela, lancez l'assistant Boot Camp, qui va vous proposer de graver un CD de pilote (refusez), puis de partitionner votre disque dur. Acceptez en gardant les valeurs par défaut, ou changez les comme vous le voulez, de toute manière ce n'est que temporaire. Une fois le disque partitionné, redémarrez ensuite Mac OS X.

Relancez l'assistant Boot Camp, et choisissez de restaurer la partition Mac OS X. Redémarrez, et voilà, FreeBSD est maintenant proprement désinstallé.

Si vous utilisez Mac OS X 10.5.x, vous pouvez aussi simplement redimensionner votre partition système à l'aide de l'utilitaire de disque au lieu d'utiliser Boot Camp.

Revenir au sommaire

Problèmes divers

Il est possible qu'après l'installation de FreeBSD l'ordinateur mette beaucoup de temps avant de trouver la partition de démarrage de Mac OS X, ou bien que ce dernier ne se lance plus tout seul. Dans ce cas, redémarrez l'ordinateur en laissant la touche <Alt> appuyée, sélectionnez la partition de Mac OS X. Puis, une fois le système démarré, lancez les « Préférences Système », sélectionnez « Démarrage », puis la partition de Mac OS X. Tout devrait rentrer dans l'ordre au prochain redémarrage.

Il arrive parfois que l'arrêt ou le redémarrage du MacBook échoue ; l'écran s'éteint, mais le portable reste en fonctionnement (on sens le disque dur vibrer en posant la main sur l'espace à gauche du trackpad). La solution pour éteindre la machine est de laisser enfoncé le bouton marche/arrêt jusqu'à ce que l'on ne sente plus les vibrations.

Revenir au sommaire

Informations supplémentaires.

Certains chapitres ne sont pas couverts par ce tutoriel, mais le sont sur un wiki dédié : http://wiki.freebsd.org/AppleMacbook. Vous y trouverez comment utiliser le Bluetooth, le récepteur infrarouge, etc.

Back to table of contents