on December 09, 2011, at 06:10 PM

Installation de base

L'image utilisée est celle de LinuxMint 12 Lisa en 64 bits. .

Je l'ai gravé sur un DVD, mais vous pouvez éventuellement utiliser une clef USB, dans ce cas il faut la mettre dans le port eSATA (celui le plus près de l'écran).

Au démarrage du DVD-Live, appuyer sur une touche quelconque puis ensuite sur tab et ajouter acpi=off aux options de démarrage (derrière les --) dans le mode normal. Normalement si tout se passe bien, vous devriez pouvoir utiliser votre machine sous Linux. Avant de tester et lancer l'installation, je vous conseille d'ouvrir une console afin d'obtenir un clavier AZERTY.

 $ setxkbmap fr

Vous cliquez sur Install Linux Mint et c'est parti. Il ne vous reste plus qu'a suivre les indications et redémarrer, et là grande déception, cela ne marche pas. Taper Esc pour afficher le menu de grub, puis e pour éditer. Ajouter acpi=off (attention, on est en mode QWERTY) dans la ligne linux ... et ensuite F10 pour démarrer.

Une fois votre système en route ouvrir le fichier /etc/default/grub avec votre éditeur préféré et modifier la ligne de GRUB_CMDLINE_LINUX_DEFAULT en ajoutant pcie_aspm=force acpi=noirq i915.semaphores=1, ensuite lancer les commandes :

 $ sudo update-grub
 $ sudo reboot

Wifi

Après l'installation le comportement est erratique, il est par exemple impossible de se connecter au routeur d'une freebox HD, cela n'est néanmoins pas le cas pour d'autres points d'accès. Après avoir largement tâtonné en désactivant le Networkmanager et en fixant la configuration en dur avec entre autre la vitesse, par exemple, solution qui bien que donnant de meilleur résultat ne fonctionnait pas correctement, j'ai fini par désactiver le wifi-n. Avant de le faire définitivement il est préférable de tester :

 % sudo rmmod -f iwlagn
 % sudo modprobe iwlagn 11n_disable=1

et si cela fonctionne, vous pouvez rendre cela définitif en créant ou éditant un fichier /etc/modprobe.d/iwlagn-disable11n.conf puis en ajoutant la ligne options iwlagn 11n_disable=1

Il faut également désactiver la gestion d'énergie. C'est le fichier /usr/lib/pm-utils/power.d/wireless qui s'en occupe. Une solution consiste à le masquer en créant un fichier /etc/pm/power.d/wireless avec le contenu suivant :

 #!/bin/sh
 /sbin/iwconfig wlan0 power off

Pour redémarrer le réseau :

 % sudo nohup sh -c "invoke-rc.d networking stop; sleep 2; invoke-rc.d networking start"

Il est possible que votre carte soit éteinte ou verrouillée la combinaison de touche est Fn F2 mais parfois mystère cela ne fonctionne pas ! rfkill est une solution au problème.

 % rfkill list
 0: dell-wifi: Wireless LAN
 	Soft blocked: yes
 	Hard blocked: yes
 1: dell-bluetooth: Bluetooth
 	Soft blocked: no
 	Hard blocked: no
 2: hci0: Bluetooth
 	Soft blocked: no
 	Hard blocked: no
 3: phy0: Wireless LAN
 	Soft blocked: no
 	Hard blocked: no

 % sudo rfkill unblock 0

Touchpad

Il fonctionne correctement même si toutes les fonctionnalités ne sont pas toutes là. Par contre, il n'y a pas d'émulation du 3éme boutons.

 $ sudo apt-get install gpointing-device-settings
 $ sudo gpointing-device-settings

Cocher la case correspondante.

Une autre méthode consiste à utiliser xinput

 $ xinput list
 ⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
 ⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
 ⎜   ↳ ImPS/2 Generic Wheel Mouse              	id=13	[slave  pointer  (2)]
 ⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
     ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
     ↳ Power Button                            	id=6	[slave  keyboard (3)]
     ↳ Video Bus                               	id=7	[slave  keyboard (3)]
     ↳ Video Bus                               	id=8	[slave  keyboard (3)]
     ↳ Power Button                            	id=9	[slave  keyboard (3)]
     ↳ Sleep Button                            	id=10	[slave  keyboard (3)]
     ↳ Laptop_Integrated_Webcam_2HDM           	id=11	[slave  keyboard (3)]
     ↳ AT Translated Set 2 keyboard            	id=12	[slave  keyboard (3)]
     ↳ Dell WMI hotkeys                        	id=14	[slave  keyboard (3)]

