1.在虚拟机上设置NFS服务
1.NFS服务开启
sudo apt-get install nfs-kernel-server rpcbind
2.VI命令打开NFS配置文件/etc/export
sudo vi /etc/export
3.打开/etc/export后输入以下内容
/home/jonathan/linux/nfs *(rw,sync,no_root_squash)
(/home/jonathan/linux/nfs)为共享文件夹的路径
4.创建文件夹
cd /home/jonathan
mkdir linux
cd linux
mkdir nfs
5.重启NFS服务
sudo /etc/init.d/nfs-kernel-server restart
6.检测NFS服务器是否可用
本地挂载共享目录
sudo mount -t nfs 127.0.0.1:/home/jonathan/linux/nfs /mnt
在nfs目录下创建一txt文件
cd /home/jonathan/linux/nfs
touch test.txt
在 /mnt
目录下查看一下文件:
cd /mnt
ls
有 test.txt 文件说明 NFS 服务器部署成功,然后可以解除挂载
sudo umount /mnt
2.将U-Boot烧入SD卡
1、U-Boot简介
Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段 bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核,它最主要的工作就是启动 Linux 内核。bootloader 和 Linux 内核的关系就跟 PC 上的 BIOS 和 Windows 的关系一样,bootloader 就相当于 BIOS。
有很多现成的 bootloader 软件可以使用,比如 U-Boot、vivi、RedBoot 等等,其中以 U-Boot 使用最为广泛。
2、下载U-Boot
uboot 官网为 http://www.denx.de/wiki/U-Boot/
种类 | 描述 |
uboot 官方的 uboot 代码 | 由 uboot 官方维护开发的 uboot 版本,版本更新快,基本包含所有常用的芯片。 |
半导体厂商的 uboot 代码 | 半导体厂商维护的一个 uboot,专门针对自家的芯片,在对自家芯片支持上要比 uboot 官方的好 |
开发板厂商的 uboot 代码 | 开发板厂商在半导体厂商提供的 uboot 基础上加入了对自家开发板的支持 |
本实验是 uboot 使用开发板厂商已经移植好的 uboot,uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2
3、编译U-Boot
首先在 Ubuntu 中安装 ncurses 库,否则编译会报错,安装命令如下:
sudo apt-get install libncurses5-dev
解压缩
tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2
方法一: 手工编译 uboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
ARCH=编译arm 设置目标为 arm 架构
CROSS_COMPILE 指定指定所使用的交叉编译器
方法二:shell脚本编译
示例代码 mx6ull_alientek_emmc.sh 文件代码
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
使用 chmod 命令给予 mx6ull_alientek_emmc.sh 文件可执行权限,然后就可以使用这个 shell 脚本文件来重新编译 uboot,命令如下:
./mx6ull_alientek_emmc.sh
4、烧写U-Boot
使用imxdownload 软件将uboot 烧写到 SD 卡中,命令如下:
chmod 777 imxdownload //给予 imxdownload 可执行权限,一次即可
./imxdownload u-boot.bin /dev/sdd
5启动U-Boot
成以后将 SD 卡插到 I.MX6U-ALPHA 开发板上,BOOT 设置从 SD 卡启动,使用 USB 线将 USB_TTL 和电脑连接,也就是将开发板的串口 1 连接到电脑上。打开 MobaXterm,设置好串口参数并打开,最后复位开发板。
三、更改网络配置
将开发板接入网线
打开虚拟机,通过以下代码获取虚拟机ip地址(虚拟机网络设置必须在网桥模式下)
ifconfig
获得虚拟机ip地址
在MabaXterm中输入以下代码,获取空闲ip地址
dhcp
设置本机ip,网关,服务器地址
setenv ipaddr 192.168.1.151
setenv gatewayip 192.168.1.254
setenv serverip 192.168.1.109
与虚拟机端进行连接
ping 192.168.1.109
显示连接成功
四、镜像传输
在虚拟机的nfs文件夹中放入zImage文件
用以下指令进行资源传输
nfs 80800000 192.168.61.106:/home/jonathan/linux/nfs/zImage
注意:虚拟机端和开发板端nfs版本号需一致
修改nfs版本号
在虚拟机终端输入
sudo vim /etc/default/nfs-kernel-server
打开文件进行三项编辑,如下
然后保存、退出,重启nfs服务即可
五、利用boot命令启动linux
1.通过以下指令检验zImage是否导入开发板
mmc dev 1
fatcls mmc 1:1
易发现zImage文件已存在
输入以下代码进行驱动
fatload mmc 1:1 80800000 zImage
fatload mmc 1:1 83000000 imx6ull-14x14-emmc-4.3-800x480-c.dtb
bootz 80800000 - 83000000
看到开发板显示,则证明成功。
其他boot命令可参考