中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

搭建imx6ull環境--tftp加載鏡像,nfs掛載根文(wen)件系統

1.環境介紹

開發板:野火imx6ullPro郵票孔EMMC
主機:Win11
虛擬機:virtualbox
虛擬機版本:Ubuntu20.04
Windows遠程連接(jie)虛擬(ni)機(ji)

由于這(zhe)個板(ban)子比(bi)較老,野火提供的虛擬機(ji)是基(ji)于18.04的這(zhe)個版(ban)本不(bu)再支持vscode環(huan)境,于是就想(xiang)著開(kai)始學習驅動從頭到尾先搭建(jian)一(yi)(yi)下(xia)環(huan)境,中(zhong)間也是折騰了很久,所(suo)以都記錄一(yi)(yi)下(xia)

環境:
準備從SD卡加載uboot,通過tftp從Ubuntu中加載內核鏡像,設備樹,并通過nfs將根文件系統掛載到Ubuntu上
開發板直連電腦,虛擬機通過NAT連接無線網卡,保證虛擬機可以連接外網,橋接有線網卡,讓有線網卡、Windows、開發板在同一局域網內
vscode通過SSH遠程連(lian)接(jie)虛(xu)擬機(ji),在Windows環境下開(kai)發比(bi)較舒服

2.虛擬機環境搭建,并配置SSH連接

可以看我這篇博客

3.uboot編譯

3.1源碼下載

#環境下載
sudo apt install make git gcc-arm-none-eabi gcc bison flex libssl-dev dpkg-dev lzop libncurses5-dev
#直接克隆野火提供的倉庫
git clone -b ebf_v2020_10_imx //gitee.com/Embedfire/ebf_linux_uboot --depth 1

3.2編譯uboot

  1. 創建編譯內核腳本
touch build_uboot.sh
chmod 0777 build_uboot.sh
  1. 向文件中寫入如下內容
make distclean
make ARCH=arm CROSS_COMPILE=arm-none-eabi- mx6ull_fire_mmc_defconfig
  1. 查看生成的固件
ls u-boot-dtb.imx

3.3燒錄uboot

  1. sd卡插到讀卡器上,掛載到Ubuntu上
    掛載讀卡器

設備名(ming)稱可能不(bu)一(yi)樣(yang),可以(yi)插拔(ba)讀(du)卡器看一(yi)下變(bian)化的是哪個,哪個就是我們的讀(du)卡器

  1. 查看Ubuntu上掛載的分區,輸入lsblk
    查看分區

一般不會是sda,根據(ju)自己情況確定

  1. 進入uboot源碼目錄,執行如下命令
sudo dd iflag=dsync oflag=dsync if=u-boot-dtb.imx of=/dev/sdb seek=2
  1. 取下設備將SD卡插入開發板就能看到uboot啟動了

4.網絡環境搭建

開發板,主機和虛擬機可以通過網(wang)線通信,需要設置三(san)者(zhe)有共同的網(wang)關和掩碼,三(san)者(zhe)在同一網(wang)段的不同ip

操作之前關閉(bi)電腦(nao)所(suo)有電腦(nao)管(guan)家(jia)以及防火(huo)墻

4.1Windows網絡配置

  1. 打開控制面板->網絡和Internet->網絡和共享中心->更改適配器設置,找到我們的有線網卡
    有線網卡

  2. 右鍵屬性->Internet協議版本4(TCP/IPV4)
    配置主機網絡

可(ke)隨意(yi)配(pei)置(zhi)網段,只要保(bao)證三者(zhe)在(zai)同一網段即(ji)可(ke),不(bu)懂得可(ke)以按(an)照我的配(pei)置(zhi)

4.2Ubuntu網絡配置

  1. Ubuntu關機,添加網卡選擇橋接模式,橋接的網卡一定是上邊配置的有線網卡名字
    添加虛擬機網絡

  2. 進入虛擬機網絡配置
    選擇網絡配置

  3. 配置網絡
    配置橋接網絡

  4. 驗證網絡
    虛擬機終端輸入ifconfig,查看(kan)是否有(you)我們配置的網絡

4.3開發板網絡配置

開發板進(jin)入uboot,輸入如(ru)下命令

setenv ipaddr 192.168.100.30 
setenv ethaddr 00:04:9f:04:d2:35 
setenv gatewayip 192.168.100.1 
setenv netmask 255.255.255.0 
setenv serverip 192.168.100.30  
saveenv 

分(fen)別是ip地址,mac地址,網關,掩碼(ma),虛(xu)擬機(ji)ip,保存環境變量

驗證能與虛擬機跑通

ping 192.168.100.30

顯示如下即可
開發板ping虛擬機

5.kernel編譯

5.1源碼下載

#環境下載
sudo apt install  gcc-arm-linux-gnueabihf
#直接克隆野火提供的內核倉庫
git clone -b ebf_4.19.35_imx6ul //github.com/Embedfire/ebf_linux_kernel.git --depth 1

