# [FRAMEBUFFER]Demarrage

## pepit

Bonjour,

Lors du premier démarrage de mon noyau sur tecra 8000 construit avec genkernel, seul le pingoin est lisible sur mon écran, le reste n'est qu'une suite de barrettes verticales avec un nuage de point là ou les lignes d'affichent normalement.

Après pas mal de recherche j'ai ajouté ceci dans mon grub.conf : video=uvesafb:800x600-16@83, mtrr:3, ywrap.

Après relance, tout se passe bien pendant les premières secondes du démarrage. Les première lignes sont bien affichées, quoique comme dans grub, tout est centré : Le splash grub occupe un rectangle au milieu de l'écran.

Le problème suviens dès que s'affiche la ligne suivante à initramfs (il semble : faut être rapide pour le lire!): Le début des lignes semble s'aligner sur le bord gauche de l'écran et seul le pingoin demeure  visible

Si je met l'option suivante dans grub.conf : video=uvesafb:off c'est pareil.

Précisions : j'ai un autre pc gentoo avec un noyau construit de la même manière, l'affichage est lisible avec le pingoin sauf que quelque soit les options dans grub.conf rien ne change, comme si le noyau ne prenais pas en compte les options FB...

Après "éclaircissements"  J'ai reconstruit un noyau avec les options du manuel pour configurer uvesafb, émergé v86d et splashutils sur l'autre PC (pentiumIII 600Mhz). Pour être sur qu'il n’interfère pas j'ai enlevé l'option du splash par défaut.

J'ai mis ceci dans grub.conf : video=uvesafb:800x600,mtrr:3,ywrap

Lorsque je redémarre c'est toujours pareils le noyau ne tient pas compte des configs et démarre systématiquement en 640x480.

Dans le même temps, je me suis apercu qu'il manque ceci dans mon arborescence:

/sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes

Au fur et a mesure de mes découvertes et tant que je n'ai aucune réponse je rajoute ou enlève des lignes à mon post...  :Confused: 

Nouveau noyau corrigé d'oubli: [*]  Connector - unified userspace <-> kernelspace linker. Avec de nouveau le Bootup support.

émergé klibc

Toujours le même résultat et  "uvesafb.0/vbe_modes" toujours absent.

Un dmesg m'apprend ceci:

uvesafb : no monitor limits have been set, default refresh rate will be used

uvesafb : scrolling : ywrap using protected mode interface, yress_virtuall=7500

uvesafb : request region 0x3c0-0x3e0 failed

uvesafb : probe of vesafb.0 failed with error -5

J'ai trouvé après "quelques" recherches sur le net un "uvesafb.c" sensé corriger ce problème?

Qu'en pensez vous, si OK comment appliquer ce patch?

----------

## pepit

Au secours, personne pour m'aider?  :Embarassed: 

----------

## USTruck

Bonjour

Pourrais-tu, s'il te plait, poster le resultat du lspci ou donner le type de la carte graphique (je connais pas le tecra)

Perso, je commencerai plutôt par le fb 'VESA' ....  (voir ce post sur un tecra https://forums.gentoo.org/viewtopic-t-374236-view-next.html?sid=e21c5c914b33417500c92bf957e602fc)

Revoir donc ta config kernel ... dès que cela fonctionne tu pourra passer par uvesafb

Edit : as-tu installé v86d indiqué quand on désire utiliser uvesafb

sys-apps/v86d

      Latest version available: 0.1.10

      Latest version installed: [ Not Installed ]

      Size of files: 68 kB

      Homepage:      http://dev.gentoo.org/~spock/projects/uvesafb/

      Description:   A daemon to run x86 code in an emulated environment.

      License:       GPL-2

Edit 2 : 

http://wiki.gentoo.org/wiki/Uvesafb

http://www.funtoo.org/wiki/Uvesafb

----------

## pepit

Merci de ton aide!   :Very Happy: 

Apparemment tu n'as pas lu mon premier post en entier. Il est vrai que mes premiers essais portait sur le tecra 8000, mais pour ne pas le faire tourner jour et nuit pour compiler des noyaux j'ai continué sur un pentium III qui malgrès une config un peu différente à exactement le même problème (CG neomagic au lieu de matrox):

Non prise en compte de la config dans grub à cause de : request region 0x3c0...failed. Un bug?...

Les détails que tu demandes sont dans le post initial pour v86d et plus encore!!.

J'ai compilé les pilotes CG en dur dans le noyau et la carte semble bien admise.

La CG est une matrox G200 AGP :

# lspci -k

00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)

