Menginstal Linux pada kalkulator





Untuk waktu yang lama, saya telah memimpikan sebuah perangkat yang akan memiliki layar touchscreen, tombol perangkat keras di papan, dan di mana linux akan bekerja tanpa masalah. Dan tentu saja itu akan memiliki jumlah antarmuka yang cukup. Pada suatu waktu, proyek Vogue menunjukkan harapan , tetapi hari ini saya menemukannya - perangkat yang ideal untuk dibawa dalam saku, dengan prosesor dan linux yang kuat. Jadi inilah Kalkulator HP Prime G2. Ada prosesor i.mx6ull yang bagus yang saya punya cukup banyak pengalaman, jadi porting linux sepertinya bukan tugas yang terlalu sulit. Namun, seperti biasa, iblis ada dalam hal-hal kecil.



Saya ingin memberi tahu Anda tentang jalan sulit saya dalam menginstal Linux pada kalkulator, apa yang dihasilkan dan apa yang tidak, Anda harus menilai!



Proyek Linux untuk HP Prime G2



Terlepas dari kenyataan bahwa saya banyak mengutak-atik proyek ini, dan secara umum bahkan memberikan kontribusi saya sendiri untuk pengembangannya, masih cabang utama proyek, yang memulai semuanya, harus dipertimbangkan Linux untuk HP Prime G2 dari zephray . Tetapi, seperti biasa, itu terjadi dalam proyek-proyek seperti itu, jika Anda mencoba mengulangi semuanya sesuai instruksi, maka nifiga tidak akan berfungsi, dan Anda akan mengumpulkan ribuan penggaruk, yang penulis, karena satu dan lain alasan, lupa menyebutkannya . Oleh karena itu, dalam artikel ini, saya akan mencoba menarik perhatian Anda pada ketidakkonsistenan ini, memberi tahu Anda cara menyiasatinya, dan juga memposting rakitan kernel dan rootfs yang jelas berfungsi.



Perlu dipahami bahwa saya tidak ingin membayangi zephray.... Ini adalah pria titan yang pantas dikagumi. Dia melakukan pekerjaan yang benar-benar luar biasa dengan memindahkan barang-barang ini ke kalkulator. Faktanya, seperti biasanya, dia mengadaptasi konfigurasi papan debug untuk perangkat saat ini. Dan juga, driver tampilan tertulis di sana, u-boot loader telah dikonfigurasi dengan benar, file dts ( file pohon perangkat ) telah dikompilasi dengan benar , banyak kode ditambahkan ke kernel itu sendiri. Jangan lupa bahwa semua ini dilakukan tanpa skema dan dokumentasi, jadi jumlah pekerjaan yang dilakukan sungguh menakjubkan, dan semua ini atas dasar antusiasme. Sayangnya, volume dan format artikel tidak memungkinkan saya untuk membahas kode secara rinci, meskipun benar-benar ada sesuatu untuk dilihat dan di mana harus melepas topi Anda dengan kagum!



Tetapi ada banyak kode, baik di kernel, di bootloader, dan di pohon perangkat. Saya akan mengakhiri bab ini dengan kutipan dari Basha :



callidus77:

Pomnitsa di grid kami, installer menghubungkan pelanggan. Mereka datang, menancapkan setevukha, tetapi dia tidak memiliki Frya dan tidak ada kayu bakar. Kami menggaruk kepala dan pergi. Orang tersebut akhirnya terhubung dalam tiga minggu.

Gryat: "Sudah berapa lama Anda mencari kayu bakar."

Dia: "Saya tidak melihat. Saya menulisnya sendiri. "


Ke depan, kita dapat mengatakan bahwa menginstal Linux pada kalkulator berubah dari jalan kaki yang menyenangkan selama setengah jam, menjadi pencarian nyata selama beberapa minggu.



Marmot



