www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]本文參考eewiki上A20-OLinuXino-LIME的系統(tǒng)構(gòu)建流程,為pcDuino3 Nano Lite交叉編譯Mainline U-Boot和Kernel 4.x,并運(yùn)行Lubuntu 14.04圖形桌面。

本文參考eewiki上A20-OLinuXino-LIME的系統(tǒng)構(gòu)建流程,為pcDuino3 Nano Lite交叉編譯Mainline U-Boot和Kernel 4.x,并運(yùn)行Lubuntu 14.04圖形桌面。


兔子使用的交叉編譯主機(jī)環(huán)境為Xeon E5620服務(wù)器和Ubuntu Server 14.04 64-bit操作系統(tǒng),而交叉編譯需要的Linaro GCC為32-bit版本,因此需要安裝相關(guān)32-bit庫。


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386


下載交叉編譯工具,并將環(huán)境變量CC設(shè)置為編譯器的路徑和名稱前綴。
wget -c https://releases.linaro.org/14.09/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz

tar xf gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz

export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-


深入命令查看GCC版本來驗(yàn)證交叉編譯工具的配置,如果報(bào)錯(cuò)請檢查32-bit庫是否安裝正確。


${CC}gcc --version

編譯U-Boot
從U-Boot官方Git倉庫下載U-boot源碼。
git clone git://git.denx.de/u-boot.git

cd u-boot/

git checkout v2015.10 -b tmp


使用pcDuino 3 Nano的配置文件進(jìn)行配置。


make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} Linksprite_pcDuino3_Nano_defconfig

編譯U-Boot,這里采用4線程加速編譯。


make ARCH=arm CROSS_COMPILE=${CC} -j4


編譯完成后,在U-Boot目錄下會生成u-boot-sunxi-with-spl.bin文件,即為包含了A20初級Bootloader和U-Boot的鏡像。

編譯Linux 4.x Kernel
eewiki上使用了Robert Nelson編寫的編譯腳本來簡化Kernel編譯過程。下載編譯腳本,并根據(jù)需要選擇要編譯的Kernel版本。本例使用4.1.x版本。


git clone https://github.com/RobertCNelson/armv7-lpae-multiplatform
cd armv7-lpae-multiplatform/

選擇Linux 4.1.x Longterm版:
git checkout origin/v4.1.x -b tmp
選擇Linux 4.2.x Stable版:
git checkout origin/v4.2.x -b tmp
選擇Linux 4.3.x Prepatch版:
git checkout origin/v4.3.x -b tmp

運(yùn)行build_kernel.sh腳本開始編譯。腳本會自動(dòng)下載并配置交叉編譯工具,從Kernel官方Git倉庫下載源碼并開始編譯。


./build_kernel.sh


期間會進(jìn)入menuconfig界面。由于腳本是為多平臺設(shè)計(jì)的,用戶可以根據(jù)需要裁剪不需要的平臺和模塊支持。


編譯完成后,在deploy目錄下會生成zImage鏡像文件,modules和firmware壓縮包。

獲取RootFS
eewiki提供了兩種可供選擇的精簡版根文件系統(tǒng),分別為Ubuntu 14.04和Debian 8。本文選擇使用Ubuntu系統(tǒng)。下載并解壓rootfs:

wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-14.04.3-minimal-armhf-2015-09-07.tar.xz


tar xf ubuntu-14.04.3-minimal-armhf-2015-09-07.tar.xz

另附Dibian 8的下載地址:
https://rcn-ee.com/rootfs/eewiki/barefs/debian-8.2-bare-armhf-2015-09-07.tar.xz

制作啟動(dòng)SD卡(MicroSD)
將TF卡通過USB讀卡器連接編譯主機(jī),清除分區(qū)表sdX為對應(yīng)的SD卡設(shè)備,如果使用主機(jī)自帶的讀卡器,則可能識別為mmcblkX。


sudo dd if=/dev/zero of=/dev/sdX bs=1M count=10

通過gparted或fdisk等工具為SD卡重新分區(qū)并格式化SD卡,本例使用Sandisk 8GB Class10 MicroSD卡。


