A l'issue de Solutions Linux 2007, au gré d'une visite de la rue Montgallet, j'ai fait l'acquisition d'un portable.

Malgrès tout mes efforts (Romain peut en témoigner), impossible de faire ecrire par le vendeur qu'il n'est pas en mesure de me vendre le portable sans OS et sans les logiciels OEM inclus (que des solutions proprietaires évidement) J'ai juste réussi à avoir une facture précisant que ces logiciels sont inclus dans le prix.
J'avais prévu de tout faire pour acheter ce portable sans solution OEM, mais je n'avais pas assez de temps devant moi pour le faire.
Pour luter contre la vente liée, je vous invite à consulter le site www.racketiciel.info/ et à signer la pétition.
Pour ma part, je n'ai pas accepté le CLUF du windows fournis.

Reste donc à passer ce portable sous Linux. Comme j'ai des tendances masochistes, j'ai choisi Debian, la version Etch pour être précis qui est en cours de finalisation au moment ou j'écris ces lignes (maso, pas kamikaze).
En principe, cette installation doit pouvoir etre réalisée sur toute la gamme F3Jm, AK022, AK029

Actuellement, j'ai une distribution qui fonctionne, tout les problèmes ne sont pas résolus, mais ca avance, le détail dans l'article. 

 

Description de l'Asus F3Jm-AK022H
destiné à devenir F3Jm-AK022L (H=Home, L=Linux)
 

ProcesseurIntel Core 2 Duo @ 2GHzFonctionne Aucune manipulation requise
RAM2 x1024Mo FonctionneAucune manipulation requise
Bus AGP Intel 945GM Chipset Fonctionne
Aucune manipulation requise
LANChip Realtek 8168B Fonctionne Inopérant lors de l'installation mais fonctionnel une fois l'installation terminée 
WifiIntel 3945ABG
Fonctionne
Prise en charge avec un script.
Carte Graphique
nVidia GeForce GO 7600 Fonctionne
 3D supporté avec les drivers nVidia
ACPI 
 90%Lectures des infos : OK (procc, T°, batterie..)
Gestion Step Frequency : OK
Power off button : OK
STR, STD OK
Bug sur retour du wifi après mis en veille STR
sonIntel HDA Fonctionnenecessite compilation ALSA 1.0.14rc2
webcam integréeSyntek En cours  
touchpad    
firewire    
usb    
    
    
    

 

 

Pour des raisons obscures, je dois conserver un Windows sur la machine pour le moment.
J'ai aussi l'habitude de faire du  multi boot pluri-distributions. J'ai donc prévu le partitionnement suivant


Pour réaliser ce partitionnement particulier et que l'install de l'OS de Bill ne casse pas tout, il faut bricoler un peu.
Vous n'êtes pas obligé de le suivre à la lettre, mais je vous décris ma méthode.
A l'aide d'un live CD possédant la commande 'dd' et  'partimage', je réalise un backup complet sur un disque externe, au cas ou. J'utilise System Rescue CD, description sur FreshMeat , un howto en francais sur Linux pour Les Nuls et téléchargement de l'ISO sur Sourceforge .

Le backup complet
Pour commencer, je monte mon disk USB externe : (a adapter selon le partitionnement du disque)
#mkdir/mnt/sdb1
#mount rw -o rw /dev/sdb1 /mnt/sdb1

Ensuite, copie du MBR d'origine avec :
#dd if=/dev/sda of=/mnt/sdb1/ASUS-F3Jm-AK022H_MBR.bs bs=512 count=1
La copie bit par bit des 512 premiers secteurs contient la table des partitions et le lanceur du windows d'origine.
Copie des partitions sda1, sda2 et sda3 avec partimage (se referer au howto ), enregistrée sous le nom de fichier /mnt/sdb1/ASUS-F3Jm-AK022H_(au choix sda1, sda2 ou sda3).img

 Une fois le backup complet, j'ai gravé SystemRescueCD sur un DVD sans finaliser la gravure, puis ajouté mes fichiers .img en finalisant la multisession, ainsi, je dispose d'un DVD de restauration manuel que je maitrise (je ne sais pas ce que celui livré avec le portable 'tripotte' malgrès son examen)