Untuk memulai, kami membutuhkan HP Prime G2 Calculator (2AP18AA) . Karena ada kemungkinan non-asam bahwa beberapa perangkat berbeda mungkin bersembunyi di bawah satu nama, berikut adalah foto dan deskripsi seperti apa tampilannya dan cara menentukan bahwa ini adalah perangkat yang Anda butuhkan.







Untuk memastikan bahwa ini benar-benar kalkulator kami, Anda perlu membuka bantuan (tombol Bantuan) dan di sana buka bagian tentang kalkulator (Baris kedua dari atas di menu). Anda pasti punya sesuatu seperti ini.





Tentang kalkulator.



Saya akan segera mengatakan bahwa di negara kita hanya satu perusahaan yang menjual kalkulator ini (setidaknya saya tidak menemukan yang lain), jadi seharusnya tidak ada masalah dengan pembelian, kecuali mungkin harganya. Tapi itu semua sepadan!



Bersiap untuk menginstal Linux pada kalkulator



Untuk memulai, kita perlu melakukan beberapa aktivitas. untuk menginstal Linux di Nand atau menjalankan OS ini dalam RAM, Anda perlu melepas penutup belakang kalkulator, yang menurut definisi akan segera membatalkan garansi Anda (ingat ini sebelum mulai bekerja). Semua manipulasi dilakukan di linux mint 18.2 (semuanya harus bekerja dengan cara yang sama di Ubuntu 18.04).

Akan membutuhkan:



  • Kalkulator HP Prime G2 (2AP18AA);
  • Kabel USB (USB A - Micro B) untuk menghubungkan Prime ke PC;
  • Obeng;
  • pinset (konduktif atau dengan jumper), atau tombol pada kabel;
  • PC di Linux atau Windows 7+;
  • kit distribusi HP-Prime-Linux (selanjutnya saya akan memberikan tautan yang sedikit berbeda, untuk ini tidak berfungsi dengan benar).
  • Utilitas uuu (Universal Update Utility) yang disertakan dalam paket mfgtools 3.0. Https://github.com/NXPmicro/mfgtools.


Kami menginstal perangkat lunak yang diperlukan



Untuk memulainya, kami akan menyiapkan pijakan perangkat lunak dan memastikannya berfungsi. Pertama, mari buat utilitas 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
      
      





Dan kemudian saya mendapat kesalahan cmake ... Akibatnya, saya harus memperbarui utilitas cmake. Untuk melakukan ini, saya menjalankan perintah berikut:



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
      
      





Setelah berhasil membangun, saya memutuskan untuk menginstal paket., Tetapi karena kita sedang terpukul ketika kita membuat instalasi, kita akan melakukannya secara ilmiah dan menginstal menggunakan utilitas checkinstall.



sudo checkinstall
      
      





Hasilnya, kami menginstal paket mfgtools , yang, jika perlu, dapat dihapus dengan perintah



dpkg -r mfgtools
      
      





Kami memeriksa bahwa semuanya berfungsi dan melanjutkan.



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
....

      
      





Persiapan perangkat keras



Harus ada omelan bahwa Anda melakukan segala sesuatu dengan risiko dan risiko Anda sendiri, bahwa, kata mereka, penulis tidak bertanggung jawab atas kalkulator Anda yang habis terbakar, dll. dll. Tetapi saya yakin bahwa kita semua adalah orang dewasa yang memahami dengan jelas risiko dari apa yang mereka lakukan dan memahami konsekuensinya.

Pertama, Anda perlu membongkar kalkulator. Hal pertama yang pertama, saya membuka semua sekrup dan mengeluarkan baterai.





Kami melepas baterai.



Ngomong-ngomong, perhatikan baterai keren yang dimiliki perangkat ini. Ngomong-ngomong, dalam percobaan lebih lanjut saya tidak lagi membutuhkannya, sayangnya.

Selanjutnya, di sepanjang perimeter, saya mencungkilnya dengan kartu dan pembuka khusus, berusaha untuk tidak merusak kait pengunci.