00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)

00:04.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02)

00:04.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)

00:04.2 USB controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)

00:04.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02)

00:06.0 SCSI storage controller: Adaptec AHA-2940U2/U2W / 7890/7891

Subsystem: Adaptec 2940U2W SCSI Controller

Kernel modules: aic7xxx

00:09.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+

01:00.0 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200 AGP (rev 01)

Subsystem: Matrox Electronics Systems Ltd. MGA-G200 AGP

----------

## USTruck

Bonjour,

Désolé pour le temps de réponse.

Avant de continuer pour le tecra, on va déjà essayer de faire fonctionner le pIII correctement, la solution devrait pouvoir s'appliquer au tecra.

Le message me donne l'impression qu'il n'arrive pas a init ou acceder  la rom bios de la carte video : lspci -vxxx 

Attention avec -vxxx la liste peut-être longue, l'envoyer dans un fichier (>> fichier) pour avoir un max d'info

Y voir si l'add mémoire en erreur est dans la plage d'add de la carte ex : 

        Memory at d0000000 (32-bit, prefetchable) [size=256M]

        I/O ports at 2000 [size=256]

        Memory at cfef0000 (32-bit, non-prefetchable) [size=64K]

        [virtual] Expansion ROM at cfe00000 [disabled] [size=128K]

J'ai déjà eu le cas, mettre en dur la config dans le kernel pause parfois des soucis, recherche dans dmesg les messages d'init de la carte video cela serai déjà une piste.

Sans vouloir te froisser, as-tu compiler klibc et v86d après avoir configurer le kernel et enfin modifier le initramfs de celui-ci avant la compilation ?

Je reste convaincu que de faire fonctionner d'abord la carte en mode VGA simple ( VESA VGA graphics support ) pourrais aider, dans la mesure ou cela te permet d'éliminé un soucis de config kernel qui pourrais être a la base tel que par exemple le bus AGP (00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)) , est-il bien init, config etc ...

Si problème d'init :  modinfo nomdumodule ;  il te permet de voir les paramétres prévus (si existe) pour une config/init correcte.

Dès que cela fonctionne en mode VGA et aucun message d'erreur d'init non désiré, à verifier via dmesg, tu pourras te lancer sur le uvesa.

----------

## pepit

 *USTruck wrote:*   

> Bonjour,
> 
> Désolé pour le temps de réponse.

  Pas grave, ça m'a justement permis d'essayer avec vesa!  :Smile: 

 *USTruck wrote:*   

> 
> 
> Sans vouloir te froisser, as-tu compiler klibc et v86d après avoir configurer le kernel et enfin modifier le initramfs de celui-ci avant la compilation ?

 

Après? Oui la première fois sans doute, mais je compile environ un à deux noyau par jour avec des nouvelles options que je teste à chaque fois.....

 *USTruck wrote:*   

> 
> 
> Je reste convaincu que de faire fonctionner d'abord la carte en mode VGA simple ( VESA VGA graphics support ) pourrais aider, dans la mesure ou cela te permet d'éliminé un soucis de config kernel qui pourrais être a la base tel que par exemple le bus AGP (00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)) , est-il bien init, config etc ...
> 
> Si problème d'init :  modinfo nomdumodule ;  il te permet de voir les paramétres prévus (si existe) pour une config/init correcte.
> ...

 

Bon, c'est ce que j'ai fait :

j'ai compillé un noyau avec :

                        [  ]   Userspace VESA VGA graphics support

			[*] VESA VGA graphics support

et désactivé tout se qui me semble se rapporter à "Userspace".

j'ai ensuite fait plusieurs démarrage du PC avec différent vga= dans grub (788 et 791)

