Instalar Linux en una calculadora





Durante mucho tiempo, he soñado con un dispositivo que tenga una pantalla táctil, botones de hardware a bordo y en el que Linux funcione sin problemas. Y, por supuesto, tendrá una cantidad suficiente de interfaces. En un momento, el proyecto Vogue se mostró prometedor , pero hoy lo encontré: un dispositivo ideal para llevar en el bolsillo, con un potente procesador y Linux a bordo. Así que esta es la calculadora HP Prime G2. Hay un elegante procesador i.mx6ull con el que tengo una gran experiencia, por lo que portar linux no parecía una tarea demasiado difícil. Sin embargo, como de costumbre, el diablo está en las pequeñas cosas.



Quiero contarles sobre mi espinoso camino para instalar Linux en una calculadora, qué salió de él y qué no, ¡deberían juzgar!



Proyecto Linux para HP Prime G2



A pesar de que jugué mucho con este proyecto, y en general incluso hice mi propia contribución a su desarrollo, todavía la rama principal del proyecto, que lo inició todo, debería considerarse Linux para HP Prime G2 de zephray . Pero, como de costumbre, sucede en tales proyectos, si intenta repetir todo de acuerdo con las instrucciones, entonces la nifiga no funcionará y recolectará miles de rastrillos, que el autor, por una razón u otra, olvidó mencionar. . Por lo tanto, en este artículo, intentaré llamar su atención sobre estas inconsistencias, decirle cómo solucionarlas y también publicar los ensamblados del kernel y rootfs que obviamente funcionan.



Debe entenderse que no quiero proyectar ninguna sombra sobre zephray.... Este es un hombre titán que merece una verdadera admiración. Hizo un trabajo verdaderamente titánico al trasladar estas cosas a una calculadora. De hecho, como suele ser el caso, adaptó las configuraciones de la placa de depuración para el dispositivo actual. Y también, el controlador de pantalla se escribió allí, el u-boot loader se configuró correctamente, el archivo dts ( archivo de árbol de dispositivos ) se compiló correctamente , se agregó un montón de código al núcleo mismo. No olvide que todo esto se hizo sin un esquema y documentación, por lo que la cantidad de trabajo realizado es simplemente impresionante, y todo esto es pura ilusión. Desafortunadamente, el volumen y el formato del artículo no me permitirán repasar el código en detalle, ¡aunque realmente hay algo que ver y dónde quitarse el sombrero con admiración!



Pero hay mucho código, tanto en el kernel como en el gestor de arranque y en el árbol de dispositivos. Terminaré el capítulo con una cita de Basha :



callidus77:

Pomnitsa en nuestro grid, los instaladores conectaron al suscriptor. Vinieron, metieron el setevukha, pero no tenía Frya ni leña. Nos rascamos la cabeza y nos fuimos. La persona finalmente se conecta en tres semanas.

Gryat: "¿Cuánto tiempo llevas buscando leña?"

Él: "No estaba mirando. Los escribí yo mismo ".


De cara al futuro, podemos decir que instalar Linux en una calculadora pasó de ser un agradable paseo durante media hora a una auténtica búsqueda durante un par de semanas.



conejillo de indias



Para comenzar, necesitamos la calculadora HP Prime G2 (2AP18AA) . Dado que existe una posibilidad no ácida de que varios dispositivos diferentes se escondan bajo un nombre, aquí hay fotos y una descripción de cómo se ve y cómo determinar que este es exactamente el dispositivo que necesita.







Para asegurarse de que esta es exactamente nuestra calculadora, debe abrir la ayuda (botón Ayuda) y allí abrir la sección sobre la calculadora (Segunda línea desde la parte superior del menú). Debes tener algo como esto.





Sobre la calculadora.



Diré de inmediato que en nuestro país solo una empresa vende estas calculadoras (al menos no encontré otras), por lo que no debería haber problemas con la compra, salvo quizás por su precio. ¡Pero todo vale la pena!



Preparándose para instalar Linux en una calculadora



Para comenzar, necesitamos hacer algunas actividades. para instalar Linux en Nand o ejecutar este sistema operativo en RAM, debe quitar la cubierta posterior de la calculadora, que por definición anulará inmediatamente su garantía (recuerde esto antes de comenzar a trabajar). Todas las manipulaciones se realizaron en linux mint 18.2 (todo debería funcionar de la misma manera en Ubuntu 18.04).

Necesitaría:



  • Calculadora HP Prime G2 (2AP18AA);
  • Cable USB (USB A - Micro B) para conectar Prime a una PC;
  • destornillador;
  • pinzas (conductoras o con puente), o un botón en los cables;
  • PC en Linux o Windows 7+;
  • kit de distribución HP-Prime-Linux (además daré un enlace ligeramente diferente, para esto no funciona del todo correctamente).
  • La utilidad uuu (Universal Update Utility) incluida en el paquete mfgtools 3.0 .https: //github.com/NXPmicro/mfgtools.