Kami membuka kotak plastik.



Setelah semua tindakan, perut kalkulator muncul di hadapan saya dan sekarang, saya hampir siap untuk eksperimen paling biadab.





Dada.



Saya memiliki hampir semuanya siap untuk menjalankan linux pada kalkulator ini. Tapi ada nuansa. Untuk permulaan awal, dua bantalan harus dihubung pendek. Seperti yang ditulis oleh penulis proyek ini:

, USB .

: . .

Reset ( ). USB- β€œSE Blank 6ULL”. ( Linux Feescale USB- lsusb)





Catatan: Anda menyingkat kontak "Mode Boot" ke ground. Secara default, pin ini terhubung ke 3.3V melalui resistor pull-up 10k.

Selanjutnya, Anda akan memiliki dua opsi. Pada saat yang sama, Anda dapat melakukan serangkaian tindakan satu per satu tanpa memulai ulang kalkulator. Misalnya, di salah satu opsi, pertama-tama buat salinan cadangan memori NAND, lalu flash OS Linux ke dalamnya tanpa perlu melakukan boot ulang.



Saya memutuskan bahwa saya tidak siap dengan tangan yang gemetar ke arus pendek bantalan yang hampir tidak terlihat untuk memuat. Kami hanya membutuhkan operasi ini sekali (jadi, tentu saja, Anda dapat mengambil risiko), jadi saya memutuskan untuk melindungi diri saya sendiri dan menyolder tombol.





Tombol unduh.



Saya menarik perhatian Anda pada fakta bahwa tombol diperlukan hanya jika Anda tidak ingin menghapus isi kalkulator dan siap untuk memulai linux dalam RAM satu kali dan tenang. Secara umum, dengan tangan lurus dan percaya diri di masa depan, Anda dapat melakukannya dengan satu penjepit.

Itu saja, kami siap untuk meluncurkan Linux dengan satu kaki , tetapi kami tidak akan berhasil.



Menginstal Linux, berjalan di atas garu



Sebelum kita beralih ke instalasi linux yang sebenarnya pada kalkulator, untuk semua kesulitan yang muncul, saya ingin menarik perhatian Anda pada satu detail. Sebelum mengulangi instruksi orang lain (termasuk yang diberikan dalam artikel ini), pastikan bahwa semua file yang seharusnya ada dalam arsip instalasi ada, bahwa Anda menjalankan perintah yang tepat yang Anda butuhkan. Jika Anda menjalankan skrip orang lain, periksa konten skrip itu. Jika Anda tidak memahami apa yang tertulis di sana, maka cari tahu apa yang terjadi di sana, dan kemudian ada kemungkinan non-asam bahwa jika semuanya tidak berfungsi, maka setidaknya Anda dapat menyelamatkan peralatan Anda dari segala macam masalah.



Tetapi seperti yang dapat Anda bayangkan, karena saya menulis paragraf seperti itu, saya tidak mengikuti jalan ini. Seperti yang mereka katakan, orang Rusia itu membaca instruksi dengan kata-kata: sialan, sudah rusak. Jadi saya bertindak dengan cara yang sama, dan jalan saya sulit. Untuk membuat cadangan firmware, menjalankan dan / atau menginstal linux, Anda perlu mengunduh arsip flash_utility.tar.gz dari sini... Sebelum kita melangkah lebih jauh, ke depan, saya akan mengatakan bahwa arsip ini tidak berisi rootfs.tar.bz2, yang diperlukan untuk mem-flash pada nand (meskipun ada panggilan untuk itu di skrip flash_linux_to_nand.uu), initramfs, yang memungkinkan Anda untuk memulai linux tanpa menginstal, tidak berfungsi dan instalasi linux di nand gagal. Akibatnya, Anda mendapatkan batu bata, sebenarnya tidak. Saya tidak tahu tentang semua ini, dan sejak saat itu, menginstal linux ternyata menjadi pencarian nyata bagi saya.

