agosto 29, 2019
julio 27, 2019
Como reinstalar una nueva imagen de Raspberry Pi desde dentro y por ssh
Sin sacar siquiera la tarjeta de la RasperryPi :D (entre otras cosas por que ya no dispongo de lector de tarjetas). El sistema se que tenía era bastante viejo y tenía una debian Wheezy (7) para la que ya no se hacen paquetes. Total, imposible de hacer un update/upgrade. Aquí los pasos para reinstalar el sistema de nuevo con la última versión, todo por ssh, sin despeinarse ;)
Descargamos la ultima raspbian desde https://www.raspberrypi.org/downloads/raspbian/ en mi caso he cogido la lite.
Vamos a editar la imagen y transmitirla ya modificada para que el sistema arranque directamente con SSH e IP fija:
Descargamos la ultima raspbian desde https://www.raspberrypi.org/downloads/raspbian/ en mi caso he cogido la lite.
Vamos a editar la imagen y transmitirla ya modificada para que el sistema arranque directamente con SSH e IP fija:
$ mkdir rpi
$ cd rpi
$ 7z x ../2019-07-10-raspbian-buster-lite.zip
$ fdisk -l 2019-07-10-raspbian-buster-lite.img
Disk 2019-07-10-raspbian-buster-lite.img: 2 GiB, 2197815296 bytes, 4292608 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x17869b7d
Device Boot Start End Sectors Size Id Type
2019-07-10-raspbian-buster-lite.img1 8192 532480 524289 256M c W95 FAT32 (LBA)
2019-07-10-raspbian-buster-lite.img2 540672 4292607 3751936 1,8G 83 Linux
Montamos sobre loop devices las dos particiones (el valor del offset sale de multiplicar el comienzo de la partición por el tamaño de sector: 8192 * 512 = 4194304):
$ sudo losetup /dev/loop1 -o 4194304 2019-07-10-raspbian-buster-lite.img
$ sudo losetup /dev/loop2 -o 276824064 2019-07-10-raspbian-buster-lite.img
$ mkdir p1 p2
$ sudo mount /dev/loop1 p1
$ sudo mount /dev/loop2 p2
Ahora tenemos las particiones montadas en sendos directorios.
Para activar el ssh necesitamos crear en la primera partición un archivo llamado "ssh":
$ echo ssh > p1/ssh
Para fijar nuestra ip debemos editar el archivo "p2/etc/dhcpcd.conf", al final del archivo habilitamos el interfaz (por ej, el eth0)
# Example static IP configuration:
interface eth0
static ip_address=192.168.1.2/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
Desmontamos las particiones y los loops:
$ sudo umount /dev/loop1
$ sudo umount /dev/loop2
$ sudo losetup -D
Ya tenemos la imagen preparada, para guardarla sobre la SD vamos a transmitirla por SSH directamente. Debemos activar el acceso root por ssh: "sudo passwd root" en la raspberry. Editar el /etc/sshd si fuera necesario.
Detener todos los demonios y procesos posibles, para asegurarnos que nadie se dedica a escribir en disco.
Ahora es recomendable tener una segunda consola abierta con root contra la Raspberry y lanzar el comando "sync" que nos asegurará que todos los datos están escritos en la SD y podemos apagarla.
En otra consola lanzamos:
$ gzip -c 2019-07-10-raspbian-buster-lite.img | ssh root@192.168.1.9 "gunzip -c > /dev/mmcblk0"
Una vez acabe volvemos a la consola previa, "sync" y esperamos a que finalice.
Ya podemos apagar y volver a encenderla, si todo hay ido bien:
$ ssh pi@[IP]
password: raspberry
Linux raspberrypi 4.19.57+ #1244 Thu Jul 4 18:42:50 BST 2019 armv6l
Y aunque pueda parecer poco heterodoxo, ya lo tenemos listo.
febrero 26, 2018
postfix certificate key values mismatch
Recientemente durante la instalación de un nuevo certificado en un servidor postfix me sucedió el siguiente error:
$ telnet x.x.x.x 25 Escape character is '^]'. 220 x.x.x ESMTP Postfix > EHLO test 250-x.x.x 250-PIPELINING 250-SIZE 34044240 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 > STARTTLS 454 4.7.0 TLS not available due to local problem Connection closed by foreign host.En el log de postfix podemos ver la oscura razón:
postfix/smtpd[6376]: warning: cannot get RSA private key from file "/etc/postfix/smtpd.pem": disabling TLS support postfix/smtpd[6376]: warning: TLS library problem: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:340:Tras varias vueltas resulta que efectivamente los certificados que está mirando son distintos, el problema se encontraba en que habia puesto el certificado de las CA intermedias antes que el certificado del propio servidor. Aquí hay una guía muy completa sobre la instalación en postfix, reproduzco algunas partes:
openssl x509 -noout -modulus -in cert.pem | openssl md5 (stdin)= d467b8860d03aec22ad97eed3d77cac2
openssl rsa -noout -modulus -in key.pem | openssl md5 (stdin)= d467b8860d03aec22ad97eed3d77cac2Ambos modulos deberian coincidir, si no coinciden o nos hemos liados con los archivos o como yo hemos pegado el certificado incorrecto primero :)
marzo 25, 2017
Visual Studio Code indentation guides color
Primero activamos que se muestren las guias en settings.json:
// Controls whether the editor should render indent guides
"editor.renderIndentGuides": true,
Luego en el Color Theme que tengamos activo, editamos el color de la key: guide tal que así:
<plist version="1.0">
<dict>
<key>name</key>
<string>Monokai Yggdrasil</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#23241F</string>
<!-- Color del cursor del editor -->
<key>caret</key><string>#FF0000</string>
<!-- Color de la guía del editor -->
<key>guide</key><string>#303030</string>
marzo 15, 2017
Script de migracion de Gnome Terminal para Ubuntu 16.04 LTS
La migración de Ubuntu siempre trae sorpresas, esta vez ha sido no poder recuperar la configuración del Gnome Terminal y que no haya ninguna herramienta que lo haga cuando es relativamente sencillo, han pasado de gconf (un sistema de configuración mediante archivos xml) a dconf (sistema de db por clave en bajo nivel).
El script lee un directorio con los xml viejos (normalmente en /home/user/.gconf/apps/gnome-terminal) y los instala en el nuevo sistema pasandole un dump de la nueva config en un formato que dconf entiende.
De paso permite también la alteración de uno o mas parámetros de todos los perfiles, que importamos o existentes al mismo tiempo.
https://github.com/fcosantos/gnome-terminal-migrate
El script lee un directorio con los xml viejos (normalmente en /home/user/.gconf/apps/gnome-terminal) y los instala en el nuevo sistema pasandole un dump de la nueva config en un formato que dconf entiende.
python gterminal_tool.py --load-current-profiles --skip-duplicate-names \ --load-gconf-profiles-from homefolder_backup/.gconf/apps/gnome-terminal \ --execute-delete --execute-action
De paso permite también la alteración de uno o mas parámetros de todos los perfiles, que importamos o existentes al mismo tiempo.
python gterminal_tool.py --load-current-profiles --set="font='Consolas 13'" \ --set="default-size-columns=170" --set="default-size-rows=50" \ --execute-delete --execute-actionEl código para descargar en github:
https://github.com/fcosantos/gnome-terminal-migrate
Suscribirse a:
Entradas (Atom)