ensuite vous récupérez les propriétés de votre souris/touchpad

 $ xinput --list-props "ImPS/2 Generic Wheel Mouse"
 Device 'ImPS/2 Generic Wheel Mouse':
	Device Enabled (132):	1
	Coordinate Transformation Matrix (134):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	Device Accel Profile (253):	0
	Device Accel Constant Deceleration (254):	1.000000
	Device Accel Adaptive Deceleration (255):	1.000000
	Device Accel Velocity Scaling (256):	10.000000
	Evdev Axis Inversion (257):	0, 0
	Evdev Axes Swap (259):	0
	Axis Labels (260):	"Rel X" (142), "Rel Y" (143)
	Button Labels (261):	"Button Left" (135), "Button Middle" (136), "Button Right" (137), "Button Wheel Up" (138), "Button Wheel Down" (139), "Button Horiz Wheel Left" (140), "Button Horiz Wheel Right" (141)
	Evdev Middle Button Emulation (262):	0
	Evdev Middle Button Timeout (263):	50
	Evdev Wheel Emulation (264):	0
	Evdev Wheel Emulation Axes (265):	0, 0, 4, 5
	Evdev Wheel Emulation Inertia (266):	10
	Evdev Wheel Emulation Timeout (267):	200
	Evdev Wheel Emulation Button (268):	4
	Evdev Drag Lock Buttons (269):	0

Il ne reste plus qu'à positionner à 1 l'émulation du troisième bouton.

 $ xinput set-prop "ImPS/2 Generic Wheel Mouse" "Evdev Middle Button Emulation" 1

Carte SD et XD

Il faut que les linux-headers système soient installés, ainsi que le compilateur C.

 $ sudo apt-get install linux-headers-`uname -r`

Ensuite il vous reste à récupérer l'archive tarball jmb38x.tar.gz et la compresser, compiler et l'installer.

 $ sudo su
 # tar zxvf  jmb38x.tar.gz
 # cd jmb38x
 # make ; make install 

Utilisation des cartes graphiques

C'est ici que les choses se gâtent.

Contexte

La machine dispose de 2 cartes graphiques :

  • Une Intel intégrée qui offre des performances modestes et une consommation réduite.
  • Une nVidia avec des bonnes performances, mais qui consomme beaucoup d'énergie et en conséquence une autonomie très réduite.
 % lspci | grep VGA
 00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
 01:00.0 VGA compatible controller: nVidia Corporation Device 0df5 (rev a1)

La technologie Optimus permet de switcher entre les deux cartes de manière transparente pour l'utilisateur, de mettre en route la carte nVidia lorsqu'une application a besoin d'accélération matérielle et d'utiliser la carte Intel qui est largement suffisante pour une utilisation quotidienne. Tout ça marche tout seul ... sous Windows. Pour l'instant nVidia refuse de développer des pilotes qui supportent Optimus sous Linux, donc pas de solution propre, que du bricolage.

Après la procédure d'installation décrite plus haut, on se retrouve dans une situation très défavorable : le serveur X tourne la carte intégré et n'offre pas de bonnes performances graphiques. En même temps la carte nVidia reste allumée et consomme de l'énergie. Il n'est même pas possible de faire tourner le serveur X sur la carte nVidia. Les sorties vers l'écran sont reliées à la carte intégrée. Normalement quand la grosse carte fonctionne, elle ne fait que des calculs et de remplissage de framebuffers et c'est la petite carte qui se charge de les afficher. Donc si on essaye de démarrer un serveur X sur la nVidia, il ne trouvera pas d'écran. La meilleure solution pour l'instant est bumblebee (et ses nombreux clones). Ça consiste à démarrer 2 serveurs X, un sur chaque carte, et de les faire communiquer par une bibliothèque qui s'appelle VirtualGL. La performance n'est pas terrible, mais c'est mieux que rien.

Bumblebee