Agar kita bisa melanjutkan, saya akan mengutip instruksi untuk menggunakan utilitas ini.

2.2 Pencadangan 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
      
      





Prosesnya akan memakan waktu beberapa menit. Setelah selesai, restart (Reset) kalkulator, setelah itu kalkulator akan boot ke Linux. Pengunduhan akan memakan waktu sekitar 15 detik. Untuk otorisasi gunakan login "root".



Saya sengaja membawa terjemahan ini ke sini agar tidak hilang dikemudian hari.



Logikanya, Anda perlu membuat cadangan nand-flash dan kemudian melakukan eksperimen. Untuk melakukan ini, saya menahan tombol, memasukkan kabel USB ke dalam kalkulator dan melakukan:



sudo uuu restore_nand.uu
      
      





Perhatian: ada kesalahan pada perintah di atas, pada tahap ini tidak bisa dijalankan !!! Apakah tidak ada yang mengganggu Anda tentang perintah ini? Pada awalnya, tidak ada yang membingungkan saya juga ... Tapi saya, dengan perintah ini tidak membuat cadangan kalkulator, tetapi menghapus nand-flash saya, menyumbatnya dengan sampah yang tidak perlu, dan membuang bagian ECC. Kalkulator tidak akan pernah menjadi kalkulator sekarang ...





Malam terasa lesu, saya ingin mencoba, saya tumpul dan campur aduk perintah. Oke, saya pikir, saya dulu, saya tidak, saya akan coba flash linux ke flash, bagaimanapun, flash drive sudah dihapus, dan tidak ada ruginya. Dengan cara yang sama, saya memutuskan USB, menahan tombol dan melakukan:



sudo uuu flash_linux_to_nand.uu
      
      





Dan sebagai hasilnya, saya mendapatkan kesalahan ini:





Kemudian saya belum tahu bahwa jika kesalahan ini tidak ada, maka saya masih tidak dapat mem-flash kalkulator saya, karena arsip rootf itu sendiri tidak ada di daftar file, dan saya akan keluar dengan kesalahan a beberapa baris di bawah.



Sayangnya, saya tidak berhasil mengatasi kesalahan ini lebih lanjut, perintah ini menjalankan firmware u-boot di nand-flash. Untuk beberapa alasan, eksekusinya macet dengan kesalahan dalam membuat file sementara (saya kemudian belajar ini dengan koneksi UART).



Hasil bagus dari perintah ini adalah Anda tidak perlu lagi menekan tombol. Dan kami tidak lagi membutuhkannya, sekarang kami dapat membatalkannya.



Jadi ... Saya membuang USB flash drive, saya tidak bisa meletakkan linux, yah, mungkin setidaknya di RAM akan memungkinkan untuk memulainya?



Saya berlari:



sudo uuu run_linux_in_ram.uu
      
      





Saya menghubungkan USB ke perangkat target dan perintah berhasil lolos. Dan, lihatlah, linux sedang memuat! Tapi ... Tapi kita tidak pernah bisa login.





Kami bertahan pada tahap ini ...



Hasil yang baik: bootloader, kernel, tampilan, sistem flashing secara keseluruhan bekerja. Hasil buruk: linux sebenarnya tidak berfungsi.



Akibatnya, kita perlu: menghubungkan UART perangkat keras untuk melihat apa yang terjadi, dan membangun kembali kernel (terutama untuk driver) dan membangun kembali rootf agar berfungsi.



Kesimpulan dari bagian pertama



Artikel itu telah berkembang menjadi ukuran yang tidak senonoh, jadi keputusan sulit dibuat untuk membaginya menjadi dua.



Seperti yang Anda pahami, saya tidak bisa menempatkan Linux dengan cara ini. Jadi Anda harus menghubungkan artileri berat: panaskan besi solder, masuk ke pengisian perangkat keras dan lihat-lihat kode. Anda dapat membaca tentang semua ini di bagian kedua dari epik ini.






All Articles