Instalamos el software necesario



Para empezar, prepararemos una base de software y nos aseguraremos de que funcione. Primero, construyamos la utilidad uuu.



git clone https://github.com/NXPmicro/mfgtools.git
cd mfgtools
sudo apt-get install libusb-1.0-0-dev libzip-dev libbz2-dev pkg-config cmake libssl-dev g++
cmake . && make
      
      





Y luego recibí un error de cmake ... Como resultado, tuve que actualizar la utilidad cmake. Para hacer esto, ejecuté los siguientes comandos:



wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc |
    sudo apt-key add -
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
sudo apt-get update
sudo apt-get install cmake
      
      





Después de una compilación exitosa, decidí instalar el paquete., Pero como estamos teniendo problemas cuando hacemos la instalación, lo haremos científicamente y lo instalaremos usando la utilidad checkinstall.



sudo checkinstall
      
      





Como resultado, tenemos instalado el paquete mfgtools , que, si es necesario, se puede eliminar con el comando



dpkg -r mfgtools
      
      





Comprobamos que todo funciona y seguimos adelante.



uuu -h
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.4.69-0-g63b1d3c

uuu [-d -m -v -V] <bootloader|cmdlists|cmd>

    bootloader  download bootloader to board by usb
    cmdlist     run all commands in cmdlist file
                If it is path, search uuu.auto in dir
                If it is zip, search uuu.auto in zip
    cmd         Run one command, use -H see detail
....

      
      





Preparación de hardware



Debería haber una diatriba de que haces todo bajo tu propio riesgo y riesgo, que, dicen, el autor no es responsable de tus calculadoras quemadas, etc. etc. Pero sí creo que todos somos adultos que comprendemos claramente los riesgos de lo que están haciendo y comprendemos las consecuencias.

Primero, necesitas desmontar la calculadora. Lo primero es lo primero, desatornillé todos los tornillos y saqué la batería.





Retiramos la batería.



Por cierto, preste atención a la batería genial que tiene este dispositivo. Por cierto, en experimentos posteriores ya no lo necesitaré, por desgracia.

Además, a lo largo del perímetro, hago palanca con una tarjeta y un abridor especial, tratando de no romper los pestillos de bloqueo.





Abrimos la caja de plástico.



Después de todas las acciones, se me aparecieron las entrañas de la calculadora y ahora, estoy casi listo para los experimentos más bárbaros.





Seno.



Tengo casi todo listo para ejecutar linux en esta calculadora. Pero hay matices. Para el arranque inicial, se deben cortocircuitar dos pads. Como escribe el autor de este proyecto:

, USB .

: . .

Reset ( ). USB- “SE Blank 6ULL”. ( Linux Feescale USB- lsusb)





Nota: está cortocircuitando el contacto de "Modo de arranque" a tierra. Por defecto, este pin está conectado a 3.3V a través de una resistencia pull-up de 10k.

Además, tendrá dos opciones. Al mismo tiempo, puede realizar una serie de acciones una a una sin reiniciar la calculadora. Por ejemplo, en una de las opciones, primero haga una copia de respaldo de la memoria NAND y luego actualice el sistema operativo Linux en ella sin tener que reiniciar.



Decidí que no estaba listo con una mano temblorosa para cortocircuitar las almohadillas apenas perceptibles para la carga. Solo necesitamos esta operación una vez (así que, por supuesto, puede arriesgarse), así que decidí protegerme y soldar el botón.





Botón de descarga.



Llamo su atención sobre el hecho de que el botón es necesario solo si no desea borrar el contenido de la calculadora y está listo para iniciar Linux en RAM una vez y calmarse. En general, con manos rectas y confianza en el futuro, puedes hacerlo con una pinza.

Eso es todo, estamos prácticamente listos para lanzar Linux con un pie , pero no lo lograremos.



Instalar Linux, caminar sobre un rastrillo



Antes de pasar a la instalación real de Linux en la calculadora, a todas las dificultades que han surgido, quiero llamar su atención sobre un detalle. Antes de repetir las instrucciones de otras personas (incluidas las que se dan en este artículo), asegúrese de que todos los archivos que deberían estar en los archivos de instalación estén presentes, de que está ejecutando el comando exacto que necesita. Si está ejecutando el script de otra persona, verifique el contenido de ese script. Si no comprende lo que está escrito allí, averigüe qué está sucediendo allí, y luego existe una posibilidad no ácida de que si todo no funciona, al menos pueda salvar su equipo de todo tipo de problemas.



