Compilar el firmware
Descarga el código fuente del firmware en la Pi y compílalo allí.
- 120 min
- En la Raspberry Pi
El firmware se compila en la propia Pi, así que el código que se ejecuta en tu billetera nunca pasa por otra máquina como programa terminado.
Qué cambia la versión DIY
El código fuente viene del firmware Classic 1S de OneKey, más un pequeño conjunto de cambios para que funcione en una Pi. Esos cambios importan, porque la versión de este firmware que funciona en una computadora normal se hizo para que la prueben los desarrolladores, no para guardar dinero:
- Aleatoriedad del chip. La versión sin cambios crea la misma frase de recuperación en todas las computadoras, porque sus números aleatorios salen de una fórmula fija. La versión DIY los lee directamente del generador de números aleatorios por hardware del chip de la Pi, que toma muestras de ruido electrónico. Revisa cada byte con las pruebas de salud de NIST SP 800-90B, al arrancar y de forma continua, y condensa con SHA-256 cuatro veces más bytes de los que usa. Si el generador falta o falla una prueba, la billetera se detiene en lugar de crear una frase.
- Sin acceso desde fuera. La versión sin cambios acepta conexiones de toda la red. La versión DIY, solo de programas de la propia Pi.
- Interfaz de depuración desactivada. La interfaz de depuración puede leer la frase de recuperación. El comando de compilación de más abajo la desactiva.
- Pantalla y botones. Dibuja en la pantalla de 1,3 pulgadas y lee el joystick, en lugar de abrir una ventana en un escritorio.
- Almacenamiento ligado a esta placa. La billetera guardada se cifra con una clave que también depende del número de serie de esta Pi.
Todos los cambios al código de OneKey están en una sola página que puedes leer completa: los cambios DIY en GitHub.
Instalar las herramientas de compilación
sudo apt update
sudo apt install -y git build-essential python3-venv protobuf-compiler libprotobuf-devDescargar el código fuente
Esto descarga unos 600 MB.
git clone --depth 1 --branch diy https://github.com/rayston92/firmware-classic1s.git ~/wallet
cd ~/wallet
git submodule update --init --recursive --depth 1Comprueba que tienes exactamente el código para el que se escribió esta guía:
git log -1 --format=%HDebería mostrar 287341b8338d00c16da8700258944ac97e44114f. Si muestra otra cosa, la rama cambió después de que se revisara esta guía. Lee qué cambió antes de continuar.
Preparar Python
La compilación usa algunas herramientas de Python para generar código. Guárdalas en su propia carpeta:
python3 -m venv ~/wallet-venv
. ~/wallet-venv/bin/activate
pip install "nanopb==0.4.*" protobuf mako munch click requests typing_extensionsCompilar
cd ~/wallet/legacy
EMULATOR=1 DIY_HAT=1 DEBUG_LINK=0 BITCOIN_ONLY=1 ./script/cibuildBITCOIN_ONLY=1 deja fuera todas las monedas excepto Bitcoin, como elegiste en Tu montaje.
En una Pi Zero 2 W esto tarda un rato: probablemente de una a dos horas (todavía no se ha cronometrado en una Pi real). Mientras trabaja, van pasando líneas que empiezan por CC. Es normal que salgan advertencias; ha terminado cuando vuelve a aparecer el indicador. Hasta entonces, no dejes que tu computadora entre en reposo: si se cierra la ventana de SSH, la compilación se detiene. Vuelve a entrar y ejecuta el mismo comando, y seguirá donde se quedó.
Si más adelante vuelves a iniciar sesión, ejecuta . ~/wallet-venv/bin/activate antes de volver a compilar.
Comprobación
ls -lh firmware/onekey_emu.elfDeberías ver un archivo de unos 5 MB7 MB. Es el firmware de tu billetera.