從網絡啟動 linux 系統的唯一目的就是為了調試!不管是為了調試 linux 系統還是 linux 下的驅動。每次修改 linux 系統文件或者 linux 下的某個驅動以后都要將其燒寫到 EMMC 中去測試,這樣太麻煩了。我們可以設置 linux 從網絡啟動,也就是將 linux 鏡像文件和根文件系統都放到 Ubuntu 下某個指定的文件夾中,這樣每次重新編譯 linux 內核或者某個 linux 驅動以后只需要使用 cp 命令將其拷貝到這個指定的文件夾中即可,這樣就不用需要頻繁的燒寫 EMMC,這樣就加快了開發速度。
|配置網絡
uboot是支持網絡的,在移植uboot的時候一般都要調通網絡功能,因為在移植linuxkernel的時候需要使用到uboot的網絡功能做調試。uboot支持大量的網絡相關命令,比如 dhcp、ping、nfs 和 tftpboot。
(啟動時打印信息)
(網絡相關的變量)
1、連接網線,網線一定要接在左邊那個網口,uboot的FEC1就是這個網口;
2、 配置uboot的網絡,把下面命令全部輸入uboot面板中;
setenvipaddr192.168.2.50//開發板IP地址 setenv ethaddr b8:ae:1d:01:00:00 //開發板網卡 MAC 地址 setenvgatewayip192.168.2.1//開發板默認網關 setenv netmask 255.255.255.0 //開發板子網掩碼 setenvserverip192.168.2.55/服務器地址,也就是Ubuntu地址 saveenv//保存環境變量
上面的配置不一定適合所有,請根據實際網絡進行配置:
Windows電腦的cmd中的ipconfig指令來查看;
linux的電腦使用ifconfig指令來查看;
注意:虛擬機中的ubuntu要使用【橋接】,然后在【虛擬網絡編輯器】中添加橋接的網絡,不懂就百度一下,一定要保證物理機和虛擬機的網絡在同一個網段,并且能ping通,若ping不通物理機,可以關閉【防火墻】再嘗試;
3、測試是否ping通
| 搭建TFTP服務
tftp 命令的作用和 nfs 命令一樣,都是用于通過網絡下載東西到 DRAM 中,只是 tftp 命令使用的 TFTP 協議,Ubuntu 主機作為 TFTP 服務器。因此需要在 Ubuntu 上搭建 TFTP 服務器,需要安裝 tftp-hpa 和 tftpd-hpa,命令如下:
sudo apt-get install tftp-hpa tftpd-hpa sudo apt-get install xinetd
TFTP也需要一個文件夾來存放文件,在用戶目錄下新建一個目錄,示例命令如下:
//創建文件夾 mkdir /home/noah/linux/tftpboot // 賦予權限 chmod 777 /home/noah/linux/tftpboot
最后配置 tftp,安裝完成以后新建文件/etc/xinetd.d/tftp,如果沒有/etc/xinetd.d 目錄的話自行創建,然后在里面輸入如下內容:
server tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /home/noah/linux/tftpboot/ disable = no per_source = 11 cps = 100 2 flags = IPv4 }
配置完后啟動tftp服務,命令如下:
sudo service tftpd-hpa start
打開/etc/default/tftpd-hpa文件,將其修改為如下所示內容:
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/noah/linux/tftpboot" TFTP_ADDRESS=":69" TFTP_OPTIONS="-l -c -s"TFTP_DIRECTORY 就是上面創建的 tftp 文件夾目錄,以后我們就將所有需要通過TFTP 傳輸的文件都放到這個文件夾里面,并且要給予這些文件相應的權限。 最后輸入如下命令, 重啟 tftp 服務器:
sudo service tftpd-hpa restarttftp 服務器已經搭建好了,接下來就是使用了。 | 測試驗證 將 zImage 鏡像文件拷貝到 tftpboot 文件夾中,并且給予 zImage 相應的權限,命令如下:
chmod 777 zImage
uboot串口交互指令中的「tftp命令格式」如下:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
loadAddress:文件在DRAM中的存放地址;
[[hostIPaddr:]bootfilename]:要從Ubuntu中下載的文件;
注意:tftp傳輸文件,不需要輸入文件在Ubuntu中的完整路徑,只需要輸入文件名即可。
比如我們現在將 tftpboot 文件夾里面的 zImage 文件下載到開發板 DRAM 的 0X80800000 地址處,命令如下:
tftp 80800000 zImage
|啟動Linux
1、設置環境變量,命令如下:
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw' setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-evk-emmc.dtb; bootz 80800000 - 83000000' saveenv
2、通過tftp將zImage和設備樹下載到板子的RAM中,命令如下:
tftp 80800000 zImage tftp 83000000 imx6ull-14x14-evk-emmc.dtb
使用到的文件有「野火提供的yocto的zImage和dtb文件」,可以在野火公開文件包中找到;
3、啟動內核,命令如下:
bootz 80800000 - 83000000
4、啟動成功
至此,uboot的移植基本完成,可以啟動Linux內核。啟動內核之后,uboot的使命就完成了。
-
Linux系統
+關注
關注
4文章
603瀏覽量
28290 -
編輯器
+關注
關注
1文章
816瀏覽量
31748 -
emmc
+關注
關注
7文章
227瀏覽量
53705
原文標題:i.MX6ULL|從網絡啟動 Linux 系統
文章出處:【微信號:玩轉單片機,微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
教你如何快速啟動Linux 系統
Linux系統啟動卡制作及系統固化
如何通過網絡升級嵌入式系統的linux內核
基于LINUX系統的IPv6網絡安裝與調試
如何做grub啟動盤
實例分析LINUX系統的靜/動態集成調試模式

評論