Pero como puedes imaginar, desde que escribí ese párrafo, no seguí este camino. Como dicen, el ruso lee las instrucciones con las palabras: maldita sea, ya se rompió. Así que actué de la misma manera y mi camino fue espinoso. Para hacer una copia de seguridad del firmware, ejecutar y / o instalar linux, necesita descargar el archivo flash_utility.tar.gz desde aquí... Antes de continuar, de cara al futuro, diré que este archivo no contiene rootfs.tar.bz2, que es necesario para flashear en nand (aunque hay una llamada en el script flash_linux_to_nand.uu), initramfs, que permite para iniciar linux sin instalar, no funciona y la instalación de linux en nand falla. Como resultado, obtienes un ladrillo, de hecho, no. No sabía nada de todo esto y, a partir de ese momento, la instalación de Linux resultó ser una verdadera búsqueda para mí.

Para que podamos seguir adelante, citaré las instrucciones para usar esta utilidad.

2.2 copia de seguridad NAND



: NAND ECC OOB-, . ECC. , flash- ( , ..) - . , , , , . , , , .



SDP. flash_utility :

Windows:



uuu backup_nand.uu
      
      





Linux:



sudo ./uuu backup_nand.uu
      
      





, NAND backup.



2.3 NAND



NAND backup.

SDP. flash_utility, :

Windows:



uuu restore_nand.uu
      
      





Linux:



sudo ./uuu restore_nand.uu
      
      





2.4 Linux RAM



Linux NAND. Linux SDP USB.



: , - .



: RAM ~15. .



SDP, , flash_utility, :

Windows:



uuu run_linux_in_ram.uu
      
      





Linux:



sudo ./uuu run_linux_in_ram.uu
      
      





Linux. «root».



2.5 Linux NAND



: , NAND. , , 2.3.



: .



Linux NAND SDP, , flash_utility, :



Windows:



uuu flash_linux_to_nand.uu
      
      





Linux:



sudo ./uuu flash_linux_to_nand.uu
      
      





El proceso tardará unos minutos. Al finalizar, reinicie (Restablecer) la calculadora, después de lo cual debería iniciarse en Linux. La descarga tardará unos 15 segundos. Para la autorización, utilice el nombre de usuario "root".



Deliberadamente traje esta traducción aquí para que no se pierda en el futuro.



La lógica dicta que es necesario realizar una copia de seguridad nand-flash y luego realizar experimentos. Para hacer esto, mantuve presionado el botón, inserté el cable USB en la calculadora y realicé:



sudo uuu restore_nand.uu
      
      





Atención: hay un error en el comando anterior, en esta etapa no se puede ejecutar !!! ¿No le molesta nada este comando? Al principio, nada me confundió tampoco ... Pero yo, con este comando, no hice una copia de seguridad de la calculadora, sino que borré mi nand-flash, obstruyéndolo con basura innecesaria y abandonando la sección ECC. Una calculadora nunca será una calculadora ahora ...





La velada fue lánguida, quise intentarlo, emboté y mezclé los comandos. Está bien, pensé, estaba, no estaba, intentaré flashear linux a flash, de todos modos, la unidad flash ya está borrada y no hay nada que perder. De la misma manera, desconecté el USB, mantuve presionado el botón e hice:



sudo uuu flash_linux_to_nand.uu
      
      





Y como resultado, recibí este error:





Entonces todavía no sabía que si este error no existiera, entonces todavía no podría actualizar mi calculadora, ya que el archivo de rootfs mismo faltaba en la lista de archivos, y me habría salido con un error a unas líneas más abajo.



Desafortunadamente, no logré vencer más este error, este comando ejecuta el firmware u-boot en el nand-flash. Por alguna razón, su ejecución falla con un error al crear un archivo temporal (más tarde aprendí esto con la conexión UART).



El buen resultado de este comando es que ya no es necesario presionar un botón. Y ya no lo necesitamos, ahora podemos desoldarlo.



Entonces ... me deshice de la unidad flash USB, no puedo poner linux, bueno, tal vez al menos en la RAM sea posible iniciarlo.



Corro:



sudo uuu run_linux_in_ram.uu
      
      





Conecto el USB al dispositivo de destino y el comando pasa con éxito. ¡Y he aquí que linux se está cargando! Pero ... Pero nunca llegamos al inicio de sesión.





Nos colgamos en esta etapa ...



Buen resultado: cargador de arranque, kernel, pantalla, sistema de flasheo en su conjunto funciona. Mal resultado: Linux en realidad no funciona.



Como resultado, necesitamos: conectar el hardware UART para ver qué está sucediendo y reconstruir el kernel (principalmente para los controladores) y reconstruir los rootfs para que funcione.



Conclusión de la primera parte



El artículo simplemente ha crecido hasta un tamaño obsceno, por lo que se tomó la difícil decisión de dividirlo en dos.



Como comprenderá, no podría poner Linux de esta manera. Y entonces tienes que conectar artillería pesada: calentar el soldador, entrar en el relleno del hardware y hurgar en el código. Puedes leer sobre todo esto en la segunda parte de esta epopeya.






All Articles