5.2編譯內核

  1. 編譯腳本
#進入內核后執行
touch build_kernel.sh
chmod 0777 build_kernel.sh
  1. 向build_kernel.sh中寫入
#清除編譯
make mrproper
# 編譯內核
make ARCH=arm npi_v7_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j3
  1. 查看內核和設備樹
#應該會出現這兩個文件,記住這兩個文件位置
ls arch/arm/boot/zImage
ls arch/arm/boot/dts/imx6ull-mmc-npi.dtb

6.tftp加載內核和設備樹

  1. 安裝環境
sudo apt-get install tftp-hpa tftpd-hpa  
sudo apt-get install xinetd
  1. 創建目錄
cd ~
mkdir tftp
chmod 0777 tftp
  1. 配置TFTP
sudo vim /etc/xinetd.d/tftp

# 輸入如下內容,路徑根據自己的來,要絕對路徑
server tftp 
{ 
    socket_type    = dgram 
    protocol       = udp 
    wait           = yes 
    user           = root 
    server         = /usr/sbin/in.tftpd 
    server_args    = -s /home/wanderpurr/tftp/ 
    disable        = no 
    per_source     = 11 
    cps            = 100 2 
    flags          = IPv4 
}
  1. 重啟TFTP服務
sudo service tftpd-hpa start
  1. 重置服務器
sudo vim /etc/default/tftpd-hpa

# 修改成如下內容,路徑還是按自己的來
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/wanderpurr/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
  1. 重啟TFTP服務
sudo service tftpd-hpa restart
  1. 將上邊我們編譯生成的內核鏡像和設備樹拷貝到我們的tftp目錄
  2. 修改內核和設備樹權限為777
  3. 測試加載鏡像,在uboot中輸入如下內容重啟
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-mmc-npi.dtb; bootz 80800000 - 83000000'
saveenv

重啟后會看到如下
加載內核和設備樹

后面會(hui)啟動(dong)內核,但缺(que)少根文件系統會(hui)啟動(dong)失(shi)敗

7.根文件系統編譯

  1. 下載源碼安裝環境
    源碼可以去官網下載即可,根文件系統不向內核和uboot有很多板級配置需要向供應商所要指定版本
    安裝環境
sudo apt-get install zlib1g-dev unzip gcc g++ aptitude lib32stdc++6-4.8-dbg build-essential libncurses5 libncurses5-dev u-boot-tools traceroute  gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y
  1. 配置根文件系統
make  ARCH=arm  CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

配置如下操作

  1. Settings -> Build static binary (no shared libs) 勾選上
  2. Linux System Utilities->mdev 勾選上
  3. Settings -> vi-style line editing commands 勾選上
  4. Linux Module Utilities -> Simplified modutils 取消勾選
  1. 編譯
make  ARCH=arm  CROSS_COMPILE=arm-linux-gnueabihf-
#指定安裝路徑為家目錄下rootfs
make  ARCH=arm  CROSS_COMPILE=arm-linux-gnueabihf-  CONFIG_PREFIX=/home/wanderpurr/rootfs  install 
  1. 補全缺失文件
cd ~/rootfs
mkdir dev etc lib var proc tmp home root mnt sys
cd ./dev
sudo mknod console c 5 1
sudo mknod null c 1 3
cd ../etc
echo console::askfirst:-/bin/sh > inittab

8.nfs掛載根文件系統

上邊已經將根文件系統制(zhi)作好(hao)了,下面來通過(guo)網線掛載起來

  1. 安裝環境
sudo apt-get install nfs-kernel-server rpcbind
  1. 添加根文件系統
sudo echo "/home/wanderpurr/rootfs *(rw,sync,no_root_squash,no_subtree_check)"  >> /etc/exports
  1. 重啟nfs
sudo /etc/init.d/nfs-kernel-server restart
  1. 修改uboot參數
#板子IP,虛擬機IP以及根文件系統路徑根據自己的配置好
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.100.30:/home/wanderpurr/rootfs,proto=tcp,nfsvers=4 rw ip=192.168.100.50:192.168.100.30:192.168.100.1:255.255.255.0::eth0:off'
saveenv
  1. 重啟開發板
    啟動成功

這里就(jiu)(jiu)配置(zhi)結束了,我們開發板的根目錄就(jiu)(jiu)是虛擬機(ji)的rootfs目錄,這樣(yang)傳輸文件就(jiu)(jiu)非常方便了

結語

配置過程中(zhong)可能(neng)出現(xian)很多(duo)問題,我斷斷續(xu)續(xu)搞了一周(zhou),但(dan)每填一個坑(keng)都是對自己的一種(zhong)成(cheng)長

參考:
這個寫的非常全,有需要從頭自己配置的可以參考一下這個,但注意他bootargs最后網口挖了坑,讓我找了好幾天

以及野火官方文檔

有問題歡迎留言

posted @ 2025-07-30 08:28  Wanderpurr  閱讀(312)  評論(2)    收藏  舉報