Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save abracu/c6fe8bf7123ffdfef6ad2161e87d6078 to your computer and use it in GitHub Desktop.

Select an option

Save abracu/c6fe8bf7123ffdfef6ad2161e87d6078 to your computer and use it in GitHub Desktop.
postmarketos-xiaomi-beryllium

Guía de Instalación de PostmarketOS

Headless Setup para Xiaomi Poco F1 (xiaomi-beryllium)

Guía completa para instalar PostmarketOS en un Poco F1 como servidor headless con acceso SSH desde el primer arranque. Este proceso funciona incluso si tu pantalla está rota o desconectada.


Prerequisites (Requisitos previos)

Device Requirements (Requisitos del dispositivo)

  • Xiaomi Poco F1 (codename: beryllium)
  • Unlocked bootloader (¡Crítico!)
  • Cable USB
  • El dispositivo debe poder entrar en fastboot mode

Host Computer Requirements (Requisitos del computador host)

  • Computadora con Linux (se recomienda Ubuntu/Debian)
  • Git instalado
  • Fastboot tools instalados
  • Conexión USB

PARTE 1: Instalar pmbootstrap

Paso 1: Clonar el repositorio pmbootstrap

Consulta la Wiki: https://wiki.postmarketos.org/wiki/Pmbootstrap/Installation

PARTE 2: Inicializar pmbootstrap

Paso 2: Ejecutar pmbootstrap init

# Iniciar inicialización
pmbootstrap init

Responde a los prompts:

Usa los valores por defecto (default) para todos, excepto las siguientes opciones:

  1. Vendor: xiaomi
  • Escribe: xiaomi cuando pregunte por el vendor.
  1. Codename: beryllium
  • Escribe: beryllium cuando pregunte por el codename del dispositivo.
  1. User interface: none
  • Importante: Selecciona none, ya que este es un servidor headless (solo si no deseas usar la pantalla/display).
  1. Username: Ingresa el nombre de usuario deseado.
  • Ejemplo: heeth
  • Este será tu nombre de usuario para el login vía SSH.

PARTE 3: Instalar PostmarketOS con paquetes requeridos

Paso 3: Instalar con SSH y Networking

# Instalar PostmarketOS con los paquetes necesarios
pmbootstrap install --add openssh --add networkmanager --add avahi

Parámetro opcional: --fde (Full Disk Encryption)

Qué hace esto:

  • openssh: Habilita el servidor SSH para acceso remoto.
  • networkmanager: Gestiona las conexiones de red.
  • avahi: Habilita mDNS para descubrimiento (opcional pero útil).

Este paso tardará varios minutos mientras descarga y compila los paquetes.


PARTE 4: Configurar el sistema (Crítico para Headless Setup)

Paso 4: Entrar al Rootfs Chroot

# Entrar al sistema de archivos del dispositivo (NO al entorno de compilación)
pmbootstrap chroot -r

Deberías ver un prompt como: / #

Paso 5: Habilitar los servicios requeridos

# Habilitar servicio SSH
systemctl enable sshd

# Habilitar NetworkManager
systemctl enable NetworkManager

# Habilitar Avahi (opcional, para descubrimiento mDNS)
systemctl enable avahi-daemon

Paso 6: Configurar SSH para permitir Root Login

# Editar la configuración de SSH para permitir login de root
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

# Verificar que fue añadido
cat /etc/ssh/sshd_config | grep PermitRootLogin

Paso 7: Configurar WiFi (Opcional)

Omite este paso si usarás solo USB networking.

Si deseas WiFi como respaldo:

# Crear directorio de conexiones de NetworkManager
mkdir -p /etc/NetworkManager/system-connections/

# Crear archivo de conexión WiFi
cat > /etc/NetworkManager/system-connections/WiFi.nmconnection << 'EOF'
[connection]
id=MyWiFi
type=wifi
autoconnect=true

[wifi]
ssid=YourNetworkSSID
mode=infrastructure

[wifi-security]
key-mgmt=wpa-psk
psk=YourWiFiPassword

[ipv4]
method=auto

[ipv6]
method=auto
EOF

# Establecer permisos correctos (¡CRÍTICO!)
chmod 600 /etc/NetworkManager/system-connections/WiFi.nmconnection