Le partitionnement des disques à ma façon
Toujours avec le SystemRescueCD, je lance
#fdisk /dev/sda
et je commence par supprimer toute les partitions existantes.
Ensuite, je créé une partition primaire de +130M qui sera destinée à acceuillir /boot, puis une partition primaire de 12288MB (12Go) pour windows.
Pour que windows ne vienne pas pourrir la première partition (qui est destinée au /boot), il faut lui interdir d'aller aileurs que sur sda2, il faut donc créer une partition supplémentaire sda3 dans tout l'espace disque restant, puis, au prompt de fdisk, avec 'T' on change les id des partitions, il faut alors passer la partition 2 dédié à windows en NTFS (choix 7) ou FAT32 (choix c) selon les gouts et attribuer l'id 1c (Hidden W95 FAT32 LBA ) aux partitions sda1 et sda3 pour que windows ne vienne pas tout foutre en vrac.
Un petit 'w' pour écrire tout ça sur le disque et on tape reboot.

Je passerais sous silence l'installation de windows qui se fait simplement en bootant avec le CD et en lui indiquant de prendre la partition qui lui est attribué quand il pose la question. Effectuez un formatage complet de préférence, on ne sait jamais ce qui peut se passer avec cette "distribution propriétaire", mise en place des drivers, mise à jour de l'OS ect ect..

Début de l'installation de Debian
J'ai récupéré l'iso du CD1 de Debian 'Etch' sur le ftp de cdimage.debian.org (une testing en fait, attention si etch passe stable, la prochaine testing ne sera peut-être utilisable)
J'avais fait une tentative avec Sarge (la version stable actuellement), mais trop de materiels posaient problèmes, etch etant pour ainsi dire finalisé pour les x86, cela ne pose pas de restriction.

On boot sur le CD avec les paramètres suivant : install bootkbd=fr hw-detect/start_pcmcia=false
Le clavier en français, c'est plus pratique et il est possible de bloquer la détection PCMCIA vu que ce portable à un port PCI-Experss card mais pas de PCMCIA.

Choix de la langue, du clavier (france fr-latin9), rien à signaler.
A la détection réseau, ca bloque, ce qui est normal, le chip LAN n'est pas pris en charge pour le moment. Vous devez avoir un message de requête DHCP échouée, sélectionnez continuer puis 'ne pas configurer le réseau maintenant"

 Donnez un nom à votre machine, l'installation se poursuit et vous voilà au partitionnement des disques, sélectionnez : Manuel pour utiliser partman
