从网络启动Linux

从网络启动Linux

1、提供所需文件

启动需要的mfgtool、linux内核镜像文件zImage、设备树文件.dtb、根文件系统。这些所需资源我都整理和调试后放在云盘中,有需要的自行下载。当然,有能力的读者自行移植的这些文件,若能兼容则更好。
链接:https://pan.baidu.com/s/1ilt6Fa3FCoYYjHZPu7Ghmg?pwd=0621
提取码:0621
在这里插入图片描述

2、U-Boot的烧录

Linux系统要启动就必须需要一个 bootloader程序,也就说芯片上电以后先运行一段bootloader程序。U-Boot(Universal Boot Loader)就是一个bootloader软件。也有一些其他的软件。既然是入门,我们一切从简,这个通过uboot启动的过程,就不详细说了。直接按照步骤来。我们通过mfgtool工具来烧录uboot进开发板。
第一步:
从云盘中下载工具后解压。双击mfgtool,将mfgtool(study)复制到非中文路径下!!!
在这里插入图片描述
在这里插入图片描述
这一步很重要,最好磁盘名称也不要有中文,若所在路径包含中文可能会遇到如下问题:
在这里插入图片描述
第二步:
用usb数据线将开发板的USB_OTG接口连接至电脑上。
在这里插入图片描述
第三步:
拨码开关拨到 USB下载模式。并打开开发板的电源,若已经打开,按下复位键,以USB模式启动。
以一个USB设备连接到电脑时,电脑会叮咚一声,跟插入U盘一样的声音提示,有些电脑还会弹窗提示。
注意:(有的同学学过裸机开发,用SD卡下载程序,所以还需要检查一下不要有SD卡插入开发板)
在这里插入图片描述
第四步:
打开我提供的文件夹mfgtool,找到如下文件双击运行。
在这里插入图片描述
如已经放在非中文路径,将会成功打开,显示如下画面。
我们先不着急点击开始,开始之前打开串口助手以便观察烧写的过程。
在这里插入图片描述
第五步:
那么此时,我们将一根USB数据线将开发板的USB_TTL接口接在电脑上,用作串口。然后,我们打开一个串口助手(SecurCRT和MobaXterm都可以,后面会以MobaXterm为例),为了方便观察烧写uboot的进度和后续的环境变量的配置。
在这里插入图片描述
串口打开后显示这个样子。这个串口助手的使用非常简单。这里附上(原子)的教程图片。
在这里插入图片描述
在这里插入图片描述
选则串口,找到自己的ch340的com口(如下图,原子教程是com15,我的是com11),如果你没安装过ch340驱动:
下载链接:
  CH340/CH341
    Windows 驱动链接:https://www.wch.cn/download/CH341SER_EXE.html/
波特率配置成:115200
在这里插入图片描述
这就是打开串口之后的样子:
在这里插入图片描述
第六步:
mfgtool就可以点击start了。
在这里插入图片描述
等待下载完成后,点击stop。再点击exit退出即可。
在这里插入图片描述
第七步:
将开发板上的拨码开关拨到 EMMC启动模式。按下开发班上的复位按钮,就能够启动uboot。
在这里插入图片描述
第八步:
启动后,在倒计时结束之前,按下回车。进入uboot命令行模式。
(如果倒计时前不按回车就会启动linux内核,但由于我们还没配置好,也是无法启动的,这里我们要进行环境变量的配置。)
按下回车后,串口助手中会显示如下内容,这是打印的开发板的信息:
注:(我这是配置完成后的,与刚下载uboot后打印的信息略有出入,不重要,接着步骤往下进行即可)
在这里插入图片描述
这里的信息,关键的部分做一下简单的解释:

U-Boot 2016.03 (Jan 03 2023 - 12:08:37 +0800)

CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU: Industrial temperature grade (-40C to 105C) at 40C
Reset cause: POR
Board: ALIENTEK ALPHA EMMC
I2C: ready
DRAM: 512 MiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Display: TFT7016 (1024x600)
Video: 1024x600x24
In: serial
Out: serial
Err: serial
switch to partitions #0, OK
mmc1(part 0) is current device
Net: FEC1
Normal Boot
Hit any key to stop autoboot: 0
=>