dmesg | grep vesa m'apprend que les résolutions semblent bien prise en compte

Mais je ne constate aucun changements dans l'affichage (la tailles des caractères demeure identique)

----------

## USTruck

Pour la taille des caractères, c'est a réglé via le fichier conf : /etc/conf.d/consolefont

Perso j'ai mis : lat9w-16 (suis en full unicode)

Ne pas oublier d'ajouter consolefont au boot (rc-update)

A propos d'uvesafb

Dans le wiki ils indiquent bien qu'il faut respecter un ordre :

A ) config kernel avec uvesafb, compilation du kernel (pas d'install de module ou du noyau, juste la compilation)

B ) emerge klibc et v86d  

C ) config kernel : General setup  --->

    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

    (/usr/share/v86d/initramfs) Initramfs source file(s)

D ) re-compiler et installer le noyau

Pour ce qui concerne klibc et v86d, il semble y avoir une dépendance sur la compilation du noyau (symbole ?), a priori  je referais une compilation des deux a chaque fois (voir module-rebuild, très pratique)

----------

## pepit

Pour le moment je laisse tomber uvesafb. Je préfère bien maîtriser vesa pour pouvoir appliquer ensuite sur le tecra...

Je te demanderai des "éclaircissements" plus tard sur les "module-rebuild" et l'ordre d'installation, j'ai du mal a comprendre là!   :Embarassed: 

J'ai mis "lat9w-16" a la place de "default8x16" dans consolefont

# rc-update -v show | grep -i consolefont ------------> consolefont |

# rc-update add consolefont boot

# rc-update -v show | grep -i consolefont ------------> consolefont |boot

Avant alt_e = un truc bizarre

Après reboot alt_e = €

Donc le système a bien pris en compte ma config dans consolefont mais la taille des caractères est resté identique. Y a t'il un autre paramètre, mes recherches n'ont rien donné d'autre?

----------

## USTruck

Bonjour,

J'aurais du faire attention pour la taille des caractères j'ai une taille d'écran a 1600. Voir /usr/share/consolefonts, tu y verras la liste des caractères et tailles possibles; pour lat9w cela vas du 10 à 16.

Modifie le fichier conf et restart consolefont jusqu’à ce que tu aies la taille que tu désires.

Un simple '/etc/init.d/consolefont restart' pour faire prendre en compte le changement suffit.

Module-rebuild : utilitaire qui te permet d'établir une liste (add) de paquet a compiler a chaque modification du kernel, après l'avoir fait un simple : module-rebuild rebuild et c'est bon

Ordre d'installation:

Sur le wiki, ils indiquent que pour uvesafb, après avoir 'compiler' le kernel une première fois (sans installation modules et kernel), il faut re-compiler klibc et v86d,  modifier le fichier config du kernel pour y placer le 'initramfs' du klibc d'ou la dépendance, s'il génère le initramfs sur base du kernel compiler (préparer) cela me semble  logique.

Donc l'ordre c'est :

- verifier fichier config du kernel tout uvesafb ET PAS de config vers initramfs (laisser vide)

- compiler le kernel (make all)

- emerge klibc et v86d

- ajouter le initramfs a la config du kernel

- compiler et installer le kernel (make all ; module et install)

----------

## pepit

Un grand merci pour ta patience et ton aide précieuse, il n'est pas évident de se mettre à la place d'un débutant comme moi qui a besoin qu'on lui mâche le travail!

J'essaie tout cela et te tiens au courant des avancées..   :Very Happy: 

----------

## pepit

Après quelques semaine de relaxations je reprend le taureau....

Bien, j'ai résolut les problèmes de framebuffer avec vesafb sur les 2 PC sauf que pour me défaire de uvesafb sur le tecra 8000, j'ai du tout réinstaller après avoir recompilé sans succès quelques noyaux....

Cela m'a permis de constater un problème de reconnaissance de mes disques sur le tecra, mais c'est un autre sujet!

Je referai des essais uvesafb plus tard, lorsque le courage pour ce type de manipulations sera revenu!

----------