分區(qū)后向SD卡寫入編譯好的Bootloader。
sudo dd if=./u-boot/u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8

掛載SD卡分區(qū)。
sudo mkdir -p /media/boot/
sudo mkdir -p /media/rootfs/
sudo mount /dev/sdX1 /media/boot/
sudo mount /dev/sdX2 /media/rootfs/

將deploy目錄下的zImage文件復(fù)制到BOOT分區(qū),同時(shí)將設(shè)備樹文件也解壓到BOOT分區(qū),此處文件名中的kernel_version會根據(jù)不同的Kernel版本發(fā)生變化。


sudo cp deploy/(kernel_version).zImage /media/boot/zImage
sudo tar xfv deploy/(kernel_version)-dtbs.tar.gz -C /media/boot/


(這里還沒有找到選擇編譯Nano設(shè)備樹的配置,本例實(shí)際使用的文件是從網(wǎng)上找到的:https://github.com/Thermionix/arch-satnav/blob/master/uBoot-pcDuino-Nano/sun7i-a20-pcduino3-nano.dtb)

在BOOT分區(qū)新建一extlinux目錄和配置文件。
sudo mkdir -p /media/boot/extlinux/
sudo nano /media/boot/extlinux/extlinux.conf
配置用于指定Kernel、Device Tree和RootFS位置,其內(nèi)容如下:
label Linux 4.x
kernel ../zImage
append root=/dev/mmcblk0p2
fdtdir ../

最后復(fù)制根文件系統(tǒng)到第二個(gè)分區(qū)。


sudo tar xfvp ubuntu-14.04.3-minimal-armhf-2015-09-07/armhf-rootfs-ubuntu-trusty.tar –C /media/rootfs


將編譯Kernel生成的驅(qū)動(dòng)模塊也復(fù)制到該分區(qū)。

修改根文件系統(tǒng)分區(qū)下的etc/fstab文件,加入如下內(nèi)容。


/dev/mmcblk0p2 / auto errors=remount-ro 0 1
/dev/mmcblk0p1 /boot auto errors=remount-ro 0 1

修改etc/network/interfaces文件自動(dòng)配置網(wǎng)卡和DHCP。


auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

卸載并移除SD卡。


sync
sudo umount /media/boot
sudo umount /media/rootfs

為pcDuino3 Nano連接USB 5V2A電源、HDMI顯示器、USB鍵盤鼠標(biāo),插入制作好的SD卡,上電啟動(dòng)。


本系統(tǒng)從U-Boot開始就能夠支持HDMI、Ethernet和USB設(shè)備,因此除了從SD卡啟動(dòng)操作系統(tǒng)外還可以選擇U盤或網(wǎng)絡(luò)啟動(dòng)。Ubuntu系統(tǒng)啟動(dòng)后停留在命令行登錄界面,默認(rèn)的用戶名為ubuntu,密碼為temppwd。

安裝Lubuntu桌面
eewiki提供的Ubuntu為精簡版本,這樣一來用戶可以方便的選擇安裝不同的桌面。本文選擇Lubuntu桌面。


通過命令行界面登錄Ubuntu,然后從Ubuntu源在線安裝桌面。


suto apt-get update
sudo apt-get upgrade
sudo apt-get install lubuntu-desktop

經(jīng)過漫長的安裝等待后,重啟系統(tǒng)就可以進(jìn)入桌面了。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

CPU親和度通過限制進(jìn)程或線程可以運(yùn)行的CPU核心集合,使得它們只能在指定的CPU核心上執(zhí)行。這可以減少CPU緩存的失效次數(shù),提高緩存命中率,從而提升系統(tǒng)性能。

關(guān)鍵字: Linux 嵌入式

在Linux系統(tǒng)性能優(yōu)化中,內(nèi)存管理與網(wǎng)絡(luò)連接處理是兩大核心領(lǐng)域。vm.swappiness與net.core.somaxconn作為關(guān)鍵內(nèi)核參數(shù),直接影響系統(tǒng)在高負(fù)載場景下的穩(wěn)定性與響應(yīng)速度。本文通過實(shí)戰(zhàn)案例解析這兩個(gè)...

關(guān)鍵字: Linux 內(nèi)存管理

對于LLM,我使用b谷歌Gemini的免費(fèi)層,所以唯一的成本是n8n托管。在使用了n8n Cloud的免費(fèi)積分后,我決定將其托管在Railway上(5美元/月)。然而,由于n8n是開源的,您可以在自己的服務(wù)器上托管它,而...

關(guān)鍵字: 人工智能 n8n Linux

在Linux系統(tǒng)管理中,權(quán)限控制是安全運(yùn)維的核心。本文通過解析/etc/sudoers文件配置與組策略的深度應(yīng)用,結(jié)合某金融企業(yè)生產(chǎn)環(huán)境案例(成功攔截98.7%的非法提權(quán)嘗試),揭示精細(xì)化權(quán)限管理的關(guān)鍵技術(shù)點(diǎn),包括命令別...

關(guān)鍵字: Linux 用戶權(quán)限 sudoers文件

Linux內(nèi)核中的信號量(Semaphore)是一種用于資源管理的同步原語,它允許多個(gè)進(jìn)程或線程對共享資源進(jìn)行訪問控制。信號量的主要作用是限制對共享資源的并發(fā)訪問數(shù)量,從而防止系統(tǒng)過載和數(shù)據(jù)不一致的問題。

關(guān)鍵字: Linux 嵌入式

在云計(jì)算與容器化技術(shù)蓬勃發(fā)展的今天,Linux網(wǎng)絡(luò)命名空間(Network Namespace)已成為構(gòu)建輕量級虛擬網(wǎng)絡(luò)的核心組件。某頭部互聯(lián)網(wǎng)企業(yè)通過命名空間技術(shù)將測試環(huán)境資源消耗降低75%,故障隔離效率提升90%。本...

關(guān)鍵字: Linux 云計(jì)算

在Linux內(nèi)核4.18+和主流發(fā)行版(RHEL 8/Ubuntu 20.04+)全面轉(zhuǎn)向nftables的背景下,某電商平臺通過遷移將防火墻規(guī)則處理效率提升40%,延遲降低65%。本文基于真實(shí)生產(chǎn)環(huán)境案例,詳解從ipt...

關(guān)鍵字: nftables Linux

在Linux設(shè)備驅(qū)動(dòng)開發(fā)中,等待隊(duì)列(Wait Queue)是實(shí)現(xiàn)進(jìn)程睡眠與喚醒的核心機(jī)制,它允許進(jìn)程在資源不可用時(shí)主動(dòng)放棄CPU,進(jìn)入可中斷睡眠狀態(tài),待資源就緒后再被喚醒。本文通過C語言模型解析等待隊(duì)列的實(shí)現(xiàn)原理,結(jié)合...

關(guān)鍵字: 驅(qū)動(dòng)開發(fā) C語言 Linux

在Unix/Linux進(jìn)程間通信中,管道(pipe)因其簡單高效被廣泛使用,但默認(rèn)的半雙工特性和無同步機(jī)制容易導(dǎo)致數(shù)據(jù)競爭。本文通過父子進(jìn)程雙向通信案例,深入分析互斥鎖與狀態(tài)機(jī)在管道同步中的應(yīng)用,實(shí)現(xiàn)100%可靠的數(shù)據(jù)傳...

關(guān)鍵字: 管道通信 父子進(jìn)程 Linux

RTOS :RTOS的核心優(yōu)勢在于其實(shí)時(shí)性。它采用搶占式調(diào)度策略,確保高優(yōu)先級任務(wù)能夠立即獲得CPU資源,從而在最短時(shí)間內(nèi)完成處理。RTOS的實(shí)時(shí)性是通過嚴(yán)格的時(shí)間管理和任務(wù)調(diào)度算法實(shí)現(xiàn)的,能夠滿足對時(shí)間敏感性要求極高的...

關(guān)鍵字: Linux RTOS
關(guān)閉