Installation de la Debian stable et unstable, sous linux 2.4 et
2.6, sur un ibook 2.2
David Decotigny
Revision: 1.40
Date: 2005/05/05 15:53:17
Résumé :
Notes sur l'installation de GNU/linux Debian 3.0 R1 (aka Woody r1) à
partir des CD sur un ibook 2.2 800MHz (acheté février 2003) avec carte
video ATI Radeon 7500 (M7 LW), en dual-boot Mac OS X / debian, clavier
français. Suivies de notes sur le passage en unstable, puis
sur le passage au noyau linux 2.6.
Table des matières
Introduction
Voila quelques notes que j'ai prises (et que je continue de prendre)
durant l'installation. Je ne prétends pas donner LA solution,
ces notes sont là surtout pour que je me souvienne comment j'ai fait,
histoire de ne pas perdre trop de temps sur des détails qui m'ont
déjà suffisamment énervé une première fois. Alors si ça peut servir
à d'autres, tant mieux.
Je précise qu'une connaissance de debian est hautement recommandée
(avoir les bons réflexes, savoir interpréter les messages d'erreur,
savoir se débrouiller en console et sous X, avoir certaines bases
sur la configuration d'une debian).
Je précise également que je n'ai jamais touché à un Mac de ma vie (je
découvre, c'est chouette), que je ne suis abonné à aucune mailing-list
linux/mac, ni à aucun newsgroup sur le sujet, que je suis énormément
pollué par debian/PC, que les subtilités du clavier et de l'ADB me
dépassent, que je ne suis pas 100% au point côté magie du
partitionnement pour MacOS X et l'openfirmware, etc... donc il y'a
sûrement des inexactitudes, des approximations, ou des complications.
En fin de fichier, il y a une série de liens que j'ai utilisés. On
trouvera mes fichiers de config dans ce répertoire (linux et macosx) :
http://david.decotigny.free.fr/libre/ibook2-debian/.
Sauf mention explicite, la suite de ce document se rapporte à la
debian woody (3.0) sur un noyau linux 2.4. Toutes les indications sur
le passsage en unstable (principalement en fin de document) supposent
qu'une installation de la woody a été préalablement réalisée. Et, de
même, les indications sur le passage au noyau linux 2.6
(principalement en fin de document) supposent qu'on a effectué le
passage en unstable.
Je reste bien évidemment ouvert a toutes les remarques, surtout
constructives : mail david point decotigny at free point fr.
Nouveautés
-
28 Février 2004 :
- Passage au noyau 2.6 (cf section
20), bug clavier avec les certains XFree 4.3 de la
unstable (semaine du 20 Février 2004, cf section 7.4),
bidouille qui marche pour activation vers le VGA externe sans booter
sous OS/X avant.
- 20 Mai 2003 :
- Passage en unstable (cf section
19).
- 1er Mai 2003 :
- Modem ADSL USB de Free (Sagem Fast 800), Modem
RTC interne, souris USB, memory stick USB, anti-aliasing sous X,
fonctionnement à mi fréquence pour économiser la batterie.
- Février 2003 :
- Console, clavier, X, CD, Son, souris, ...
Qu'est-ce qui (ne) marche (pas) ?
Au final, voila l'état de la chose :
-
noyaux 2.4 et 2.6, debian stable (woody) et unstable
- clavier français sous X (mapping MacOS) et console (mapping un
peu différent), avec support des touches ``spéciales'' Apple
(volume, eject CD)
- trackpad Ok sous X et avec gpm
- XFree86 avec support (DRI) ATI Radeon M7 LW (glxgears fait
du 1200 fps en 16bpp environ, quelques centaines en 24bpp) et
anti-aliasing des fontes
- PMU (équivalent APM) : la led blanche en façade bat quand on
rabat l'écran (ie sommeil), et (surtout) l'ibook se réveille
quand on le relève. Fonctionnement à mi-fréquence quand on est sur
batterie (meilleure autonomie)
- ethernet interne Ok
- carte son interne Ok
- cdrom : lecture CD data/audio Ok. Gravure Ok
- modem interne Ok
- modem USB ADSL de Free (Sagem Fast 800) Ok
- firewire : pas pu tester, mais reconnu
- Airport (aka Wifi/802.11b) : je ne l'ai pas
- déport écran vers VGA Ok (option CloneDisplay de
XFree86) ; vers S-Video Þ pas réussi à configurer
correctement.
- partition d'échange (MSDOS) MacOS X / Linux montée au démarrage
de MacOS X / Linux.
- Divers : souris USB, memory stick USB
1 Prérequis
-
Un ibook 2. Le mien, acheté en Février 2003, est un ibook2.2,
c'est marqué dans /proc/cpuinfo sous Linux. L'écran est un
14", et cela semble ne pas avoir d'importance pour l'installation.
- Les 2 CD d'installation de Mac OS X. J'ai aussi installé les 2
CD de ``restauration des applications'' Apple, utiles pour
avoir les outils de développement (on n'en a pas besoin du tout pour
la suite, mais c'est toujours intéressant à regarder) et aussi la
suite bureautique Apple.
- Les 7 CD debian 3.0 r1, le premier étant le ``Non US''. Je les
ai fabriqués en utilisant jigdo depuis solaris
(http://www.debian.org/CD/jigdo-cd/).
- Je conseille un autre ordinateur disposant d'une prise RJ45 (via
câble croisé ou hub) pour le connecter à l'ibook durant les
phases délicates de la configuration (clavier, X).
2 Partitionnement
Il faut réinstaller OS X fourni par défaut, puisqu'un repartitionnement
du disque est évidemment nécessaire. Donc ne pas trop perdre de temps
à configurer OS X, ni trop bosser dessus avant d'installer la debian,
ça évite d'avoir à faire des sauvegardes.
2.1 Informations préliminaires
Il y a 3 choses a noter, dont certaines peuvent surprendre les habitués
du monde PC-Intel :
-
Il y a un ordre logique des partitions défini dans la table des
partitions, qui peut être différent de l'ordre physique sur le
disque. Avec l'utilitaire mac-fdisk sous linux, il y a moyen
de changer l'ordre logique des partitions (commande 'r').
- OS X se contrefiche visibement de l'ordre logique et physique
dans lequel on met les partitions. Ce qui veut dire qu'on peut
mettre la partoche principale d'OS X à un endroit, et rajouter plus
tard des partitions avant (et après) cet endroit.
- Il n'y a pas de notion de partition étendue/logique/primaire
comme sous PC. Je ne connais pas la limite du nombre de partoches
possibles, mais visiblement c'est pas mal (chez moi, ça va jusqu'à
hda20 sans problème).
- La phase de boot accorde de l'importance à l'ordre logique
des partitions. S'il y a plusieurs partitions bootables,
alors l'ibook bootera sur la première parmi ces partitions
bootables, dans l'ordre logique de la table des partitions. On verra
que c'est un paramètre à prendre en compte pour le
partitionnement côté Linux.
Une fois tout ceci etabli, les phases de partitionnement qui suivent
ne devraient pas poser de probleme. Le but de ces 2 manips est de
créer une partoche pour MacOS X (éventuellement d'autres pour MacOS 9
et Darwin), et de laisser de la place pour linux, sous la forme d'une
partition libre, ou d'une partition bidon. Cet espace sera effacé plus
tard lors de l'installation de Linux qui l'utilisera pour créer ses
partitions de swap, la racine, /usr...
Il est conseillé (mais pas nécessaire) de mettre l'espace libre pour
linux avant les partitions Mac (avec l'utilitaire MacOS décrit
ci-dessous), car linux installe un outil pour le multiboot (yaboot, équivalent a Lilo sur PC) dans une partoche bootable
spéciale, dite ``bootstrap'', qui sera créée dans la partoche
laissée à linux : pour éviter d'avoir à modifier l'ordre logique des
partoches plus tard, le mieux est de prévoir le coup le plus tôt
possible, c'est-a-dire qu'il vaut mieux que cet espace soit
avant les partoches MacOS, afin que le bootstrap yaboot soit avant (ordre logique) celles-ci, pour etre booté
en priorité (cf ci-dessus). Si on ne fait pas ça, vu qu'il y'a
moyen de changer l'ordre logique des partoches avec l'outil de
partitionnement sous linux, ce n'est pas grave (cf la suite).
Enfin, Linux n'est pas top au point sur les partoches HFS+ (ie
HFS extended), et Mac ne sait pas lire les partitions linux (ext2/3).
Donc pour partager des données entre Linux et Mac, il faut :
-
soit installer MacOS X sur une partoche UFS (aka Unix FS)
lisible depuis linux (lecture seule semble-t'il) en sachant que ça
posera des problèmes pour Mac OS 9 (... que j'ai pu lire à droite à
gauche, mais je ne confirme pas) et aussi (on m'a dit) pour MacOS X
(l'installation se bloque) ;
- soit on installera MacOS sur HFS+ (Ok avec OS X et OS 9) et on
rajoutera une partition speciale d'échange entre MacOS X et linux
(par exemple au format MS-Dos, que linux et MacOS savent manipuler).
C'est ce que j'ai fait (partoche de 800M), voir section
16.
2.2 Repartitionnement côté MacOS X
Marche à suivre :
-
booter sous OS X (disque dur)
- insérer le CD 1 d'install MacOS X
- une fenêtre apparaît, cliquer bouton ``installer''
- [la machine reboote toute seule sur le CD]
- Une fois rebooté sur le CD, dans le menu install en haut
de l'ecran, sélectionner Disk Utility
- une fenêtre avec une espèce d'arborescence des volumes (disques
durs, CD, partitions) apparaît, sélectionner le disque dur (et pas
une de ses partitions)
- selectionner l'onglet partition
- on a moyen de diviser la grande partition qui existe par défaut
en plusieurs autres plus petites, et éventuellement de supprimer des
partitions qu'on vient de rajouter (boutons divide/suppress en bas).
On peut également modifier la taille des partitions directement en
faisant glisser la glissière dessinée entre les partitions. À ce
stade, les partitions qu'on créé ne seront validées (ie
écrites sur disque) qu'au moment ou on cliquera sur le bouton ``partition''.
- avec cet utilitaire, l'objectif est de créer une partition pour
MacOS X, plus petite que le disque, les autres pour Mac si besoin
(MacOS 9, Darwin, ...), et de laisser de la place pour linux (sous
la forme d'une partition bidon par exemple, ou d'une partition de
type Free space). Puisqu'on ne peut modifier la taille d'une
partoche que si la glissière entre 2 partitions apparaît, on est
obligé de découper la grosse partition qu'on avait à l'origine, en
(au moins) 2 plus petites (bouton divide). On doit au moins
voir 2 partitions apparaître, sachant que l'une est pour linux et
l'autre pour MacOS X. Si on veut installer MacOS 9 sur une partition
séparée, on doit en faire apparaître une 3ème. Une 4ème pour Darwin si
besoin, etc...
- il faut choisir un nom pour chaque partition. Par exemple ``MacOS X'' (et ``Debian'' si on a préféré définir une
vraie partition pour debian plutot que laisser l'espace libre).
C'est ce nom qui apparaîtra dans le bureau MacOS. La partition
debian sera effacée plus tard, donc son nom est sans importance (...
ne rien mettre dans cette partition bien sûr !).
- il faut choisir un type de partition pour chaque partition.
MacOS X peut s'installer sur HFS Extended (HFS+), UFS (Unix FS, mais
c'est déconseillé), et (à vérifier) HFS. MacOS 9 sur HFS+ et HFS
seulement. La partition Linux, on lui met n'importe quel type (y
compris Free Space) puisque de toutes facons elle sera supprimée
lors de l'install linux, pour la diviser en partitions spécialement
linux (on ne peut pas les créer avec l'utilitaire d'Apple).
- une fois la taille des partoches et leur type définis, on peut
écrire ces changements sur le disque (bouton partition), et
quitter l'utilitaire.
Perso, à ce niveau j'ai créé 2 partoches : une HFS+ de 12G de nom
``Mac OS X'' pour MacOS X, et le reste en espace libre pour
Linux. En sachant que dans l'espace pour Linux j'ai prévu de mettre
la partoche d'échange MacOS X / Linux (voir section 16).
Ensuite, on continue l'installation de MacOS X, ce qui ne devrait
pas poser de problème.
2.3 Booter linux
-
Avoir partitionné le disque avec l'utilitaire de MacOS X décrit
ci-dessus, avoir installé MacOS X, et avoir laissé de la place (Free
Space ou partition speciale) pour linux
- être sous MacOS X
- insérer le CD Debian 1 (préférer le non-US si on a le choix)
- rebooter. Au moment du ``bong'' de boot, presser la touche
'c' du clavier, et la maintenir jusqu'à ce que le prompt de
choix de la version de linux à installer apparaisse (un obscur
``Boot:'' je crois).
- taper :
install24 video=ofonly
(entrée)
- linux est en train de booter. La debian procède au choix du
clavier, puis au partitionnement...
2.4 Partitionnement côté Linux
L'utilitaire mac-fdisk (mode texte) est lancé automatiquement
par debian. Il ressemble beaucoup au fdisk du monde PC :
commande '?' pour avoir la liste des commandes possibles, commande
'p' pour afficher la liste des partitions, 'w' pour
enregistrer les modifications sur le disque (à n'utiliser qu'à la
toute fin du partitionnement), 'q' pour quitter l'utilitaire.
Attention, avec le clavier français chargé a ce niveau, mac-fdisk est tres sensible aux fausses manips (genre taper 2
lettres là où il en attend une, taper une lettre là où il attend un
chiffre, toucher aux signes spéciaux genre @, etc...). À ce niveau, si
on fait une fausse manip et que le mac-fdisk se bloque, on peut
switcher vers la console d'urgence avec la touche commande (aka
celle avec une pomme) jusqu'au terminal où on nous dit ``press
enter to activate this terminal'', ce qu'on s'empresse de faire
pour jouer avec 'ps' et 'kill'. Pour revenir au terminal
initial, on appuie sur commande (la liste des terminaux est
circulaire). On peut aussi appuyer sur option-fn-F2 (resp. option-fn-F1) pour recupérer directement le terminal d'urgence
(resp. terminal initial) [la touche option est la touche marquee
Alt].
Dans l'utilitaire mac-fdisk, marche à suivre :
Chez moi le swap fait 500M, la racine fait 250M (s'appelle
"root"), /var aussi (s'appelle
"var"), /usr fait 3G (s'appelle
"usr"), /tmp fait 500M (s'appelle
"tmp"), /home (contient /usr/local aussi) fait
10G (s'appelle "home"). La partoche d'échange
MacOS/Linux fait 800M, auquel cas fdisk donne :
/dev/hda
# type name length base ( size ) system
dump: name /dev/hda len 8
/dev/hda1 Apple_partition_map Apple 63 @ 1 ( 31.5k) Partition map
/dev/hda2 Apple_Driver43 Macintosh 56 @ 64 ( 28.0k) Driver 4.3
/dev/hda3 Apple_Driver43 Macintosh 56 @ 120 ( 28.0k) Driver 4.3
/dev/hda4 Apple_Driver_ATA Macintosh 56 @ 176 ( 28.0k) Unknown
/dev/hda5 Apple_Driver_ATA Macintosh 56 @ 232 ( 28.0k) Unknown
/dev/hda6 Apple_FWDriver Macintosh 512 @ 288 (256.0k) Unknown
/dev/hda7 Apple_Driver_IOKit Macintosh 512 @ 800 (256.0k) Unknown
/dev/hda8 Apple_Patches Patch Partition 512 @ 1312 (256.0k) Unknown
/dev/hda9 Apple_Bootstrap bootstrap 1600 @ 1824 (800.0k) NewWorld bootblock
/dev/hda10 Apple_UNIX_SVR2 swap 1024000 @ 3424 (500.0M) Linux swap
/dev/hda11 Apple_UNIX_SVR2 root 512000 @ 1027424 (250.0M) Linux native
/dev/hda12 Apple_UNIX_SVR2 usr 6291456 @ 1539424 ( 3.0G) Linux native
/dev/hda13 Apple_UNIX_SVR2 var 512000 @ 7830880 (250.0M) Linux native
/dev/hda14 Apple_UNIX_SVR2 tmp 512000 @ 8342880 (250.0M) Linux native
/dev/hda15 Apple_UNIX_SVR2 home 22528000 @ 8854880 ( 10.7G) Linux native
/dev/hda16 MSDOS Echange 1638992 @ 31382880 (800.3M) Unknown
/dev/hda17 Apple_Boot MOSX_OF3_Booter 16384 @ 33021872 ( 8.0M) Unknown
/dev/hda18 Apple_Loader SecondaryLoader 1024 @ 33038256 (512.0k) Unknown
/dev/hda19 Apple_HFS Mac OS X 25565832 @ 33039280 ( 12.2G) HFS
/dev/hda20 Apple_Free 8 @ 58605112 ( 4.0k) Free space
Block size=512, Number of Blocks=58605120
DeviceType=0x0, DeviceId=0x0
Drivers-
1: @ 64 for 23, type=0x1
2: @ 120 for 36, type=0xffff
3: @ 176 for 21, type=0x701
4: @ 232 for 34, type=0xf8ff
Pour fixer les idées, df donne :
Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur
/dev/hda11 247919 206872 28247 88% /
tmpfs 192804 0 192804 0% /dev/shm
/dev/hda12 3096336 2676320 262732 92% /usr
/dev/hda13 247919 181030 54089 77% /var
/dev/hda14 247919 4319 230800 2% /tmp
/dev/hda15 11087104 8502740 2021164 81% /home
/dev/hda16 819264 46608 772656 6% /mnt/echange
none 10240 644 9596 7% /dev
3 Installation du reste de la debian
Prévoir un trombone pour éjecter les CD à la main (petit trou dans le
lecteur de CD), car après le 1er reboot la commande eject
n'existe plus.
Pas de difference notable avec les installations debian PC. Ne pas
oublier d'initialiser chaque partition (ext3 recommandé sur
portable) avant de les monter, sinon mount explose et le reste
aussi (mais ce n'est pas dramatique, il suffit de rebooter et
reprendre l'installation à cet endroit). Le clavier français n'est pas
terrible (il manque des touches, genre ``#'' et ``|'', ce
qui n'est pas bien pratique quand on veut traficoter des choses dans
le terminal d'urgence).
Perso, j'ai installé la base en me limitant a tasksel, et je
n'ai pas lesiné (vu la taille de /usr) : installé dialup,
laptop, dev C/C++, dev Tcl/Tk (pour faire flan avec
le make xconfig du noyau), TeX/LATEX, French env,
X, et desktops gnome/kde. Puis j'ai supprimé les isdn-utils, leafnode, xtel, irda-utils, wvdial, netenv, pcmcia qui ne servent à rien.
X ne fonctionnera pas tout de suite, donc pas la peine de se
fatiguer sur sa configuration, mais il vaut mieux l'installer quand
même, même si on le remplace par une autre version plus tard. J'ai
demandé à avoir gdm comme session manager.
Une fois l'installation réalisée, ne pas oublier de rajouter l'entrée
macosx dans /etc/yaboot.conf, de vérifier celle pour
linux, de rajouter enablecdboot pour plus de confort (cf mon
/etc/yaboot.conf), et de taper ybin pour mettre à jour la
partition de bootstrap. Éventuellement rebooter pour tester tout
ça. Après reboot, gdm/X essaieront de se lancer, planteront 1 fois, 2
fois, puis la debian s'en apercevra et demandera si on veut desactiver
gdm, répondre oui pour continuer à configurer la suite en
mode console.
Si on a besoin de caracteres exotiques (genre ,
|, #, @) pour les opérations qui suivent, accéder à l'ibook depuis
une autre machine (ssh, telnet, ...), c'est plus confortable que de se
casser la tete avec le clavier tout de suite. Il faut bien sûr
demander à avoir configuré la carte reseau ; perso, j'ai choisi de
faire configurer par dhcp lors de l'install.
4 Noyau
4.1 Linux 2.4
Au moins pour que la mise en veille se passe correctement et pour
faire marcher X, on a besoin de compiler son noyau. J'ai récuperé le
noyau de Benjamin Herrenschmidt (http://www.linuxppc.org/) par
rsync. Attention, pour que l'ibook se mette en veille et
(surtout) se réveille quand on baisse/lève l'écran (avec pmud,
cf section 9 plus loin), il faut au moins la version
2.4.20-ben5 (le rsync du 9 Février 2003 était Ok).
J'ai repris le .config hispalinux
(http://www.hispalinux.es/~data/ibook/configs/config-2.4.20-rc1-ben0)
tel quel avec juste 2 modifs optionnelles :
J'ai mis pas mal de choses en modules là-dedans (mais pas le
framebuffer, pour avoir le pingouin au reboot ;).
Une fois le noyau compilé (make dep clean vmlinux modules
modules_install, ou ce qu'il faut à la sauce make-kpkg),
copier vmlinux à l'emplacement /boot/vmlinux-2.4.20-ben5,
et System.map dans /boot/System.map-2.4.20-ben5. Modifier
/etc/yaboot.conf pour ajouter ce nouveau noyau, en gardant
l'ancien. Et lancer ybin pour mettre à jour la partition bootstrap. À partir de maintenant on peut rebooter. Si besoin, on
peut rajouter append="video=ofonly" dans /etc/yaboot.conf
(je ne l'ai pas mis) avant de faire ybin.
Si on a compilé pas mal de choses en modules, pour avoir
reseau/son/modem/XFree... voir la suite.
4.2 Linux 2.6
Voir la section 20.
5 Ethernet
Ça marche bien de base. Si on l'a compilé en module, il faut modifier
/etc/motutils/aliases (cf mes fichiers de config) :
alias eth0 sungem
Puis faire update-modules.
Pour configurer le reseau, on peut reprendre mon /etc/network/interfaces, et pour s'en servir il faudra alors
faire :
ifup eth0 # Activation
ifdown eth0 # Desactivation
6 Serveur X
6.1 Version de base (framebuffer)
La version debian de base fonctionne bien avec le fichier de config
hispalinux, mais seulement en utilisant le pilote fbdev (section
Driver du fichier de config). Ça ne suffit pas pour utiliser la
carte video un peu plus efficacement (par exemple pour bénéficier de
l'accélération 3d).
6.2 Version avec DRI
Pour une version plus complète (accélération 2d et 3d), utiliser la
version 4.2.99 de XFree, disponible en paquet Debian sur
http://people.debian.org/~daenzer/dri-trunk/ (apt-cdrom
add si on a gravé les paquets sur CD, ou modif /etc/apt/sources.list : ajouter par exemple ``deb
http://people.debian.org/daenzer/dri-trunk/'') :
apt-get update
apt-get install xlibmesa3-dri-trunk xserver-xfree86-dri-trunk
Linux 2.4 seulement (dri du 2.6 de base est Ok, cf section
20) : compiler le module DRM pour la Radeon :
apt-get install drm-trunk-module-src
cd n/importe/ou ; tar xzvf /usr/src/drm-trunk/le_fichier.tar.gz
cd modules/drm-trunk
make -f Makefile.linux TREE=chemin/vers/sources/linux/include radeon.o
mkdir /lib/modules/[version-noyau]/kernel/drivers/char/drm/
cp radeon.o /lib/modules/[version-noyau]/kernel/drivers/char/drm/
(chez moi, version-noyau, c'est 2.4.20-ben5)
Mettre a jour /etc/modutils/arch/powerpc.pmac en rajoutant :
pre-install radeon modprobe agpgart
Avant de faire update-modules.
Récupérer le fichier de config XF86 adapté (cf mes fichiers de
config). Personnellement, je suis en 16bpp parce que sinon la 3D est
très poussive (en 24bpp par exemple).
Éviter de lancer X à ce niveau. Car si on lance le nouveau X sur
le nouveau noyau (/etc/init.d/gdm restart si on utilise gdm), d'abord il risque de râler parce qu'il ne trouve pas le
clavier demandé, et si on a du bol et que la fenêtre de login gdm
apparaît alors on est content. Mais... Le clavier est foireux.
C'est là que la connexion depuis une autre machine est intéressante,
parce qu'avec un beau X sous le nez inutilisable à cause du clavier,
on ne peut plus revenir en console pour modifier le reste (ie le
clavier). Bref, si on ne peut pas se connecter a l'ibook depuis une
autre machine, éviter de lancer le serveur X maintenant.
6.3 Sortie vers écran extérieur
C'est de la bidouille mais ça marche pour une sortie vers un écran type VGA :
-
pas besoin de booter sous OSX, pas besoin d'avoir branché le
câble de déport VGA avant de booter. Si cependant on faisait l'un
et/ou l'autre, sans doute qu'au niveau Linux ça marche d'office sans
la bidouille qui suit.
- lancer XFree normalement (avec UseFBDev True),
s'apercevoir que le CRT est dans les choux
- commenter UseFBDev du XF86Config-4, relancer X, s'apercevoir que
le CRT est OK mais que le LCD n'est pas terrible (stries)
- revenir au XF86Config-4 initial (ie decommenter UseFBDev
True), relancer X, et constater que le LCD et le CRT sont Ok.
Je n'ai pas réussi à activer convenablement la sortie extérieure sur
S-Video, ni en PAL ni en NTSC : le mode est tout à fait
incorrect. Peut-être ça marche mieux avec XFree 4.3.
6.4 Anti-aliasing
Étant donnée la faible résolution de l'écran (1024x768), il vaut mieux
utiliser l'anti-crénelage sous X, sinon les textes (en particulier sous
mozilla) sont difficiles et désagréables à lire.
Installer le package libgdkxft0 puis utiliser la session gnome-AA sous gdm si vous l'utilisez, ou sinon demander à
charger LD_PRELOAD=/usr/lib/libgdkxft.so avant le reste du Xsession.
La config gdkxft de base est peu efficace, demander à être un
peu plus violent : un fichier de configuration $HOME/.gdkxft comme
celui qui suit fait très bien l'affaire :
!-*-fixed-*
7 Clavier
Un conseil, avoir un autre ordinateur connecté à l'ibook pour faire
les essais, c'est toujours désagreable de se retrouver avec un clavier
inutilisable et de devoir faire un reboot hard (bouton on/off pendant
5s). J'ai trouvé la config clavier particulièrement pénible, et visiblement
la config clavier console influence la config clavier pour X...
7.1 Configuration du noyau
Première précaution à prendre, s'assurer que le driver clavier génère
les scancodes (ou les keycodes, j'y ai jamais rien
compris) linux, plutot que ceux dits ``ADB'' : si il y'a un
``fichier'' /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes, alors il
faut s'assurer qu'il contient "1". Sinon faire :
echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
Et pour que ce soit remis à 1 à chaque reboot, rajouter :
dev/mac_hid/keyboard_sends_linux_keycodes=1
Dans /etc/sysctl.conf. Attention, dans ce cas, il faudra que les
scripts d'initialisation rechargent les scancodes après que ce fichier
ait été traité (par /etc/init.d/procfs.sh) ; pour ça, rajouter le
script /etc/init.d/rekeymap.sh suivant :
#!/bin/sh
/bin/loadkeys /etc/console/boottime.kmap.gz
Puis faire :
chmod 755 /etc/init.d/rekeymap.sh
update-rc.d start rekeymap.sh 60 S .
Autre solution (alternative à tout ce qui precede), compiler le noyau
sans CONFIG_MAC_ADBKEYCODES (menu ``Macintosh
device drivers'').
7.2 Config en console et sous X
Faire la manip suivante (inspirée de celle décrite par David
Mentré dans
http://www.linux-france.org/macintosh/clavier_rpm3.html) :
-
récupérer ftp://ftp.linux-france.org/pub/macintosh/kbd-mac-fr.tar.gz
- clavier sous X
-
recopier fr_new dans /usr/X11R6/lib/X11/xkb/symbols/macintosh/
- dans /etc/X11/XF86Config-4, les options pour la config du
clavier sont :
Option "XkbRules" "xfree86"
Option "XkbModel" "macintosh"
Option "XkbLayout" "fr_new"
Option "XkbOptions" "ctrl:nocaps"
IMPORTANT : veiller a ce que XkbDisable ne soit pas activée !
- Le nouveau layout sera pris au prochain redémarrage ou
après avoir tué le serveur X (Ctrl-Option-Del ou /etc/init.d/gdm restart).
- clavier console
-
recopier mac-fr-ext_new.kmap.gz dans /usr/share/keymaps/mac/
- faire install-keymap /usr/share/keymaps/mac/mac-fr-ext_new.kmap.gz
- le nouveau clavier est utilisé par la console.
Le clavier devrait se comporter convenablement. En console :
-
le '|' se tape avec option-<
- changer de console, c'est commande-fn-F1..F7 (F7=serveur X)
Sous X :
-
le '|' c'est shift-option-l
- switcher vers une console, c'est... compliqué (gymnastique des
doigts) : commande-ctrl-fn-F1..F7 (ou shift-ctrl-option-fn-F1..F7 si on a une config sans l'option ctrl:nocaps)
- tuer le serveur X : commande-ctrl-del (ou shift-ctrl-option-del pour une config sans ctrl:nocaps)
En console et sous X :
-
pour changer la luminosité de l'ecran, c'est avec F1/F2
- les touches de fonction, c'est avec fn-F1..F12
- les accolades c'est avec option-( et ), et les
crochets avec shift-option-( et ).
- le '' c'est option-shift-/
- le tilde, c'est shift-option-n
À partir de maintenant on devrait pouvoir relancer X sans surprise, et
constater avec émerveillement que glxgears fait du 1200 fps en
16bpp (beaucoup moins en 24bpp), et que tuxracer marche a
merveille (environ 45fps en 16bpp, un peu plus de 10 en 24bpp) !
7.3 Touches spéciales Apple pour le son et l'eject du CD
Par défaut, seules les touches spéciales de réglage de la luminosité
sont accessibles (F1/F2), pas les touches de volume ni celle
d'eject du CD. Il y'a plusieurs manières de s'en sortir pour en
profiter. Pour ma part, je me contente de la première méthode
ci-dessous (ikeyd), qui marche très bien.
7.3.1 Debian stable : ikeyd
C'est un petit démon dispo par défaut avec la debian, et qui
scrute /dev/input/event à la recherche des touches frappées : ça
court-circuite donc à la fois X et la console, et ça permet de gérer
le son directement (via /dev/mixer), et le cd aussi
(/dev/cdrom avec un umount préalable si besoin). Pour
l'installer, un simple :
apt-get install ikeyd
suffit. C'est plus réactif que pbbuttonsd (voir section
7.3.4), et ça ne fait juste que gérer les touches
``spéciales'' contrairement à pbbuttonsd qui fait plein d'autres
choses très bien supportées par ailleurs, comme remplacer pmud,
gérer le rétro-éclairage...
7.3.2 Debian testing/unstable : pbbuttonsd
En testing/unstable, préférer utiliser pbbuttonsd qui s'occupe
également de remplacer avantageusement pmud pour la gestion de
la mise en veille. Voir la section 19.1.1.
7.3.3 Raccourcis clavier sous X
On peut aussi définir un raccourci du style Ctrl-fn-F3/F4/F5/F12
dans son gestionnaire de fenêtres (sawfish) pour faire quasiment
la même chose, au prix d'une combinaison de touches un peu plus
compliquée : il suffit de définir un raccourci clavier de type Run shell command dans sawfish pour ces combinaisons, avec
respecitivement /usr/local/bin/beep 0 (voir script /usr/local/bin/beep que je fournis), /usr/local/bin/beep -10,
/usr/local/bin/beep +10 et eject comme commandes
associées.
Il y a une troisième solution, un peu usine à gaz celle-ci, car elle
permet en plus de remplacer pmud (section 9) : le
logiciel pbbuttonsd (http://www.cymes.de/members/joker/),
à récupérer, compiler et installer à la main.
Le fichier de config pbbuttonsd.conf installé par défaut
redéfinit en profondeur le mapping des touches de fonction pour qu'on
n'ait pas à taper fn quand on veut accéder aux touches de
fonction, et ce mapping reste sous MacOS X : en conséquence, avec ce
fichier de configuration de base, il faut maintenant taper fn
quand on veut accéder aux fonctionnalités luminosité/volume/eject,
même sous MacOS X. Pour revenir au comportement ``normal'' (ie
fn-F1..F12 pour accéder aux touches de fonction, F1/F2/F3/F4/F5/F12 direct pour accéder aux fonctionnalités de
luminosité/volume/eject), modifier l'option kbdmode du pbbuttonsd.conf pour préciser fkeyslast. Je n'ai pas résussi
à faire fonctionner la touche F12 (eject du CD), même en
repositionnant correctement son scancode à 108 (au lieu de 69 par
défaut). Et au final je n'utilise pas pbbuttonsd parce que je
trouve que son temps de réaction à l'appui des touches de volume est
plus lent qu'en utilisant ikeyd ou en définissant un raccourci à
la mano dans le window manager (cf ci-dessus).
7.4 Bug X debian unstable semaine du 20/02/2004
Voir le bug debian #234113 : X cherche la map fr_new dans un
sous-répertoire pc au lieu de tenir compte du fichier
XF86Config-4 qui indique d'utiliser un sous-répertoire macintosh. Bref, une fois X lancé, la touche alt n'est plus
prise en compte, plus moyen de taper un |, ~, ..., et
évidemment plus moyen de revenir en console... En attendant que ce
soir réparé, une fois dans une xterm, faire setxkbmap
fr_new et voilà.
8 Souris
8.1 Configuration X/console
Par défaut le trackpad marche très bien. J'ai juste rajouté
les liens suivants :
cd /dev/input
ln -s mice mouse
ln -s mice psmouse
en mettant le /etc/X11/XF86Config-4 à jour.
C'est pour faire du copier/coller avec la souris en console. Faire un petit :
apt-get install gpm
Ça marche nickel en console et sans perturber X, et sans avoir à se
poser des questions avec le gpm_data.
8.3 Émulation 3 boutons
Pour l'émulation 3 boutons, j'ai repris la manip de David Mentré (ou
presque), c'est-à-dire que j'ai rajouté :
dev/mac_hid/mouse_button_emulation=1
dev/mac_hid/mouse_button2_keycode=68
dev/mac_hid/mouse_button3_keycode=87
dans /etc/sysctl.conf (puis faire /etc/init.d/procps.sh).
Ça veut dire que le bouton du milieu correspond à F10, et le bouton de
droite à F11. Pour choisir d'autres touches pour les boutons
supplémentaires, utiliser showkey en console.
8.4 Marre du mode ``cliquer quand on rabaisse le doigt
rapidement sur le trackpad''
Déjà qu'il n'y a qu'un bouton de souris sur un Mac, si c'est pour ne
pas l'utiliser... Je n'aime pas que la bécane décrète pour moi que
j'ai cliqué quand je n'ai fait que rabaisser un peu brutalement mon
doigt sur le trackpad.
Pour modifier ce comportement (passage en mode dit notap),
utiliser par exemple /sbin/trackpad du package powerpc-utils installé par debian par défaut. J'ai rajouté le
script d'initialisation /etc/init.d/trackpad pour que le trackpad soit configuré en mode notap à chaque reboot :
#!/bin/sh -e
case "$1" in
start|restart)
/sbin/trackpad notap
;;
stop|reload|force-reload)
;;
esac
L'installer avec update-rc.d
trackpad start S 60 .
Sinon, si on utilise pbbuttonsd (voir section
7.3.4), il suffit de modifier l'option tpmode du
pbbuttonsd.conf pour y mettre notap.
8.5 Souris externe USB
Suffit de brancher, et hop, ça marche !
9 Gestion de l'énergie
C'est pour que le coeur (la led blanche en façade) de l'ibook batte
quand on rabat l'ecran, et (surtout) qu'elle s'éteigne et que tout
revienne en ordre quand on le relève... Pour faire cette prouesse
technologique, le service de gestion de l'énergie adapté s'appelle
PMU sur l'ibook, et non pas APM qui est installé par debian par
défaut.
9.1 Noyau et applications de suivi
Il faut un noyau récent (³ 2.4.20-ben5), et pmud ou pbbuttonsd (cf section 9.2 ci-dessous) pour que ça
marche au poil. Si ce n'est pas le cas, il faut récupérer une version
récente, et se le compiler aux petits oignons.
Important : pour que ça marche vraiment, c'est-à-dire pour
que l'ibook se réveille correctement quand on relève l'écran, il faut
que le périphérique caractéres /dev/apm_bios existe (il permet
d'indiquer au pilote X de la Radeon que le portable s'apprête à
s'endormir quand on rabaisse l'écran, histoire qu'il retrouve ses
petits au réveil). Il est créé par tasksel par défaut quand on
choisit l'ensemble d'applications laptop lors de l'installation
de la debian. Mais, s'il n'existe pas, faire :
mknod /dev/apm\_bios c 10 134
chmod 770 /dev/apm\_bios
Après ces vérifications, quand on rabat l'écran, le portable se met en
sommeil et la led blanche s'allume. Et quand on relève l'écran, la
bécane se rallume, toute fraîche (que ce soit sous X ou en console) !
Si on a oublié de créer /dev/apm_bios, l'ibook ne se réveille
tout simplement pas quand on relève l'écran...
Sous gnome, utiliser l'applet battery_applet qui marche très
bien pour savoir où en est la batterie (et en plus ça signale quand
elle passe dessous les 5%). Il y a aussi une applet spéciale pmu, mais je la trouve trop grosse et pas jolie.
9.2 Outils de gestion de l'énergie
Première solution, installer pmud fourni en standard avec la
debian :
apt-get install pmud pmud-utils
en demandant de virer apmd installé par défaut par tasksel.
J'ai juste modifié un peu la config pour que l'ibook ne se mette
pas en veille quand on rabat l'écran alors qu'il est sur le secteur,
mais ce n'est pas fondamentalement nécessaire : ça se passe dans
/etc/default/power :
PMUD_FLAGS="-a -K"
Puis faire ``/etc/init.d/pmud stop ; /etc/init.d/pmud start''.
9.2.2 pbbuttonsd
Deuxième solution : récupérer, compiler et installer pbbuttonsd
(voir section 7.3.4), et lui demander de remplacer pmud (option de configuration replace_pmud).
Personnellement, je préfère n'utiliser que pmud de base.
9.3 Améliorer l'autonomie
9.3.1 Fréquence du processeur
Pour que pmud fasse tourner le processeur 2 fois moins vite
quand on est en mode nomade (ie sur batterie), il faut compiler son
noyau avec les options CONFIG_CPU_FREQ et CONFIG_CPU_FREQ_PMAC, et avoir un fichier /etc/power/pwrctl-local qui ressemble (merci David Mentré) à :
#!/bin/bash
logger=/usr/bin/logger
case "$1" in
minimum)
$logger -p daemon.info -t pwrctl-local "minimum power $2"
case "$2" in
ac)
echo -n "0%50%100%performance" > /proc/cpufreq
echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
;;
*)
echo -n "0%50%100%powersave" > /proc/cpufreq
echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
;;
esac
;;
medium)
$logger -p daemon.info -t pwrctl-local "medium power $2"
case "$2" in
ac)
echo -n "0%50%100%performance" > /proc/cpufreq
echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
;;
*)
echo -n "0%50%100%powersave" > /proc/cpufreq
echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
;;
esac
;;
maximum)
$logger -p daemon.info -t pwrctl-local "maximum power $2"
case "$2" in
ac)
echo -n "0%50%100%performance" > /proc/cpufreq
echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
;;
*)
echo -n "0%50%100%powersave" > /proc/cpufreq
echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
;;
esac
$logger -p daemon.info -t pwrctl-local "skipping pwrctl-main"
exit 1
;;
warning)
/usr/bin/wall "Low battery, system going down any minute now"
;;
lid-closed)
$logger -p daemon.info -t pwrctl-local "lid-closed $2"
;;
lid-opened)
$logger -p daemon.info -t pwrctl-local "lid-opened $2"
;;
sleep)
$logger -p daemon.info -t pwrctl-local "sleep $2"
# Some modules don't support sleep/resume
/sbin/rmmod -a
sleep 3
/sbin/rmmod -a
sync;sync;sync
fblevel off
;;
wakeup)
$logger -p daemon.info -t pwrctl-local "wakeup $2"
/sbin/rmmod -a
case "$2" in
ac)
echo -n "0%50%100%performance" > /proc/cpufreq
echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
;;
*)
echo -n "0%50%100%powersave" > /proc/cpufreq
echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
;;
esac
fblevel on
;;
*)
$logger -p daemon.error -t pwrctl-local "invalid arg $1 $2"
exit 2
;;
esac
exit 0
9.3.2 Limiter les accès en écriture au disque
Pour limiter les mises à jour sur disque lors des accès en lecture,
spécifier l'option noatime dans le /etc/fstab.
Rien à signaler si le noyau a été compilé comme indiqué ci-dessus.
Si on a compilé en modules, rajouter dans /etc/modutils/aliases :
alias char-major-14 soundcore
alias sound-slot-0 dmasound_pmac
alias sound-slot-1 dmasound_pmac
alias char-major-14-3 dmasound_pmac
alias /dev/dsp dmasound_pmac
alias sound-service-0-0 i2c-keywest
alias sound-service-0-3 i2c-keywest
alias sound-service-1-0 i2c-keywest
alias char-major-14-0 i2c-keywest
alias /dev/mixer i2c-keywest
Puis faire update-modules.
Pour modifier le volume, utiliser par exemple aumix. Attention,
gnome par défaut utilise ESD, ce qui peut poser des problèmes si les
logiciels veulent utiliser directement OSS : killall esd (et/ou
intervention dans le panneau de contrôle gnome) peut résoudre le
problème. Autre détail : on entend un craquement au moment où on
relève l'écran quand l'ibook était en sommeil.
11 Performances disque dur
J'ai rajouté ce script /etc/init.d/hdparm :
#!/bin/sh
set -e
#In certian cases you may wish to run this script twice. Once at S07
#and once later in the boot process. If you do this call /etc/init.d/hdparm
#again from rcS.d with a name such as S27hdparm.second.
#
#See /usr/share/doc/hdparm/README.Debian for more details.
case "$0" in
*hdparm)
FIRST=yes
;;
*)
FIRST=no
;;
esac
MYNAME="$0"
report()
{
echo "${MYNAME}: $*"
}
report_error()
{
echo "${MYNAME}: Error: $*" >&2
}
report_error_and_exit()
{
report_error "$*. Exiting."
exit 1
}
case $1 in
start|restart|reload|force-reload)
;;
stop)
exit 0
;;
*)
echo "Usage: $MYNAME {stop|start|restart|reload|force-reload}" >&2
exit 3
;;
esac
if [ "$FORCE_RUN" != 'yes' ]; then
if grep -w -q "nohdparm" /proc/cmdline ; then
report "*** Skipping setup of disc parameters. ***"
exit 0
fi
raidstat=OK
if [ -e /proc/mdstat ]; then
if grep -iq resync /proc/mdstat; then
raidstat=RESYNC
fi
elif [ -e /proc/rd/status ]; then
raidstat=`cat /proc/rd/status`
fi
if ! [ "$raidstat" = 'OK' ]; then
report_error "*** RAID status not OK. Exiting. ***"
exit 0
fi
fi
echo -n "Setting parameters of disc:"
DISC=
DEFAULT=
OPTIONS=
DEF_QUIET=
OPT_QUIET=
# set_option() adds $1 to the $OPTIONS list if in a disk stanza
# and adds $1 to the $DEFAULT list if not in a disk stanza
#
# the block beginning:
# if test x${i%${i#??}} != x${1%${1#??}}; then
# checks to see if $1 is already in the list and
# if so removes the first instance
set_option()
{
if test -n "$DISC"; then
NEW_OPT=
for i in $OPTIONS; do
if test x${i%${i#??}} != x${1%${1#??}}; then
NEW_OPT="$NEW_OPT $i"
else
NEW_OPT=${NEW_OPT%-q}
fi
done
OPTIONS="$NEW_OPT $OPT_QUIET $1"
else
NEW_DEF=
for i in $DEFAULT; do
if test x${i%${i#??}} != x${1%${1#??}}; then
NEW_DEF="$NEW_DEF $i"
else
NEW_DEF=${NEW_DEF%-q}
fi
done
DEFAULT="$NEW_DEF $DEF_QUIET $1"
fi
}
eval_value()
{
case $1 in
off|0)
set_option "$2"0
;;
on|1)
set_option "$2"1
;;
*)
return 1
;;
esac
}
ITEMS_ECHOED=no
# Get blocks as far as the drive's write cache.
/bin/sync
# Set options for a group of disks in /etc/default/hdparm
[ -e /etc/default/hdparm ] && . /etc/default/hdparm
if [ -n "$harddisks" -a -n "$hdparm_opts" ]; then
for drive in $harddisks; do
/sbin/hdparm -q -f $drive
hdparm -q $hdparm_opts -q $drive
if [ "$ITEMS_ECHOED" = yes ] ; then
echo -n ", $drive"
else
echo -n " $drive"
ITEMS_ECHOED=yes
fi
done
fi
egrep -v '^[[:space:]]*(#|$)' /etc/hdparm.conf |
{
while read KEY SEP VALUE; do
if [ "$NEXT_LINE" != 'go' ]; then
case $SEP in
'{')
case $KEY in
command_line)
NEXT_LINE=go
unset DISC
unset OPTIONS
unset OPT_QUIET
;;
*)
DISC=$KEY
OPTIONS=$DEFAULT
OPT_QUIET=$DEF_QUIET
WAS_RUN=0
;;
esac
;;
=)
case $KEY in
read_ahead_sect)
set_option -a$VALUE
;;
lookahead)
eval_value $VALUE -A
;;
bus)
eval_value $VALUE -b
;;
apm)
set_option -B$VALUE
;;
io32_support)
set_option -c$VALUE
;;
dma)
eval_value $VALUE -d
;;
defect_mana)
eval_value $VALUE -D
;;
cd_speed)
set_option -E$VALUE
;;
mult_sect_io)
set_option -m$VALUE
;;
prefetch_sect)
set_option -P$VALUE
;;
read_only)
eval_value $VALUE -r
;;
spindown_time)
set_option -S$VALUE
;;
interrupt_unmask)
eval_value $VALUE -u
;;
write_cache)
eval_value $VALUE -W
;;
transfer_mode)
set_option -X$VALUE
;;
acoustic_management)
set_option -M$VALUE
;;
keep_settings_over_reset)
eval_value $VALUE -k
;;
keep_features_over_reset)
eval_value $VALUE -K
;;
chipset_pio_mode)
set_option -p$VALUE
;;
ROOTFS)
ROOTFS=$VALUE
;;
*)
report_error_and_exit "unknown option $KEY"
;;
esac
;;
"")
case $KEY in
'}')
if [ -z "$DISC" ]; then
if [ "$WAS_RUN" != '1' ]; then
report_error_and_exit "No disk enabled. Exiting"
fi
fi
if [ -n "$OPTIONS" ]; then
if [ -b "$DISC" ]; then
if [ -n "$ROOTFS" ]; then
if [ "$FIRST" = 'yes' -a "$DISC" != "$ROOTFS" ]; then
continue
fi
if [ "$FIRST" = 'no' -a "$DISC" = "$ROOTFS" ]; then
continue
fi
fi
# Flush the drive's internal write cache to the disk.
/sbin/hdparm -q -f $DISC
/sbin/hdparm $OPTIONS $DISC
if [ "$ITEMS_ECHOED" = yes ] ; then
echo -n ", $DISC"
else
echo -n " $DISC"
ITEMS_ECHOED=yes
fi
fi
fi
;;
quiet)
if [ -n "$DISC" ]; then
OPT_QUIET=-q
else
DEF_QUIET=-q
fi
;;
standby)
set_option -y
;;
sleep)
set_option -Y
;;
disable_seagate)
set_option -Z
;;
*)
report_error_and_exit "unknown option $KEY"
;;
esac
;;
*)
report_error_and_exit "unknown separator $SEP"
;;
esac
else
$KEY $SEP $VALUE
NEXT_LINE=no-go
WAS_RUN=1
fi
done
if [ "$ITEMS_ECHOED" = yes ] ; then
echo "."
else
echo " (none)."
fi
}
Puis faire ``chmod 755 /etc/init.d/hdparm ; update-rc.d start
hdparm 60 S .''.
12 CD/Graveur
Dans /dev, j'ai modifié/rajouté les liens /dev/cdrom et
/dev/dvd vers /dev/scd0 puisque j'utilise ide-scsi
pour m'en servir comme graveur. Puisque j'ai demandé ide-scsi
en module, il a fallu modifier /etc/modutils/arch/powerpc.pmac
avec :
pre-install sg modprobe ide-scsi
pre-install sr_mod modprobe ide-scsi
Puis faire update-modules.
Pour éjecter les CD, c'est avec la commande eject que ça se
passe (ou cdeject, package cdtool pas installé par
défaut), et on peut utiliser les touches de fonction prévues à cet
effet en définissant des raccourcis, ou en espérant que pbbuttonsd fonctionne correctement (cf section
7.3.4).
Pour lire des CD audio, utiliser xmms avec le plugin audio CD
reader. Pour lire des dvd : xine, ogle, ou mplayer
/dev/dvd.
Le graveur marche sans problème avec le support ide-scsi (testé
et approuvé).
13 Video
xine et ogle marchent (apt-get install...). mplayer et videolan compilent et marchent sans problème (pour
gnome, ne pas oublier apt-get install libesd0-dev avant pour que
mplayer détecte et compile le support ESD sous gnome). Par
contre les perfs ne sont pas au rendez-vous : la lecture de DVD sous
ces 4 logiciels est un peu saccadée. La lecture de DIVX;) par contre
est tout à fait fluide avec xine.
14 Modem RTC interne
Après avoir installé un pilote récent (fin Avril 2003) du modem de
Marc Boucher (http://www.mbsi.ca/cnxtlindrv/), le modem interne
de l'ibook fonctionne correctement. Marche à suivre :
-
récupérer le hcfusbmodem-xxxx.tar.gz (cf url ci-dessus)
- tar zxvf hcfusbmodem-xxxx.tar.gz
- su # eh oui, il fait des choses bizarres avec /dev et cie...
- make install
- hcfusbconfig # il pose des questions avant de compiler le module
Puis s'inspirer des configurations que free propose sur son site
(http://support.free.fr/docs/linux/connexion.html) avant de
faire pon ou pon paris-ppp suivant le nom que vous donnez
au fichier créé dans /etc/ppp/peers/. Et voilà la connexion
établie ! Pour se déconnecter, faire poff. Un petit modprobe ucfusbserial peut être nécessaire dans certains cas si
pon échoue.
15 Modem ADSL de Free
Depuis fin Avril 2003, le modem ADSL USB Sagem Fast 800 que Free
fournit à ses abonnés est supporté par Linux sur l'ibook.
Installer une version récente du package hotplug (par exemple :
http://www.fs.tum.de/~bunk/debian/dists/woody/bunk-1/main/binary-i386/hotplug_0.0.20020826-1_all.deb).
Avoir les headers du noyau sur le système (c'est le cas si vous avez
compilé votre noyau : dans ce cas, assurez-vous qu'ils soient
accessibles sous /usr/src/linux/include, sinon installez le
package kernel-headers).
Récupérer la version 1.0.4pre5 ou plus récente du driver eagle-usb sur http://www.eagle-usb.fr.st, ne pas brancher le
modem tout de suite, décompresser le driver, puis faire make
install, répondre aux 2 questions (login/mot de passe). Et hop :
brancher le modem, attendre 10s, faire startadsl et ça marche.
Par la suite, lorsqu'on change de noyau, éviter de refaire le make install (pour éviter de répondre aux questions login/passwd
dont il connaît déjà la réponse) : se contenter d'un cd driver ;
make install.
Pour le fun (ce n'est pas obligatoire), j'ai juste modifié /usr/sbin/startadsl pour que le ifconfig avec l'adresse
192.168.1.30 bidon par défaut devienne plus simplement :
/sbin/ifconfig $INTERFACE up
.
Pour information, voici ce que donne /sbin/ifconfig
adsl0 Lien encap:Ethernet HWaddr 00:60:4C:10:FD:B9
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2712 errors:0 dropped:0 overruns:0 frame:0
TX packets:2585 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
RX bytes:1151880 (1.0 MiB) TX bytes:229038 (223.6 KiB)
ppp0 Lien encap:Protocole Point-à-Point
inet adr:82.64.69.69 P-t-P:192.168.254.254 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:2508 errors:0 dropped:0 overruns:0 frame:0
TX packets:2374 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:3
RX bytes:1100931 (1.0 MiB) TX bytes:175392 (171.2 KiB)
Et voici ce que dit plog :
May 1 22:10:12 baloo pppd[21431]: pppd 2.4.1 started by root, uid 0
May 1 22:10:12 baloo pppd[21431]: Using interface ppp0
May 1 22:10:12 baloo pppd[21431]: Connect: ppp0 <--> /dev/pts/2
May 1 22:10:36 baloo pppd[21431]: kernel does not support PPP filtering
May 1 22:10:36 baloo pppd[21431]: Cannot determine ethernet address for proxy ARP
May 1 22:10:36 baloo pppd[21431]: local IP address 82.64.69.69
May 1 22:10:36 baloo pppd[21431]: remote IP address 192.168.254.254
May 1 22:10:36 baloo pppd[21431]: primary DNS address 213.228.0.68
May 1 22:10:36 baloo pppd[21431]: secondary DNS address 212.27.32.177
Si on veut effectivement avoir le nom adsl0 pour l'interface
(plutôt que le ethXXX par défaut), rajouter : options
adiusbadsl if_name=adsl0 dans /etc/modutils/adiusb par
exemple (puis faire update-modules).
Si on veut se connecter automatiquement au démarrage de la machine,
prévoir un script /etc/ppp/ppp_on_boot du type :
#! /bin/sh
( sleep 15 ; /sbin/ifconfig ppp0 || /usr/sbin/startadsl ) &
16 Configuration d'une partition d'échange MacOS X / Linux
Par défaut, Linux ne sait que lire (un peu) et pas (trop) écrire les
systèmes de fichiers UFS et HFS, et MacOS ne sait pas (encore) lire
les partitions ext2/ext3. Une solution est de passer par une partoche
de type MSDOS (avec les noms longs, aka vfat sous Linux)
pour les échanges de données entre MacOS et Linux.
16.1 Sous Linux
On doit avoir prévu un peu d'espace libre sur le disque, ou une partoche
dédiée pour la partoche d'échange. Chez moi ca fait 800M et ca s'appelle
/dev/hda16.
-
booter sous linux, puis...
- lancer fdisk (qui est un lien vers mac-fdisk),
s'assurer que la partoche en question est du type MS-DOS : majuscules et tiret sont OBLIGATOIRES sinon MacOS
refusera de la monter.
Si ce n'est pas le cas, supprimer la partition en question (commande
d), et en creer une a la place avec la commande C<entrée> (C majuscule !) qui fait la même chose que la
commande c minuscule, mais sans deviner toute seule le type à
affecter à la nouvelle partoche. On peut mettre n'importe quel nom,
seul le type MS-DOS est important.
- mkdosfs /dev/hda[num_partition] : chez moi ça donne
mkdosfs /dev/hda16
- tester : mount -t vfat /dev/hda[num partition] /mnt
Si ça ne marche pas, c'est peut-être parce que le module noyau vfat n'est pas disponible, revoir la config noyau.
- Si ça marche bien, rajouter un point de montage dans /etc/fstab de type vfat.
16.2 Sous MacOS X
-
(booter sous MocOS X, puis...)
- Normalement, la partoche est reconnue, mais non montée par
défaut. On teste quand même d'abord : dans un terminal MacOS
(Applications/Utilitaires/Terminal),
faire :
mkdir /Volumes/Echange
mount_msdos /dev/disk0s[num_partition] /Volumes/Echange
(chez moi : /dev/disk0s16)
Normalement ça doit se passer sans problème, et on doit pouvoir lire
et écrire dans /Volumes/Echange des fichiers quelconques (noms
longs, espaces, plusieurs ``.'', ...).
Si il y a un problème de droit pour faire le mount_msdos,
voir pense-bête plus bas (section C, changer
le mot de passe root) et refaire la manip ci-dessus apres être
passé root (commande su)
- Pour qu'aux prochains reboots l'icône de disque ``Echange''
apparaisse automatiquement sur le desktop au même titre que la
partoche MacOS de base, faire (passer root) :
mkdir -p /Library/StartupItems/MountMSDOS
Puis créer /Library/StartupItems/MountMSDOS/StartupParameters.plist :
{
Description = "Mount MSDOS partitions";
Provides = ("Manual MSDOS partitions");
Requires = ("Disks");
OrderPreference = "None";
Messages =
{
start = "Mounting MSDOS partitions";
stop = "Unmounting MSDOS partitions";
};
}
Ainsi que /Library/StartupItems/MountMSDOS/MountMSDOS :
#!/bin/sh
##
# Local filesystems
##
. /etc/rc.common
StartService ()
{
ConsoleMessage "Mounting MSDOS partition"
mount_msdos /dev/disk0s16 /Volumes/Echange
}
StopService ()
{
return 0;
}
RestartService ()
{
return 0;
}
RunService "$1"
Puis faire :
chown -R root /Library/StartupItems/MountMSDOS
chmod a+rx /Library/StartupItems/MountMSDOS/MountMSDOS
Pour plus de details, cf
http://www.opendarwin.org/documentation/SystemStarter_HOWTO.php
- Et voilà ! Au prochain reboot, la belle icône Echange
apparait sur le desktop.
17 IEEE 802.11b (Airport/Wifi/Wavelan)
Je ne l'ai pas. Suivre les directives de
http://mij.oltrelinux.com/ibook/step_step/index.html sur le
sujet.
18 IEEE 1394 (firewire)
Pas testé.
19 Mise à jour vers unstable
A la date du 20 Mai 2003, ca marche bien. Juste le terminal gnome qui
est difficile a lire a cause de l'antialiasing sur la fonte monospace (utiliser rxvt ou xterm). Evidemment, se
procurer une bonne connexion reseau (genre ADSL), puis :
19.1 Changements par rapport à la stable
19.1.1 Touches spéciales
Utiliser pbbuttonsd plutôt que ikeyd. Le changement est
que, pour accéder aux touches de fonctions en tant que touches de
fonctions, il ne faut plus appuyer sur fn : on appuie
directement sur la touche et ça marche. En conséquence, pour passer en
console depuis X11, c'est comme sur x86 : Ctrl-pomme-Fx. Et
inversement : pour accéder à ces touches en tant que touches spéciales
Apples (volume, CD, etc.), il faut appuyer sur fn.
19.1.2 Mise en veille, gestion de l'énergie
Utiliser pbbuttonsd (eh oui, encore lui) plutôt que pmud.
20 Passage au noyau Linux 2.6
Testé et approuvé avec un noyau 2.6.3 de base. Marche à suivre :
A Remerciements
-
David Mentré,
- Stephane Lentz,
- Christophe Lejeune.
B Support d'un memory stick
Ce n'est pas à proprement parler spécifique à l'ibook. Il suffit
d'installer le support hotplug (j'ai récupéré la version plus récente
http://www.fs.tum.de/~bunk/debian/dists/woody/bunk-1/main/binary-i386/hotplug_0.0.20020826-1_all.deb),
d'avoir un noyau avec CONFIG_USB_STORAGE, et de rajouter un
fichier /etc/hotplug/usb/usb-storage du type :
#!/bin/sh
case $PRODUCT in
58f/9380/100|7b4/105/1)
cat > $REMOVER << EOF
umount /usb-storage
EOF
chmod 755 $REMOVER
mount /usb-storage
;;
*)
;;
esac
(pour l'id 58f/9380/100, soit remplacer
par *, soit le récupérer en regardant /proc/bus/usb/devices).
Et avoir une entrée dans /etc/fstab du type :
/dev/sda1 /mstick vfat noauto,rw,user,sync,gid=50,umask=002
C Pense-bête
D Liens
Id: ibook2-debian.tex,v 1.40 2005/05/05 15:53:17 d2 Exp
Ce document a été traduit de LATEX par
HEVEA.