2021-03-05

Memtest Ubuntu booteando desde EFI

Lamentablemente, la opción para correr memtest cuando booteamos no está disponible cuando booteamos de una compu que usa EFI en vez de BIOS.

Por suerte, hay workarround. Casi todos los pasos están documentados acá. La única diferencia para la compu en la que tuve que hacer esto es que, como bootea de memoria de estado sólido, en vez de bootear de /dev/sda4 (o parecido) bootea de /dev/nvme0n1p1, por lo que las instrucciones sobre cómo armar el script para que grub tenga la entrada son un poquitín distintas.

En mi caso el archivo /etc/grub.d/40_memtest es así (en rojo lo que cambié)

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
 
menuentry 'memtest86' {
    insmod part_gpt
    insmod fat
    set root='hd1,gpt1'
    chainloader /EFI/memtest86/BOOTX64.efi
}

No tengo muy claro porqué funciona (fue un SWAG).

Espero que les sirva,

Aureliano.

2021-03-03

pingmon en python3

Hace un tiempo hice un scriptcito en python para monitorear la conexión de red usando ping. Hoy quise usarlo de nuevo y descubrí que no anda en python3, así que lo adapté. Solo necesitaba 2 pequeños cambios:

  • print es python3 es una función, así que tuve que agregar unos paréntesis.
  • sys.stdout.readline() en python 3 devuelve un montón de bytes (en vez de un string) así que agregué .encode() para transformarlo en string

Dejo acá abajo la versión nueva:

#!/usr/bin/env python3

import subprocess
import sys
import re

SEQ_NUMBER_RE = re.compile(".*icmp_seq=(\d+) ttl.*")

def report(probes, count):
  if len(probes) < count:
    return "N/A"
  return str ( count - sum(probes[-count:]) )

def monitor(ip):
  probes = []
  ping = subprocess.Popen(["ping", ip], stdout=subprocess.PIPE)
  stdout = ping.stdout

  stdout.readline() # Ignore first line
  line_count = 0
  last_seq_number = 0
  while True:
    line_count +=1
    seq_number = int( SEQ_NUMBER_RE.match(stdout.readline().decode()).group(1))
    probes.extend([0] * (seq_number - last_seq_number - 1))
    probes.append(1)
    print( "(%s) 10:%s 100:%s 1000:%s" % (
      line_count, report(probes, 10), report(probes, 100), report(probes, 1000)
    ) )

    probes = probes[-1000:] # Keep memory usage bounded
    last_seq_number = seq_number

def main(argv):
  monitor(argv[1])

if __name__ == '__main__':
  main(sys.argv)

 

Happy hacking,
Aureliano

2021-03-02

Deshabilitando touchpad

Mi vieja técnica para deshabilitar el touchpad no anda en lubuntu 20.04. Así que tuve que googlear de nuevo cómo se hace.

Para ver todos los devices de entrada de X-Windows hay que correr 

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Telink 2.4G Mouse                         id=11   [slave  pointer  (2)]
⎜   ↳ Telink 2.4G Mouse Consumer Control        id=12   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=16   [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)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Logitech Logitech G430 Gaming Headset     id=9    [slave  keyboard (3)]
    ↳ Telink 2.4G Mouse System Control          id=10   [slave  keyboard (3)]
    ↳ CHICONY HP Basic USB Keyboard             id=13   [slave  keyboard (3)]
    ↳ HP TrueVision HD Camera: HP Tru           id=14   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=15   [slave  keyboard (3)]
    ↳ HP Wireless hotkeys                       id=17   [slave  keyboard (3)]
    ↳ HP WMI hotkeys                            id=18   [slave  keyboard (3)]
    ↳ Telink 2.4G Mouse Consumer Control        id=19   [slave  keyboard (3)]

En mi compu el touchpad tiene el id 16, así que para apagarlo hay que correr xinput --disable "SynPS/2 Synaptics TouchPad" y para prenderlo xinput --enable "SynPS/2 Synaptics TouchPad"