Ma  table de partitionnement finale est la suivante :
/dev/sda1 - 139.8MB - ext3 - /boot
/dev/sda2 - 12.3GB - NTFS non monté ou /mnt/win si FAT32 - (si NTFS employé, elle sera montée ultérieurement)
/dev/sda3 - 69.6 GB - FAT32 - /media/documents (héberge le menu 'mes documents' de mon compte windows)
/dev/sda5 - 6.0 GB - ext3 - /   (Debian du quotidien)
/dev/sda6 - 6.0 GB - ext3 - /mnt/ubuntu   (pour les essais, démonstrations....)
/dev/sda7 - 5.0 GB - ext3 - /mnt/test        (pour bricoler)
/dev/sda8 - 1.0 GB - swapp
/dev/sda9 - 20.0 GB - ext3 - /home   (home d'ailleurs commun pour debian et ubuntu chez moi grâce à une astuce décrite plus loin)

Sélectionnez : Terminer le partitionnement et appliquer les changements , relisez bien pour être sur et ne pas formater une partition qui ne doit pas l'etre puis validez.

Au sujet de ce partitionnement qui peut sembler étrange et compliqué, je l'ai déterminé  après avoir lu pas mal de documents sur le net. En fait, elle à plusieurs avantages pour la maintenance, le home 'principal' séparé permet de 'reclaquer' n'importe quelle installation sans toucher aux données des utilisateurs, c'est un peu la base de tout système unix/linux, le jeu de le rendre commun entre d'autre distributions est assez pratique si l'on veux gouter d'autres systèmes, avoir un repertoire 'documents' en FAT 32, surtout dans le cas du multi-boot avec win et si on colle le menu 'mes documents' dessus, donne une transparence totale de transfert de fichier d'un système à l'autre, le boot dissocié, avec grub, permet de très facilement "retrouver ces petits" en cas de problème.... Il y à des inconveniants, tels que la taille fixe de /boot qui sature si on met un grand nombre de kernels, mais pour moi, les avantages sont plus nombreux.

Ensuite, l'installation se déroule classiquement, donnez un password pour root et créez un compte utilisateur.
Si vous exploitez /dev/sda9 = /home en commun avec d'autres installations, attention à ne pas créer de comptes avec le même nom !! Problèmes assurés (ou alors, si vous voulez le faire comme moi, il faut créer des comptes différent pour chaque distribution, puis créez un compte en ligne de commande pour chaque distribution en prenant soit de bien 'forcer' l'UID pour qu'il ait la même valeur pour toutes les distributions.)
Le premier utilisateur sera donc nommé 'debian' pour cette install

A la question 'faut-il utiliser un miroir réseau ?' répondez non, car pour le moment, nous n'avons pas de connexion lan. Cela va provoquer un message d'échec de mise à jour de sécurité, sélectionnez 'continuer'
Participer à l'étude statistique des paquets, a vous de voir, aucune incidence sur la suite. Je pense que c'est une bonne idée de le faire.

Le choix des paquets :
Voici ma sélection
[ * ] Environnement graphique de bureau
[   ] Serveur web
[   ] Serveur DNS
[   ] Serveur de fichiers
[   ] Base de données SQL
[   ] Ordinateur portable
[ * ] Système standard

 Et en avant pour la copie de fichiers et l'installation de paquets qui se fait toute seule.

Choix de la résolution : ayant une dalle WSXGA+ , je choisi naturellement une résolution de 1680x1050 (vérifiez la résolution native de votre LCD, celle ci peut changer selon les versions de F3Jm-xxxxx) et je laisse les autres modes actifs, en cas de besoin (ecran externe un jour par exemple)
Grub s'installe et détecte l'installation de windows, à la question "Installer le programme de démarrage GRUB sur le secteur d'amorçage ? "  répondre oui.
Le CD est éjecté, l'installation s'achève et le PC reboot, branchez votre câble réseau à ce moment là.

Grub propose bien le choix entre Debian Kernel 2.6.18-3-686 ou l'autre OS, poursuivont l'installation

Le touchpad est détecté et correctement géré par l'installeur Debian, la souris USB fournie avec le portable est également fonctionnelle.

Nous voilà avec un multiboot win/linux et une debian qui fonctionne, pour le moment sans wifi, sans 3D,  sans son.

A présent, le reseau ethernet est correctement détecté et pris en charge, si vous n'avez pas de serveur DHCP referez vous au howto correspondant à votre installation.

Maintenant que nous disposons d'une connection LAN, il va falloir maintenant mettre le système à jour et récuperer les éléments suivants, pour celà, il faut éditer /etc/apt/sources.list de la manière qui vous convient le mieux (à la main avec VI, nano, Gedit..) ou avec le 'gestionnaire de canaux logiciels' dans le menu 'bureau'==>'administration' ou encore avec #netselect-apt etch, voir le howto debian sur le sujet, puis #aptitude update et #aptitude dist-upgrade achèverons de vous mettre à jour.

 

Ajout du support Wifi - Intel 3945ABG depuis les depots Debian Etch
une fois le source.list mis à jour, aptitude update la marche à suivre est la suivante
1 - ajout du paquet ipw3945-modules-2.6.18-3-686 avec #aptitude ou synaptic
2 - récupération du firmware ipw3945-ucode-1.14.2.tgz sur http://bughost.org/ipw3945/ucode/
3 - récupération du daemon de gestion ipw3945d-1.7.22.tgz sur http://bughost.org/ipw3945/daemon/
4 - décompactage des archives téléchargées en 2 et 3
# tar xvf /{votre_chemin}/ipw3945-ucode-1.14.2.tgz (peut-etre pas requis sur derniers drivers - à vérifier)
# tar xvf /{votre_chemin}/ipw3945d-1.7.22.tgz

Copie du firmware Intel necessaire pour le fonctionnement du wifi
# cp /{votre_chemin}/ipw3945-ucode-1.14.2/ip3945-ucode /lib/firmware
Copie du daemon de gestion qui sert à initialiser le chip wifi
# cp /{votre_chemin}/ipw3945d-1.7.22/x86/ipw3945d /sbin

Pour gerer le chip wifi, il est necessaire d'activer le daemon /sbin/ipw3945d.
Avec le daemon, deux scipt start et stop existent, mais des linuxiens plus habiles que moi on réalisé un petit script de gestion pour rendre 'pilotable' ce daemon plus simplement et qu'il soit initialisé au démarrage du PC.
Ce scipt gère à la fois le démarrage et l'arret, mais aussi le status et créé un PID
Nom du scipt : /etc/init.d/ipw3945
Une fois créé, pensez à le rendre executable avec un #chmod 755 /etc/init.d/ipw3945
(Merci à Nicolas, Romain et Romuald)

#! /bin/sh
# Script to manage Intel ipw3945daemon

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/sbin/ipw3945d
NAME=ipw3945
PIDFILE=/var/run/$NAME.pid
DESC="Ipw3945d wireless daemon"

unset TMPDIR

test -f $DAEMON || exit 0

set -e

. /lib/lsb/init-functions

case "$1" in
  start)
    log_begin_msg "Starting $DESC: $NAME"
    #start-stop-daemon --start --quiet --oknodo --pidfile "$PIDFILE" --exec $DAEMON
    $DAEMON > /dev/null
    log_end_msg $?
    ;;
  stop)
    log_begin_msg "Stopping $DESC: $NAME"
    ipw3945d --kill
    #start-stop-daemon --stop --quiet --retry 5 --oknodo --pidfile $PIDFILE --name $NAME
    log_end_msg $?
    ;;
  status)
    echo -n "Status of $DESC: "
    if $DAEMON --isrunning; then
        echo "$NAME is running!"
    else
        echo "$NAME is not running."
    fi
    ;;
  *)
    N=/etc/init.d/${0##*/}
    echo "Usage: $N {start|stop|status}" >&2
    exit 1
    ;;
esac

exit 0

Il faut ensuite déclarer le scipt pour automatiser son démarrage. Vous pouvez le faire avec l'outil rcconf ou utiliser l'outil graphique Boot-Up Manager (paquet bum) qui est très pratique.
Edition /etc/udev/rules.d/z25_persistent-net.rules pour modif nom d'interfaces :
ohci=ieee1394 ; r8169=eth0 ; ipw3945=wlan0
modprobe ipw3945                       §     ou
/etc.init.d/ipw3945 start
               §  reboot

Ajout de la prise en charge de la 3D de la carte graphique nVidia Go7600 (drivers non libres)
De nombreux howto existent, je ne rentrerais pas dans les détails, pour résumer, il faut :
installer les paquets binutils et linux-headers-2.6.18-3-686
Récuper les drivers sur le site nvidia
Passer en console sous le compte root, stopper le serveur graphique (/etc/init.d/gdm stop) et executer le scipt avec la commande #sh chemin_du_scipt

Beryl, pour le fun...

Maintenant que la 3D est fonctionnelle, simplement suivre le le howto du wiki de Beryl.

Prise en charge du son
Pour réaliser les essais, ajout du paquet gnome-audio (les sons système)
Après de multiples essais, et grace a la lecture de quelques sujet sur https://bugtrack.alsa-project.org/ , je me suis rendu compte que certains avaient résolu leurs problèmes en compilant la dernière version d'ALSA.
Récuperer l'archive alsa/driver/alsa-driver-1.0.14rc2.tar.bz2 ou plus récent sur un des FTP  http://www.alsa-project.org/download.php
Décompactez la, $ tar xvjf alsa-driver-1.0.14rc2.tar.bz2
Enrez dans le répértoire $ cd alsa-driver-1.0.14rc2.tar.bz2
Coupez tout ce qui est lié à ALSA avec la commande /etc/init.d/alsa force-unload (vous devez probablement passer en root)
Selon les instructions du fichier INSTALL, executez ./configure --with_cards=hda-intel
Lancez un make pour que le drivers alsa soit compilé
Passez en root et lancez #make install
Recharger le serveur son avec un # modprobe snd-had-intel
Profitez du son !


Prise en charge de la webcam
Un #lsusb nous apprend ceci :
Bus 005 Device 004: ID 05e1:0501 Syntek Semiconductor Co., Ltd
Il existe justement un devellopement en cours pour le materiel Syntek sur http://syntekdriver.sourceforge.net/ !
Les sources sont distribuées ici : http://syntekdriver.svn.sourceforge.net/viewvc/syntekdriver/
 

Collections de liens :
http://www.linux-on-laptops.com/asus.html
http://forums.fedora-fr.org/viewtopic.php?pid=99959 : installation d'une fedora sur F3Jm
http://gentoo-wiki.com/HARDWARE_Asus_F3JM : install en Gentoo
http://www.w1ldt4ng3nt.net/blog/item/77 : F3jm et Ubuntu 6.10
http://www.alsa-project.org/ : sans commentaire


 La suite bientot

Reste à faire :

Ajout de la gestion ACPI avancée
Le projet acpi4asus est disponnible sur sourceforge, on commence par ajouter le support acpi (etrange qu'il ne soit pas déjà là) avec # aptitude install acpi-support
Tentative d'jout du 'gcc symbolique" avec #ln -s gcc gcc-4.1

ajout paquets nvidia-kernel-common et nvidia-xconfig

 

tout ce qui a été abandonné ou ne fonctionne pas : 

Ajout du support Wifi - Intel 3945ABG depuis les sources
Les drivers sont disponnibles sur http://ipw3945.sourceforge.net j'ai pas mal galeré pour arriver à les utiliser avec débian, la doc proposée n'est pas très claire/adapté.
Voici donc la méthode qui a fonctionné pour moi en détails :
1 - récupération des sources ipw3945-1.2.0.tgz sur http://ipw3945.sourceforge.net/#downloads
2 - récupération du firmware ipw3945-ucode-1.14.2.tgz sur http://bughost.org/ipw3945/ucode/
3 - récupération du daemon de gestion ipw3945d-1.7.22.tgz sur http://bughost.org/ipw3945/daemon/
4 - installation des outils debian de compilation et les sources du kernel 2.6.18
# ls -s gcc4-1 => gcc => cc
# aptitude install linux-sources
# aptitude install binutils
4 - décompactage des archives téléchargées en 1,2,3,4
# tar xvjf /usr/src/linux-source-2.6.18.tar.bz2
# tar xvf /{votre_chemin}/ipw3945-1.2.0.tgz
# tar xvf /{votre_chemin}/ipw3945-ucode-1.14.2.tgz (peut-etre pas requis sur derniers drivers - à vérifier)
# tar xvf /{votre_chemin}/ipw3945d-1.7.22.tgz
# cd /{votre_chemin}/ipw3945-1.2.0 make , make install , depmod -a
# cd {votre_chemin}/ipw3945d-1.7.22
# cp /{votre_chemin}/ipw3945-ucode-1.14.2/ip3945-ucode /lib/firmware
# cp /{votre_chemin}/ipw3945d-1.7.22/ipw3945d /sbin
# reboot (prise en charge du firmware et du daemon)
$ modprobe ipw3945
$ ifconfig eth1 down, up
$ iwconfig

Ajout du support wifi - Intel 3945ABG
Le drivers est disponible sur http://ipw3945.sourceforge.net , vous pouvez directement lire les instructions.
Il est requis de mettre à jour le support ieee80211 , pour commencer après avoir décompacté l'archive, il faut enlever le support  80211 inclus dans Etch avec la commande # . remove-old
Plantage du 'make'sur ieee80211 : instructions suivies : http://ieee80211.sourceforge.net/INSTALL
Il faut ajouter les headers du kernel que vous possedez pour pouvoir installer le support ieee80211
uname -r permet de connaitre la verion en cours puis aptitude install linux-headers-2.6.18-3-686
make sur ipw3945 plante , retourne "/bin/sh: cc: command not found"et propose "make IEEE80211_IGNORE_DUPLICATE=y"

Reprise des essais, ajout de # aptitude install linux-source-2.6.18
link cc => gcc => gcc-4.1

Compilation du kernel en réuperant les sources du kernel et libncurses-dev avec aptitude, puis tar xjvf de l'archive des sources dans /usr/src


make menuconfig : parametrage des options module/dur => génération .config
puis  make && make modules_install et patience

tar ieee80211-1.2.16
make et make install
ajout du support IEEE802.11 avec #modprobe ieee80211

ne fonctionne pas
# rc-update add ipw3945d default                  <<<<<<<<<<< ajout du lancement du daemon 18.feb.2007-07h16

 essais lié au son
modinfo soundcore
modprobe snd-hda-intel;modprobe snd-pcm-oss;modprobe snd-mixer-oss;modprobe snd-seq-oss
Fichier de déclaration/detection des cartes son : /lib/modules/2.6.18-3-686/modules.alias
selon un change log , alsa 1.0.11rc1minimal requis, toutefois, la version en cours est 1.0.13 ....