U-Boot 2016.03 (Jan 03 2023 - 12:08:37 +0800)uboot版本号和编译时间
CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)CPU是飞思卡尔的 I.MX6ULL I.MX, 频率为 69MHz,此时频率位 396MHz。
Board: ALIENTEK ALPHA EMMC 板子名称:ALIENTEK ALPHA EMMC(原子左盟主移植时起的名字)
I2C: ready I2C准备就绪
DRAM: 512 MiB当前板子的 DRAM(内存)为 512MB
MMC: FSL_SDHC: 0, FSL_SDHC: 1 正点原子的 I.MX6ULL EMMC核心板上 FSL_SDHC(0)接的 SD(TF)卡,FSL_SDHC(1)接的 EMMC。
Display: TFT7016 (1024x600) 显示屏型号:TFT7016 (1024x600)
In: serial Out: serial Err: serial 标准输入、标准输出和标准错误所使用的终端,都是串口 (serial)。
mmc1(part 0) is current deviceemmc的第 0个分区。
Error: FEC1 address not set.FEC1刚下载应该会显示这个,网卡地址没有设置。
Hit any key to stop autoboot: 0 倒计时提示,默认倒计时 3秒(可设置长短),倒计时结束之前按下回车键就会进入 uboot命令行模式。如果在倒计时结束以后没有按下回车键,那么 Linux内核就会启动, Linux内核一旦启动, uboot的作用就结束了。

3、网络配置

成功烧录u-boot之后,我们下一步要进行最重要的网络配置,详细的过程见我的另一篇帖子:
链接:Ubuntu和IMX6ULL开发板网络通讯-配置方法

4、放置内核、设备树文件、根文件系统

从网络启动 linux系统的唯一目的就是为了方便调试以及熟悉网络配置的过程。
不管是为了调试 linux系统还是 linux下的驱动。每次修改 linux系统文件或者 linux下的某个驱动以后都要将其烧写到 EMMC中去测试,这样太麻烦了。我们将 linux镜像文件、设备树文件和根文件系统都放到 Ubuntu下某个指定的文件夹中,这样每次重新编译 linux内核或者某个 linux驱动以后只需要使用 cp命令将其拷贝到这个指定的文件夹中即可,这样就不用需要频繁的烧写 EMMC这样就加快了开发速度。
所以--------------我们可以通过 TFTP从 Ubuntu中下载 zImage和设备树文件,根文件系统通过 NFS挂载。

那么,接下来,我们先将我提供的文件夹里的:

imx6ull-alientek-emmc.dtb设备树文件】
zImage系统镜像文件】
rootfs.tar.bz2根文件系统的压缩包】
通过FileFilla传到我们的ubuntu中。
在这里插入图片描述
在这里插入图片描述
将这两个放在tftpboot目录下:(在ubuntu中要给予这两个文件权限)
在这里插入图片描述
进入到这个目录并给与这两个文件权限,输入命令:

cd linux/tftpboot
chmod 777 imx6ull-alientek-emmc.dtb
chmod 777 zImage

在这里插入图片描述

将这个放在nfs目录下:(这是个压缩包,我们需要在ubuntu中使用命令进行解压)
在这里插入图片描述
解压输入命令:

cd linux/nfs
tar -vxjf rootfs.tar.bz2

在这里插入图片描述
完成之后,我们就拥有了linux系统启动所需要的:

imx6ull-alientek-emmc.dtb设备树文件】
zImage系统镜像文件】
rootfs根文件系统】
---------------------------------------------------------------------->
imx6ull-alientek-emmc.dtb设备树文件】这两个通过TFTP被下载到开发板的 DRAM中,启动linux系统。
zImage系统镜像文件】
---------------------------------------------------------------------->
rootfs根文件系统】这个则通过NFS挂载根文件系统,即不需要本地的根文件系统,而是通过网络直接从NFS服务器启动。实际上是利用ubuntu作为NFS服务器来提供内核和根文件系统的NFS共享。类似于共享文件夹。

接下来就可以正式启动内核了。

5、启动Linux

我们再次按下开发板的复位键,这次不用在倒计时结束前按回车,直接等待他自己启动。
一切按照流程顺利操作的话,应该会显示如下内容:
在这里插入图片描述
等待他启动完成后,会显示让你按下回车:
我们按下回车后,就像看到了ubuntu下操作linux系统一样。
输入:

ls

能看到,这就是根文件系统的所有文件夹。
(这里的根文件系统是原子提供的移植后的,比自己一步一步移植的文件要多)用来学习教程。
在这里插入图片描述
到这里,我们的linux系统就能够通过网络完成启动了。

  • 36
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

善于伴随

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值