Perakitan kernel
Saya akan menjelaskan mengapa gambar yang ada tidak cocok. Masalah utama mereka adalah bahwa mereka dibangun di atas kernel 3.4 lama, dan ini segera memaksakan batas pada versi maksimum kompiler 4 dan ubuntu 12,04 pasti, saya tidak ingat 14,04. Jadi ternyata jika Anda ingin menggunakan perangkat lunak dan perpustakaan terbaru Anda harus membangun kembali kernel terbaru. Tentu saja, Anda dapat menghapus pembatasan kompilasi setidaknya versi 5 gcc di sumber dan memperbaiki kode sehingga dapat dibuat di bawah versi 4, tetapi ini masih omong kosong. Belum lagi fakta bahwa dalam kasus kami bagian grafis dari linux adalah berlebihan.
Untuk memulai dengan kernel.org, kami memompa keluar kernel 4.14.57, pada saat itu adalah versi stabil terakhir.
Di folder sumber, buat skrip yang memulai konfigurasi:
Kami mendapatkan sesuatu seperti ini:

Dalam menu file di
/linux-4.14.57/arch/arm/configs/
pilih file
/linux-4.14.57/arch/arm/configs/
, ada pengaturan dasar untuk prosesor seri sunxi. Dan kemudian Anda perlu menambahkan beberapa pengaturan. Yaitu Kami mencari di bawah bendera yang ditentukan dan mengonfigurasinya.
Kami menanamkan semua yang ada di kernel bila memungkinkan.
CONFIG_BLK_DEV_INITRD - kita tidak akan menggunakan ramfs sebagai gantinya, maka kita akan mulai Aufs (sistem file unifikasi multi-layer canggih). Singkatnya, hapus kotak centang.
CONFIG_MEMCG - nyalakan seperti semua yang ada di dalamnya
CONFIG_BLK_CGROUP - nyalakan
CONFIG_CGROUP_DEVICE - nyalakan
CONFIG_CGROUP_CPUACCT - nyalakan
CONFIG_CGROUP_PERF - nyalakan seperti semua yang ada di dalamnya
CONFIG_EXPERT - cukup pilih dan biarkan semuanya di dalam secara default
CONFIG_BLK_WBT - pilih seperti semua yang ada di dalamnya
CONFIG_PARTITION_ADVANCED - pilih di dalamnya
CONFIG_SUN_PARTITION - pilih
ARCH_SUNXI - di dalam kami hanya menyisakan MACH_SUN5I
Dalam dukungan bus, pilih CONFIG_PCI, karena USB wifi memerlukan dukungan bus PCI. Jelas, ketika dukungan wifi diaktifkan, kernel tidak memerlukan bus pci, namun, tanpa wpa ini, pemohon tidak menemukan usb wifi. Mengapa ini terjadi, Anda bisa melihat ke kedalaman sejarah, tetapi menilai dari segalanya, itu terjadi secara historis, secara umum, Anda perlu tahu dan mengingat ini.
CONFIG_CPU_FREQ_STAT - temukan dan pilih
Di dalam CONFIG_NET kita memilih WIRELESS dan kemudian CONFIG_CFG80211 dan di sana kita menandai CONFIG_NL80211_TESTMODE dan CONFIG_CFG80211_WEXT yang terakhir termasuk driver wifi kami untuk pemohon.
CONFIG_MAC80211 - nyalakan tumpukan jaringan.
CONFIG_MAC80211_MESH - nyalakan
CONFIG_MAC80211_LED - well, mari kita pilih ini
CONFIG_NFC - kami sertakan juga apa yang ada di dalamnya kecuali CONFIG_NFC_NCI.
CONFIG_PARPORT - nyalakan
CONFIG_LED_TRIGGER_PHY - pilih
CONFIG_REALTEK_PHY - pilih
CONFIG_WLAN - pilih
CONFIG_RTL8XXXU - pilih dan di dalam CONFIG_RTL8XXXU_UNTESTED kami tandai.
CONFIG_SERIO_SUN4I_PS2 - nyalakan
CONFIG_SERIAL_DEV_BUS - nyalakan dan pilih SERIAL_DEV_CTRL_TTYPORT di dalamnya.
CONFIG_USB_WUSB_CBAF - aktifkan
CONFIG_USB_WUSB_CBAF_DEBUG - nyalakan
CONFIG_USB_WDM - nyalakan
CONFIG_USB_SERIAL - pilih
CONFIG_UWB - pilih dan di dalam pilih CONFIG_UWB_HWA dan CONFIG_UWB_I1480U dan setelah itu CONFIG_USB_WUSB akan muncul dan juga pilih.
Kami memilih CONFIG_STAGING dan di dalamnya kami memilih driver CONFIG_RTL8192U dan CONFIG_RTLLIB, dan di dalam yang terakhir kami juga memilih semuanya. Mereka ditandai oleh modul oleh puisi nanti mereka harus dikacaukan secara terpisah.
CONFIG_R8188EU - pilih
Secara umum, ini adalah minimum pengaturan kernel yang diperlukan, jika Anda tiba-tiba ingin mengaktifkan sesuatu yang lain, maka baca dengan cermat dependensi parameter ini, jika tidak akan ada kesalahan saat mengkompilasi. Selanjutnya Anda perlu memulai kompilasi:
make O=../olimex-kernel-4.14.57/ -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage
Pada saat yang sama, kumpulkan dan hapus file tiga file:
make O=../olimex-kernel-4.14.57 -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
Ini hanya untuk berjaga-jaga, karena file sumber mungkin dalam kesalahan meskipun mereka sama di kernel dan di uboot. Karena itu, tidak satu yang lain akan bekerja.
Langkah selanjutnya adalah mengumpulkan file yang dikumpulkan pada bagian pertama kartu sd:
-
/olimex-kernel-4.14.57/arch/arm/boot/
dari sini kita mendapatkan kernel rakitan, itu disebut uImage dan beratnya hanya 4,7 meter.
-
/olimex-uboot/arch/arm/dts/
dari sini kita mendapatkan pohon yang dikompilasi, file sun5i-a13-olinuxino.dtb
-
/u-boot-2018.05/
dari sini kita mendapatkan script boot.scr boot yang dikompilasi.
Ubuntu build
Karena semua bagian yang diperlukan untuk mengunduh rootf sudah disiapkan, ia tetap membangun ubuntu dan untuk ini kami mengambil versi terbaru 18.04.
Pertama, buat folder di direktori root:
sudo mkdir /destrupt
Tepat di sini karena untuk menerapkan chroot nanti, Anda memerlukan hak penuh seperti pada direktori root, atau daftarkan konfigurasi chroot untuk folder lain. Singkatnya, lebih mudah untuk membuat folder di direktori root dan tidak main-main dengan konfigurasi.
Untuk perakitan, kami membutuhkan paket-paket berikut, mereka harus disediakan jika tidak:
- Qemu-pengguna-statis
- debootstarp
- schroot
Selanjutnya, jalankan pembangunan ubuntu:
sudo qemu-debootstrap
# kami menggunakan qemu karena qemu akan diinstal bersama dengan rakitan ubuntu, yang akan memungkinkan Anda untuk segera menjalankan chroot pada versi rakitan ubuntu
--arch armhf
# type arsitektur prosesor
--variant=minbase
# dalam versi minimum
bionic
# build versi 18.04
/destrup/
# address tempat mengumpulkan
http://ports.ubuntu.com/ubuntu-ports
# tempat mengumpulkan sumber
Nah, ubuntu 18.04 itu sudah dirakit, sekarang kita akan melanjutkan ke konfigurasi langkah-demi-langkah:
1. Sebelum memulai, kita naik ke / destrup / etc / apt / dan mengedit sources.list, tambahkan yang berikut:
deb http://ports.ubuntu.com/ubuntu-ports bionic main restricted deb http://ports.ubuntu.com/ubuntu-ports bionic universe deb http://ports.ubuntu.com/ubuntu-ports bionic multiverse
Ini hanya sumber untuk distribusi untuk prosesor kami.
2. Jalankan perubahan root pada distrib ubuntu yang baru dibuat:
sudo chroot /destrup
Pertama, atur kata sandi untuk pengguna root:
passwd root
Kata sandi ini diperlukan untuk masuk saat boot.
3. Instal paket-paket berikut.
apt update
- memperbarui paket
Kami mencantumkan paket untuk jaringan:
iputils-ping, dhcpcd5, iproute2, iw, networkd-dispatcher, wireless-tools, net-tools.
Paket sistem jaringan:
linux-firmware, wpasupplicant, systemd, hostapd, kmod, udev.
Baik dan sisanya sehingga nyaman untuk mengedit dan mengkonfigurasi semua ini: nano, mc, usbutils, sudo.
Dan saya tidak akan menjelaskan semuanya karena akan memerlukan beberapa artikel lagi, kami hanya akan melalui beberapa paket yang diperlukan untuk menyiapkan.
Mengkonfigurasi pemohon wpa.
Untuk mulai dengan, kami akan secara singkat menganalisis apa wifi usb itu.
Chip itu sendiri yang menyediakan wifi (dalam hal ini rtl8188) adalah ADC yang dibungkus, dengan presentasi data sendiri dan akses ke usb. yaitu jika Anda menjalankan perintah lsmod tanpa modul r8188eu.ko yang dimuat, kita hanya akan melihat bahwa seseorang telah mengambil port usb. Ketika modul dimuat, nama perangkat sudah akan terlihat, dengan kata lain, modul ini hanya antarmuka program untuk mengendalikan chip ini.
Pustaka terpenting berikutnya adalah lib80211.ko, standar IEEE 802.11 itu sendiri, dengan kata sederhana, itu adalah interpretasi dari sinyal eter digital ke dalam representasi protokol Internet yang spesifik. Tetapi untuk mengelola semua ini, Anda perlu menginstal linux-firmware, ini akan menyertakan driver -wext-, yang akan melakukan semua ini. Kami akan menghubungkannya di pemohon lebih lanjut.
Mari kita mulai konfigurasi pemohon.
Kami naik ke ubunte yang baru dirakit di alamat ini:
/ etc / wpa_supplicant / wpa_supplicant.conf
Dan kami membuat file konfigurasi jika tidak dan jika ada, kami memperbaiki jenis ini:
ctrl_interface_group=0
Jika semuanya dikonfigurasi dengan benar dan modul yang dijelaskan di atas dimuat, maka file perangkat akan dibuat di alamat yang ditentukan dalam konfigurasi (parameter ctrl_interface).
Pengaturan Systemd
Kami mengkonfigurasi pemohon, tetapi belum ada yang menjalankannya. Anda tentu saja dapat menginstal manajer jaringan dan menikmati penyetelan otomatis, tetapi di mana hardcorenya, lalu di mana sampahnya. Secara umum, kebosanan semata.
Karena itu kami naik ke alamat:
/ etc / systemd / system/
Dan di sini kita membuat file bernama
network-wireless.service
jika tidak, dan jika ada, kita mulai mengedit:
[Unit]
Mari kita memikirkan peluncuran pemohon:
ExecStart=/sbin/wpa_supplicant
# path untuk mengakses pemohon
-B
# Berjalan di latar belakang
-i wlx007005012449
# antarmuka untuk menjalankan, file perangkat yang sama
-D wext
# nama driver untuk peluit dari linux-firmware
-c /etc/wpa_supplicant/wpa_supplicant.conf
# alamat file konfigurasi pemohon
Nah, secara umum, semua yang Anda butuhkan sudah terkonfigurasi, masuk ke instalasi modul.
Pemasangan modul.
Untuk menginstal modul, mari kembali sedikit, yaitu ke folder dengan sumber kernel dan jalankan perintah untuk menyalin modul dari kernel ke folder dengan ubuntu dari sana:
make O=../olimex-kernel-4.14.57 -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install
Setelah itu, semua modul rakitan kami disalin ke ubuntu di:
/ lib / modules / 4.14.57 / kernel
Sekarang yang paling penting adalah mendaftarkan peluncuran modul yang disalin dan semua dependensinya, jadi kami naik ke alamat:
/ etc / modules
Dan jalankan buka file modul untuk mengedit dan tambahkan modul berikut:
michael_mic r8188eu # r8192e_pci rtllib rtllib_crypt_ccmp rtllib_crypt_tkip rtllib_crypt_wep r8192u_usb # lib80211 # IEEE 802.11
Sekarang tinggal menyalin semua rakitan ubuntu ke bagian kartu sd yang ditandai pada artikel sebelumnya sebagai bagian untuk ubuntu.
Setelah itu, Anda dapat memasukkan USB flash drive ke papan, menerapkan daya dan duduk di uart untuk mengakses manajemennya atau masuk melalui ssh. Anda dapat menambahkan perintah ke systemd untuk mengatur alamat ip atau konfigurasi lainnya secara umum, maka semua yang lain ada di tangan Anda ...
Bagian pertama artikelBagian kedua artikel