Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
03 February 2016

htmlpdflatexmanmd

Linux           Utilitaires Linux


resizecons

resizecons

Change l'idée kernel de la taille de la console

   La commande resizecons tente de changer le mode vidée de la console. Il y a différents aspects à cela: le kernel, le matériel doit le savoir et les programmes utilisateurs doivent le savoir, et la police de la console peut nécessiter une adaptation.

   Le kernel parle des changement en utilisant l'ioctl VT_RESIZE. Cela permet au kernel de ré-allouer la mémoire écran de la console pour toutes les consoles virtuelles, et peut échouer s'il n'a pas suffisamment de mémoire. Dans ce cas, il tente de dé-allouer certaines consoles virtuelle en premier. Si cet ioctl réussit, mais une dernière étape ( par ex. vous n'avez pas les permissions), vous pouvez vous retrouver avec un écran désordonné.

   La partie la plus difficile côté matériel, vu qu'il nécessite une connaissance détaillée du matériel vidéo, et des nombreux registres. Seul le changement de lignes est assez facile, et resizecons tente de le faire lui-même avec l'option -lines. La commande resizecons COLSxROWS va exécuter restoretextmode -r COLSxROWS ( et donc nécessite d'avoir svgalib d'installé). Ici, COLSxROWS est un fichier qui a été cré par restoretextmode -w COLSxROWS. Les permissions root sont requises, ou restoretextmode doit avoir le setuid root.

   Pour les programmes utilisateurs, resizecons fait un 'stty rows ROWS cols COLS' pour chaque console active ( entre tty0 et tty15), et envoie un SIGWINCH à selection s'il le trouve dans /tmp/selection.pid.

   Enfin, il traite les fonts en exécutant setfont. Généralement, la mauvaise font est chargée, et il est nécessaire de choisir une autre font avec setfont par vous-même.

Bugs

   resizecons ne fontionne pas avec tous les hardwares. Par exemple, il ne peut pas être utilisé sur les plateformes autre que x86 et x86_64. Voir fbset comme alternative.