Reemplaza:

  • YourNetworkSSID con el nombre real de tu red WiFi.
  • YourWiFiPassword con tu contraseña de WiFi real.
  • wpa-psk con tu tipo de seguridad WiFi (WPA2/WPA3).

Nota: El WiFi en el Poco F1 tiene algunos problemas conocidos. El USB networking es más confiable.

Paso 8: Salir del Chroot

# Salir del entorno chroot
exit

Deberías estar de vuelta en tu terminal regular.


PARTE 5: Flashear al dispositivo

Paso 9: Flashear PostmarketOS (vía fastboot mode)

# Navegar al directorio pmbootstrap si no estás ahí
cd ~/pmbootstrap

# Flashear el root filesystem
pmbootstrap flasher flash_rootfs

# Esperar a que complete...

# Flashear el kernel
pmbootstrap flasher flash_kernel

# Esperar a que complete...

Este proceso:

  1. Borrará los datos existentes en el dispositivo.
  2. Flasheará el rootfs de PostmarketOS.
  3. Flasheará el Linux kernel.
  4. Tomará varios minutos.

IMPORTANTE: ¡No desconectes el dispositivo durante el flashing!

Paso 10: Reiniciar el dispositivo

# Reiniciar el dispositivo
fastboot reboot

O manualmente:

  • Mantén presionado el botón Power por 10 segundos para forzar el reinicio.

PARTE 6: Primer arranque y conexión

Paso 11: Esperar al primer arranque

  • El dispositivo se reiniciará.
  • El primer arranque toma de 1 a 2 minutos.
  • La pantalla estará en blanco (sin imagen).
  • El USB networking debería inicializarse automáticamente.

Paso 12: Identificar la interfaz de red USB en el Host

# Revisar la nueva interfaz de red USB
ip link show

# Busca una interfaz similar a: enx9e2b191eb8c7
# Debería tener una IP como 172.16.42.2

# Revisar la dirección IP
ip addr show | grep 172.16

Paso 13: Primera conexión SSH

# Intentar conectar (reemplaza 'heeth' con tu username)
ssh heeth@172.16.42.1

# O si configuraste root:
ssh root@172.16.42.1

# Si usas mDNS/avahi:
ssh heeth@postmarketos.local

Si la conexión falla:

  • Espera un minuto más (el dispositivo podría seguir arrancando).
  • Revisa la conexión del cable USB.
  • Verifica que la interfaz USB existe: ip link show.
  • Prueba con un ping: ping 172.16.42.1.

PARTE 7: Configuración Post-Instalación (Ejecutar en el dispositivo vía SSH)

Una vez conectado con éxito vía SSH, ejecuta estos comandos:

Paso 14: Corregir la resolución DNS

# Eliminar el enlace simbólico de systemd-resolved
sudo rm /etc/resolv.conf

# Crear configuración DNS estática
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf

Paso 15: Añadir ruta por defecto (Default Route)

# Añadir ruta por defecto para acceso a internet
sudo ip route add default via 172.16.42.2

Paso 16: Habilitar Internet Sharing en el Host Computer

En tu computadora host (no en el dispositivo), ejecuta:

# Habilitar IP forwarding
sudo sysctl -w net.ipv4.ip_forward=1

# Configurar NAT (reemplaza wlp3s0 con tu interfaz de internet)
# Encuentra tu interfaz con: ip route | grep default
sudo iptables -t nat -A POSTROUTING -o wlp3s0 -j MASQUERADE
sudo iptables -A FORWARD -i enx9e2b191eb8c7 -o wlp3s0 -j ACCEPT
sudo iptables -A FORWARD -i wlp3s0 -o enx9e2b191eb8c7 -m state --state RELATED,ESTABLISHED -j ACCEPT

Paso 17: Probar conexión a Internet

De vuelta en el dispositivo:

# Probar conectividad IP
ping -c 3 8.8.8.8

# Probar DNS
ping -c 3 google.com

Paso 18: Actualizar sistema e instalar herramientas esenciales

# Actualizar el índice de paquetes
sudo apk update

# Actualizar todos los paquetes (Upgrade)
sudo apk upgrade

# Instalar paquetes comúnmente necesarios
sudo apk add nano vim git curl wget htop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment