Categoría: config

  • La rueda del ratón recorre el historial de comandos en lugar de desplazar la terminal

    Hace poco me volvió a pasar que después de algún evento que no consigo identificar bien, la rueda del raton en lugar de desplazar la vista de la terminal empieza a recorrer su historial de comandos.

    Algunas aplicaciones de terminal tienen la capacidad de restaurar el comportamiento anterior, pero este no era el caso así que busqué por Internet y descubrí un comando del que nunca antes había oído hablar; tput. En concreto la llamada que logra restaurar el desplazamiento de la terminal es el siguiente:

    tput rmcup

  • Mi VSCode settings.json

    Este es el contenido (en evolución) de mi fichero de configuración de VSCode. Está únicamente orientado a Python, ya que es lo único que utilizo ahora mismo. No está aun completo, hay tareas (como la inserción automática de los import necesarios) con las que aun no me siento lo suficientemente cómodo en VSCode.

    {
    "debug.console.fontSize": 14,
    "diffEditor.codeLens": true,"editor.fontSize": 14,
    "editor.minimap.showSlider": "always",
    "editor.rulers": [88],
    "editor.wordWrap": "wordWrapColumn",
    "editor.wordWrapColumn": 88,
    "editor.wrappingIndent": "indent",
    
    "gitlens.currentLine.enabled": false,
    "gitlens.hovers.currentLine.over": "line",
    
    "remote.SSH.defaultExtensions": [
        "gitpod.gitpod-remote-ssh"
    ],
    "remote.SSH.configFile": "/var/folders/qn/whatever/T/gitpod_ssh_config-more-whatever",
    
    "python.analysis.autoImportCompletions": true,
    "python.analysis.completeFunctionParens": true,
    "python.analysis.diagnosticSeverityOverrides": {
        "reportMissingTypeStubs": "information"
    },
    "python.analysis.indexing": true,
    "python.analysis.typeCheckingMode": "strict",
    "python.analysis.useLibraryCodeForTypes": true,
    "python.diagnostics.sourceMapsEnabled": true,
    "python.envFile": "${workspaceFolder}/.env",
    "python.formatting.autopep8Args": [
        "\"--max-line-length\", \"89\""
    ],
    "python.languageServer": "Pylance",
    "python.linting.banditEnabled": true,
    "python.linting.mypyEnabled": true,
    "python.terminal.activateEnvInCurrentTerminal": true,
    "python.testing.pytestEnabled": true,
    "python.testing.unittestEnabled": true,
    "vsintellicode.python.completionsEnabled": true,
    
    "scm.inputFontSize": 14,
    "terminal.integrated.fontSize": 14,
    "vim.textwidth": 89,
    "workbench.fontAliasing": "antialiased",
    "workbench.tree.indent": 16,
    }

  • Configuración de tmux

    Contenido de mi fichero ~/.tmux.conf:

    set-window-option -g mouse on
    set -g terminal-overrides 'xterm*:smcup@:rmcup@'

    Eso sirve para desplazar el buffer de la terminal con la rueda del ratón, en lugar de cambiar la entrada de texto desde la historia de comandos.

  • Mi .gitconfig

    Este es el contenido de mi fichero .gitconfig:
    [color]
            ui = auto
    [core]
            pager = less -FMRiX
            excludesfile = /home/<myuser>/.config/git/excludes
    [push]
            default = simple
    [alias]
            hist = log --pretty=format:'%C(yellow)[%ad]%C(reset) %C(green)[%h]%C(reset) | %C(cyan)%s %C(bold red){{%an}}%C(reset) %C(magenta)%d%C(reset)' --graph --date=relative
            head = hist -10 --topo-order
            co = checkout
            wd = diff --color-words --word-diff-regex=[^[:space:],.\\:\\'\\\"\\+\\=\\/]+
            fork = !zsh -c '"orig_helper=${2:+${1}}; orig=${orig_helper:-main}; target=${2:-${1:-HEAD}}; diff -U 1 <(git rev-list --first-parent ${orig}) <(git rev-list --first-parent ${target}) | tail -1"' -
            showfork = !zsh -c 'git show $(git fork ${1} ${2})' -
            difffork = !zsh -c '"target=${2:-${1:-HEAD}}; git diff $(git fork ${1} ${2}) ${target}"' -
    [user]
            email = my@email.com
            name = My name
    [filter "lfs"]
    	clean = git-lfs clean -- %f
    	smudge = git-lfs smudge -- %f
    	process = git-lfs filter-process
    	required = true

    El fichero /home/<myuser>/.config/git/excludes equivale a un .gitignore aplicable a todos los repositorios.

    El alias fork devuelve el hash del commit en el que diverge la rama actual de main si no se proporciona ninguna rama. Si se proporciona una rama devuelve el hash del commit en el que diverge la rama proporcionada de main. Y si se proporcionan dos ramas devuelve el hash del commit en el que la segunda rama diverge de la primera rama proporcionada. Ejemplos:

          E---F---G rama HEAD
         /
    A---B---C---D main
             \
              H---I otra_rama

    Estando HEAD en el commit G, fork master devuelve el hash del commit B, es decir, el commit en el que la rama actual diverge de la rama indicada.

    $ git fork
    <hash del commit B>
    $ git fork otra_rama
    <hash del commit C>
    $ git fork rama otra_rama
    <hash del commit B>

    El alias showfork hace un show del commit en el que divergen las ramas indicadas. Y el alias difffork hace un diff entre el commit en el que divergen las ramas indicadas y el commit referido por la última de las ramas indicadas.

  • Ficheros de configuración de un servidor DNS local con BIND9

    Introducción

    A continuación se muestra el contenido del conjunto de ficheros de configuración que necesita BIND9 para ofrecer las funciones de DNS local sobre una zona de dominios de primer nivel «.dev» y en una red local 192.168.1.0/24, suponiendo que la dirección IP del servidor DNS es 192.168.1.10.

    Todos los ficheros se se sitúan en la ruta /etc/bind.

    named.conf:

    // This is the primary configuration file for the BIND DNS server named.
    //
    // Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
    // structure of BIND configuration files in Debian, *BEFORE* you customize 
    // this configuration file.
    //
    // If you are just adding zones, please do that in /etc/bind/named.conf.local
    
    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    include "/etc/bind/named.conf.default-zones";

    named.conf.options:

    options {
        // all relative paths use this directory as a base
        directory "/var/cache/bind";
    
        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
    
        // If your ISP provided one or more IP addresses for stable 
        // nameservers, you probably want to use them as forwarders.  
        // Uncomment the following block, and insert the addresses replacing 
        // the all-0's placeholder.
    
        // forwarders {
        //     0.0.0.0;
        // };
    
        // By not providing a forwarder, root servers are used.
        //forwarders {
        //      192.168.1.1;
        //};
    
            //=====================================================================$
            // If BIND logs error messages about the root key being expired,
            // you will need to update your keys.  See https://www.isc.org/bind-keys
            //=====================================================================$
            dnssec-validation auto;
    
        auth-nxdomain no;    # conform to RFC1035
        // To listen only on certain interfaces list them here:
        //listen-on { 127.0.0.1; 10.0.0.1/24; };
        listen-on-v6 { any; };
        listen-on { any; };
    
        // This prevents bind from serving requests from IPs other than specified:
        allow-query-cache { 127.0.0.0/8; 192.168.1.0/24; };
    
        // version statement changed for security (to avoid hacking known weaknesses)
        version "not currently available";
    
        // This prevents bind from serving other than authoritative requests:
    //    recursion no;
        // disables all zone transfer requests for performance as well as security reasons
    //    allow-transfer { none; }; // The allow-transfer in each zone overrides this
    //    dnssec-enable no; // zone not signed - yes by default since BIND 9.5
    //    minimal-responses yes; // optional - improved performance
    //    additional-from-auth no; // optional - improved performance
    //    additional-from-cache no; // optional - minimal performance change
    };
    
    // ----------------------- Logging ----------------------- 
    // log to /var/log/bind/bind9_info.log all events from info UP in severity (no debug)
    // uses 3 files in rotation swaps files when size reaches 250K
    // failure messages up to this point are in (syslog) /var/log/messages
    logging {
      channel custom_log {
        file "/var/log/bind/bind9_info.log" versions 3 size 250k;
        severity info;
            print-time yes;
            print-category yes;
      };
      category default {
        custom_log;
      };
    
      // Debugging logging settings
    //    category "default" { "debug"; };
        category "general" { "debug"; };
        category "database" { "debug"; };
        category "security" { "debug"; };
        category "config" { "debug"; };
        category "resolver" { "debug"; };
        category "xfer-in" { "debug"; };
        category "xfer-out" { "debug"; };
        category "notify" { "debug"; };
        category "client" { "debug"; };
        category "unmatched" { "debug"; };
        category "network" { "debug"; };
        category "update" { "debug"; };
        category "queries" { "debug"; };
        category "dispatch" { "debug"; };
        category "dnssec" { "debug"; };
        category "lame-servers" { "debug"; };
    
        channel "debug" {
        file "/var/log/bind/bind-dbg.log" versions 2 size 50m;
            print-time yes;
            print-category yes;
        };
    
    };

    named.conf.local:

    //
    // Do any local configuration here
    //
    
    // Consider adding the 1918 zones here, if they are not used in your
    // organization
    //include "/etc/bind/zones.rfc1918";
    
    zone "dev" {
        type master;
        file "/etc/bind/db.dev";
    //    allow-transfer { 10.0.0.1; }; // Slave server for the domain
        allow-update { none; }; // Don't allow updates from other servers
    };
    
    zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.1.168.192";
    };

    named.conf.default-zones:

    // prime the server with knowledge of the root servers
    zone "." {
        // a hint type means that we've got to look elsewhere
        // for authoritative information
        type hint;
        file "/etc/bind/db.root";
        // This file is maintained by InterNIC and made available at:
        // ftp://ftp.internic.net/domain/named.root
    };
    
    // be authoritative for the localhost forward and reverse zones, and for
    // broadcast zones as per RFC 1912
    
    zone "localhost" {
        // a master type means that this server needn't look
        // anywhere else for information; the localhost buck
        // stops here.
        type master;
        file "/etc/bind/db.local";
    };
    
    zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
    };
    
    zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
    };
    
    zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
    };

    db.dev:

    ;
    ; BIND data file for dev local TLD
    ;
    $ORIGIN dev.
    $TTL    604800
    @    IN    SOA    ns.dev. root.localhost. (
                      3        ; Serial
                 604800        ; Refresh
                  86400        ; Retry
                2419200        ; Expire
                 604800 )    ; Negative Cache TTL
    ;
    @    IN    NS    ns.dev.
    @    IN    A    192.168.1.10
    @    IN    AAAA    ::1
    
    ns    IN    A    192.168.1.10
    otro  IN    A    192.168.1.100

     

    db.1.168.192:

    ;; db.1.168.192 - Reverse lookup zone for domain-name
    $TTL 2D
    @    IN    SOA    ns.dev.    root.localhost. (
                      3        ; Serial
                 604800        ; Refresh
                  86400        ; Retry
                2419200        ; Expire
                 604800 )    ; Negative Cache TTL
    ;
    
    @    IN    NS    ns.dev.
    
    10    IN    PTR   ns.dev.        ; The nameserver 192.168.1.10
    100   IN    PTR   otro.dev.

     

    Referencias:

    http://blog.philippklaus.de/2011/04/get-your-own-dns-server-up-and-running-with-bind9-on-ubuntu-or-debian/
    http://www.server-world.info/en/note?os=Debian_6.0&p=dns
    http://www.cameratim.com/computing/linux/using-bind-as-a-local-dns-server
    http://www.zytrax.com/books/dns/ch8/aaaa.html

  • Configurar Java 7 en Wheezy

    Después de desactivar el plugin de Java para Iceweasel por los fallos de seguridad instalé Java 7 update 9, que parece arreglar los ya conocidos (tal vez tenga otros). La instalación la hice descomprimiendo el tar en /opt, y configurando las alternativas de la siguiente forma:

     

    update-alternatives --install /usr/bin/java java /opt/jdk1.7.0_09/bin/java 1
    update-alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_09/bin/javac 1
    update-alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so /opt/jdk1.7.0_09/jre/lib/amd64/libnpjp2.so 1
    update-alternatives --set java /opt/jdk1.7.0_09/bin/java
    update-alternatives --set javac /opt/jdk1.7.0_09/bin/javac
    update-alternatives --set iceweasel-javaplugin.so /opt/jdk1.7.0_09/jre/lib/amd64/libnpjp2.so

     

    También puede ser necesario actualizar el enlace que pudiera haberse creado previamente en el directorio de plugins de Mozilla particular del usuario:

     

    cd ~/.mozilla/plugins
    ln -fs /etc/alternatives/mozilla-javaplugin.so libnpjp2.so
    
    

     

     

     

  • OpenDNIe para Debian Wheezy 64 bits (y Squeeze 64bits también)

    Edición: Voy a revisitar/revisar este post que escribí hace casi dos años para asegurarme de que funciona a día de hoy 9 de abril de 2014.

    Gracias a las instrucciones de cómo usar el DNI electrónico en Debian Wheezy de Rodrigo Aguilera me decidí, otra vez a intentar hacer funcionar el DNIe en Linux, esta vez en Debian Wheezy 64bits (testing en ese momento).

    Comencé con la instalación de los paquetes sugeridos:

    apt-get install pcscd pcsc-tools pinentry-gtk2

    A continuación descargué el paquete opensc-opendnie para Debian proporcionado por OpenDNIe pero, al comprobar que el checksum no coincidía con el proporcionado, decidí optar por la compilación de los fuentes de opensc parcheados para DNIe. Y aquí empiezan los problemas.

    Edición. La compilación se realiza del modo habitual en los paquetes fuente bien hechos, es decir ./configure, make y make all. El día que yo aprenda a hacer un paquete de estos escribiré otro post explicándolo.

    Al ejecutar ./configure fallaba por no encontrar winscard.h. La solución estaba en este hilo:

    apt-get install libpcsclite-dev

    Ahora sí terminó con éxito la ejecución de ./configure. El siguiente problema fue en la compilación. make fallaba al no encontrar el símbolo dlopen y otros.

    En Squeeze 64 bits make realiza la compilación con éxito sin más acciones, por lo que se puede pasar a su instalación con make install. Nota, esto no lo he probado en la revisión del 2014, ya no tengo ningún Squeeze, pero se supone que debe seguir igual.

    Para arreglar el problema de dlopen instalé la librería dl ya que como se sugería en StackOverflow había que enlazar con ella.

    apt-get install libdlrestrictions-dev

    Pero make volvía fallar, y es que hay que incluir manualmente -ldl en la variable LDFLAGS.A continuación se ejecuta make proporcionando la variable de entorno LDFLAGS con la inclusión de la librería dl:

    export LDFLAGS=-ldl ; ./configure ; make

    Ahora el problema que se presentaba era con el símbolo dnie_match_card. El caso es que el símbolo estaba en card-dnie.c, pero el símbolo no estaba definido en la librería libopensc.so (tal como indicaba el error). Mirando el código de este fichero (después de otras cosas) vi que requería openssl. Yo tenía openssl instalado, pero no libssl-dev que es lo que hacía falta.

    apt-get install libssl-dev

    Ahora, confirmando que quería openssl en configure, e indicando en las variables de entorno el uso de la librería dl, la compilación funcionó:

    export LDFLAGS=-ldl; ./configure --enable-openssl
    make

    Y como root:

    make install

    Ahora, continuando con el documento de referencia inicial y creamos el enlace en /usr/lib a /usr/lib/x86_64-linux-gnu/libpcsclite.so.1.

    ln -s /usr/lib/x86_64-linux-gnu/libpcsclite.so.1 /usr/lib

    Ya «sólo» queda añadir el certificado de la autoridad de certificación de la DGP y el módulo creado como dispositivo de seguridad a firefox. El certificado de la autoridad de certificación raíz se encuentra en el portal oficial para el DNIe. Hay que importarlo desde la sección de certificados de autoridades de certificación (preferencias -> avanzado -> encriptación -> ver certificados -> autoridades -> import y seleccionar confiar en el certificado para sitios web, direcciones de correo electrónico y software).

    Para agregar el módulo creado a firefox tuve que tirar del último apartado de otras instrucciones para el DNIe donde se proporcionaba el siguiente comando (ejecutar como el usuario final, no como root). Debe ejecutarse con firefox cerrado.

    modutil -dbdir ~/.mozilla/firefox/$(cat ~/.mozilla/firefox/profiles.ini | grep Path | awk -F"=" '{print $2}') -add "DNIe" -libfile /usr/lib/opensc-pkcs11.so

    En el caso de que no exista el comando modutil se instala con el paquete libnss3-tools:

    apt-get install libnss3-tools

    Añadido: Para que el comando modutil funcionara tuve que hacer un par de enlaces simbólicos (hay más soluciones pero esta me pareció la más directa):

    ln -s /usr/local/lib/opensc-pkcs11.so /usr/lib/
    ln -s /usr/local/lib/libopensc.so.3 /usr/lib/

     

    Y ahora se puede importar el módulo desde el apartado dispositivos de la pestaña de configuración de cifrado de firefox. Para ello se pulsa en cargar y se proporciona la ruta /usr/local/lib/opensc-pkcs11.so, que es donde la instalación de los fuentes deposita el módulo si no se indica otra ruta.

    Una vez hecho esto, reiniciando Iceweasel/Firefox pude, por primera vez de nuevo, utilizar el DNIe en Linux.

    Nota. Es necesario tener el plugin de Java habilitado en Iceweasel/Firefox para poder utilizar el DNIe.

  • Ejecutar PDroidPatcher (aplicación Win32) en Wheezy 64 bits (incompleto)

    PDroidPatcher es una aplicación para Win32 que requiere para su ejecución Java y .NET. Por lo tanto hacen falta tres cosas para ejecutarlo; poder ejecutar aplicaciones Win32, instalar Java e instalar la infraestructura de ejecución de aplicaciones .NET.

    Instalación de Wine

    Para ejecutar las aplicaciones para Win32 en GNU/Linux se dispone de la herramienta Wine, incluida en los repositorios de Wheezy. Sin embargo, aunque la versión Wheezy para arquitecturas AMD64 incluye en el repositorio un paquete Wine, se trata de un paquete transicional, de modo que al intentar ejecutar wine, nos indicará que hay que instalar el paquete de la arquitectura de 32 bits y cómo hacerlo.

    Para instalar Wine para 32 bits hay que, en primer lugar, proporcionar a la instalación de Wheezy de 64 bits la capacidad de ejecutar aplicaciones de 32 bits instalando las librerías necesarias:

    apt-get install ia32-libs ia32-libs-gtk

    A continuación hay que preparar el sistema de paquetes para que incluya paquetes de la arquitectura de 32 bits en las búsquedas.

    dpkg --add-architecture i386

    Ahora se actualiza la base de datos

    apt-get update

    Y  se instala el paquete de Wine (hay que aceptar la eliminación del paquete de 64 bits):

    apt-get install wine-bin:i386

    Una vez instalado, opcionalmente, se puede volver a configurar el sistema de paquetes para que sólo trabaje con paquetes de la arquitectura de 64 bits.

    dpkg --remove-architecture i386

    También suele ser conveniente instalar el paquete winetricks, que ayudará a instalar complementos a la instalación de Wine necesarios para poder ejecutar algunas aplicaciones Win32.

    apt-get install winetricks

    Java

    Ya está Wine instalado pero, como indica al principio del artículo, esto es sólo  la  base, ahora hay que instalar Java, concretamente la versión JDK 6 (para Windows x86, claro), que es la que requiere en concreto PDroidPatcher. El instalador de JDK6 se puede descargar desde la página de descargas de Java SE. Una vez descargado se ejecuta en el entorno Wine.

    wine ~/Downloads/jdk-6u35-windows-i586.exe

    Soporte .NET

    Por último para el soporte para aplicaciones .NET existen dos alternativas, la de Microsoft y la de código abierto, Mono. Las dos pueden ser válidas, pero sólo una debe instalarse.

    La instalación de Mono se realiza mediante winetricks, pero de 32 bits. Para ello se ejecuta lo siguiente.

    export WINEARCH="win32"
    winetricks dotnet35

    Desgraciadamente, aunque con todo esto se consigue iniciar PDroidPatcher, durante la ejecución se produce un error y no logra formar el parche para la imagen Android proporcionada. Ni siquiera con Mono:

    winetricks mono26

     

     

  • Recetas varias Wheezy

    Recuperación de entorno gráfico después de actualización de núcleo:

    apt-get install nvidia-kernel-dkms

     

    Mejorar aspecto de aplicaciones que utillizan Gtk en Qt:

    apt-get install gtk3-engines-oxygen gtk2-engines-oxygen

     

    Historial de apt:

    cat /var/log/dpkg.log
    cat /var/log/apt/history.log

     

    Evitar el continuo mensaje de error del kernel «unable to enumerate usb device» prohibiendo la carga del módulo que lo genera (en este caso) ohci_hcd. Para prohibir su carga se envía un mensaje al kernel en su carga desde Grub, para ello se edita /etc/default/grub añadiendo la opción modprobe.blacklist=ohci_hcd:

    GRUB_CMDLINE_LINUX_DEFAULT=»quiet vga=791 modprobe.blacklist=ohci_hcd»

    Capturas de pantalla
    Aunque el conjunto de efectos que viene con KDE incluye una captura de pantalla, a mi no me funcionaba así que tuve que arreglarlo instalando el paquete ksnapshot:

    apt-get install ksnapshot

     

    Para habilitar los codecs propietarios hay que instalar paquetes que no están en el repositorio oficial, para acceder a ellos se añade el repositorio multimedia a la lista de repositorios:

    echo «deb http://www.debian-multimedia.org wheezy main non-free» >> /etc/apt/sources.list

    Ahora se actualiza la base de datos y se instalan los paquetes necesarios:

    apt-get update

    apt-get install w64codecs

    apt-get install libdvdcss2 vlc
    aptitude install gstreamer0.10-fluendo-mp3 gstreamer0.10-ffmpeg ffmpeg sox twolame vorbis-tools lame faad

    Pedirá confirmación ya que no se ha incluido la clave de verificación del repositorio multimedia. El paquete a instalar es w64codecs para Wheezy de 64 bits, para 32 bits sería w32codecs.

     

    Wireshark

    Para configurar Wireshark para poder ser ejecutado sin privilegios de root hay que crear un grupo llamado wireshark y añadir a los usuarios deseados a ese grupo.Sin embargo, la creación del grupo hay que dejarla en la mano del paquete wireshark-common.

    dpkg-reconfigure wireshark-common

    usermod -aG wireshark <usuario>

    Para que el usuario haga efectiva su pertenencia al grupo wireshark y pueda, por tanto, acceder desde Wireshark a los interfaces hay que iniciar una nueva sesión.

     

  • Solución al problema de los terminales virtuales en negro con el driver propietario de Nvidia

    Desde siempre, utilizando el controlodor propietario de Nvidia, me quedaba con las terminales virtuales (VTs, la que se activa con Ctrl-Alt-F1) ciegas, es decir, funcionaban pero no veía nada, sólo un fondo negro.

    Ya me había acostumbrado, o resignado más bien, y últimamente hasta optaba por Nouveau a pesar de su bajo rendimiento. Pero al instalar Wheezy con KDE, el tema por defecto incluía efectos que ralentizaban mucho el escritorio. Así que volví a probar el controlador propietario de Nvidia para volver a quedarme sin ver nada en las terminales virtuales.

    Así que volví a dar una vuelta por los caminos de Google y encontré un par de pistas. La primera sugería añdir el parámetro de Kernel vga=normal actualizando la configuración de GRUB2. Esta opción no funcionó, pero investigando los diferentes valores que podría tener dicho parámetro dí con esta tabla de modos VESA. Tras modificar /etc/default/grub para pasar el parámetro vga=791 y ejecutar update-grub (ambas cosas como root, claro) conseguí mantener las terminales virtuales junto con el driver propietario NVIDIA.

    /etc/default/grub:

    Desde siempre, utilizando el controlodor propietario de Nvidia, me quedaba con las terminales virtuales (VTs, la que se activa con Ctrl-Alt-F1) ciegas, es decir, funcionaban pero no veía nada, sólo un fondo negro.

    Ya me había acostumbrado, o resignado más bien, y últimamente hasta optaba por Nouveau a pesar de su bajo rendimiento. Pero al instalar Wheezy con KDE, el tema por defecto incluía efectos que ralentizaban mucho el escritorio. Así que volví a probar el controlador propietario de Nvidia para volver a quedarme sin ver nada en las terminales virtuales.

    Así que volví a dar una vuelta por los caminos de Google y encontré un par de pistas. La primera sugería añdir el parámetro de Kernel vga=normal actualizando la configuración de GRUB2. Esta opción no funcionó, pero investigando los diferentes valores que podría tener dicho parámetro dí con esta tabla de modos VESA. Tras modificar /etc/default/grub para pasar el parámetro vga=791 y ejecutar update-grub (ambas cosas como root, claro) conseguí mantener las terminales virtuales junto con el driver propietario NVIDIA.

    /etc/default/grub:

    Desde siempre, utilizando el controlodor propietario de Nvidia, me quedaba con las terminales virtuales (VTs, la que se activa con Ctrl-Alt-F1) ciegas, es decir, funcionaban pero no veía nada, sólo un fondo negro.

    Ya me había acostumbrado, o resignado más bien, y últimamente hasta optaba por Nouveau a pesar de su bajo rendimiento. Pero al instalar Wheezy con KDE, el tema por defecto incluía efectos que ralentizaban mucho el escritorio. Así que volví a probar el controlador propietario de Nvidia para volver a quedarme sin ver nada en las terminales virtuales.

    Así que volví a dar una vuelta por los caminos de Google y encontré un par de pistas. La primera sugería añdir el parámetro de Kernel vga=normal actualizando la configuración de GRUB2. Esta opción no funcionó, pero investigando los diferentes valores que podría tener dicho parámetro dí con esta tabla de modos VESA. Tras modificar /etc/default/grub para pasar el parámetro vga=791 y ejecutar update-grub (ambas cosas como root, claro) conseguí mantener las terminales virtuales junto con el driver propietario NVIDIA.

    /etc/default/grub:

     

    Desde siempre, utilizando el controlodor propietario de Nvidia, me quedaba con las terminales virtuales (VTs, la que se activa con Ctrl-Alt-F1) ciegas, es decir, funcionaban pero no veía nada, sólo un fondo negro.

    Ya me había acostumbrado, o resignado más bien, y últimamente hasta optaba por Nouveau a pesar de su bajo rendimiento. Pero al instalar Wheezy con KDE, el tema por defecto incluía efectos que ralentizaban mucho el escritorio. Así que volví a probar el controlador propietario de Nvidia para volver a quedarme sin ver nada en las terminales virtuales.

    Así que volví a dar una vuelta por los caminos de Google y encontré un par de pistas. La primera sugería añdir el parámetro de Kernel vga=normal actualizando la configuración de GRUB2. Esta opción no funcionó, pero investigando los diferentes valores que podría tener dicho parámetro dí con esta tabla de modos VESA. Tras modificar /etc/default/grub para pasar el parámetro vga=791 y ejecutar update-grub (ambas cosas como root, claro) conseguí mantener las terminales virtuales junto con el driver propietario NVIDIA.

    /etc/default/grub:
     GRUB_CMDLINE_LINUX_DEFAULT="quiet vga=791"