Je vous conseille avant toute chose d'installer les pilotes pour votre carte NVidia si vous ne l'avez pas déjà fait. Pour ne pas l'avoir fait dans cette ordre j'ai planté toute mon installation X. Il faut ensuite récupérer et installer bumblebee pour lequel il existe un dépot.

 $ sudo add-apt-repository ppa:bumblebee/stable
 $ sudo apt-get update
 $ sudo apt-get install bumblebee

ensuite vous vous ajoutez dans le groupe bumblebee

 $ sudo usermod -a -G bumblebee machin

et vous vous déconnectez et reconnectez. Utiliser la commande optirun pour lancer les applications que vous souhaitez sur la carte nVidia, par exemple :

 $ optirun glxgears

Gestion de l'énérgie

Pour connaître la consommation au 100 km. Débrancher votre machine du secteur si nécessaire.

 $ cat /proc/acpi/battery/BAT0/state

 present:                 yes
 capacity state:          ok
 charging state:          discharging
 present rate:            1978 mA
 remaining capacity:      4391 mAh
 present voltage:         16135 mV

La carte nVidia reste allumée même si elle n'est pas utilisée. optirun permet de l'allumer et l'éteindre, mais cette fonctionnalité n'est pas activée par défaut. Il faut tout d'abord installer le module acpi-call si ce n'est pas déjà fait.

 sudo apt-get install acpi-call-tools

ensuite modifier deux options dans le fichier /etc/bumblebee/bumblebee.conf

 ENABLE_POWER_MANAGEMENT=Y
 STOP_SERVICE_ON_EXIT=Y

ensuite créer deux fichiers /etc/bumblebee/cardon et /etc/bumblebee/cardoff

 % sudo sh -c 'echo "\_SB.PCI0.PEG0.PEGP._PS0" > /etc/bumblebee/cardon'
 % sudo sh -c 'echo "\_SB.PCI0.PEG0.PEGP._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}\n\_SB.PCI0.PEG0.PEGP._PS3" > /etc/bumblebee/cardoff'

Redémarrer le service

 % sudo service bumblebee restart

Tester que cela fonctionne bien

 % optirun glxgears

Environ 1000 fps avec la carte NVidia et 60 fps sans.

 % cat /proc/acpi/battery/BAT0/state 
 present:                 yes
 capacity state:          ok
 charging state:          discharging
 present rate:            1463 mA
 remaining capacity:      4563 mAh
 present voltage:         16569 mV

Pas mal la consommation a réduit autour de 1400 mA

Vous pouvez également désactiver la carte nVidia

 # sudo su
 # echo "blacklist nouveau" > /etc/modprobe.d/blacklist-nvidia.conf
 # update-initramfs -c -k all
 # reboot

Compression et transfert

Il est possible de modifier le mode de compression et de transport des frames.

 $ optirun -c <methodeDeCompression> <application>

<methodeDeCompression> peut être jpeg, xv, proxy, rgb ou yuv. Ensuite il est possible de modifier la variable VGL_COMPRESS dans /etc/bumblebee/bumblebee.conf pour fixer la méthode. yuv semble être la meilleure méthode.

Mini Displayport output et HDMI

Le port HDMI est relié à la carte NVidia

Sources

Merci à Stefan B.

Comments

  1. By Damien, on March 12, 2012, at 10:46 PM Si vous voulez installer cuda allez lire ce billet.
  2. By Damien, on June 02, 2012, at 10:56 PM La mise à jour lint Maya se passe relativement bien. Il faut néanmoins rajouter au niveau de grub
    i965.modeset=1 i965.semaphores=1
    à la place de I915.semaphores=1 et pour le wifi iwlwifi remplace iwlagn
    % sudo rmmod -f iwlwifi
    % sudo modprobe iwlwifi 11n_disable=1

    Ajouter (ou créer) dans /etc/modprobe.d/iwlwifi.conf
    options iwlwifi 11n_disable=1
  3. By Damien, on November 27, 2012, at 05:52 PM Pour pouvoir hiberner il faut créer un fichier :
    % sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla
    et ajouter :
    [Re-active lhibernation]
    Identity=unix-user:*
    Action=org.freedesktop.upower.hibernate
    ResultActive=yes

    Il ne vous reste plus qu'à redémarrer et tester.