一、uboot编译
- 编译之前先安装 ncurses 库,否则编译会报错,
sudo apt-get install libncurses5-dev - 将uboot放在ubuntu的/home/zys/linux/uboot中,uboot在开发板光盘->1、例程源码->3、正点原子 Uboot 和 Linux 出厂源码-> uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2。
- 解压
tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2 - 编写脚本(编译uboot),mx6ull_alientek_nand.sh
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- disclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr256_nand_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
- 使用 chmod 命令给予 mx6ull_alientek_nand.sh 文件可执行权限,然后就可以使用这个 shell脚本文件来重新编译 uboot,命令如下:
./mx6ull_alientek_nand.sh - 编译好之后就可以进行烧写了,这里烧写到sd里,然后以sd启动。
可以看出 插上sd卡之后 sdb就是sd卡
./imxdownload u-boot.bin /dev/sdb
二、Linux内核编译
- ./im6ull-alientek-nand.sh
生成zImage寿命说明编译成功 - 编译完成得到zImage和imx6ull-14x14-evk.dtb,然后把这个两个文件拷贝到tftp里
cp arch/arm/boot/zImage /home/zys/linux/tftpboot/ -f
cp arch/arm/boot/dts/imx6ull-14x14-evk.dtb /home/zys/linux/tftpboot/ -f - 从网络启动 Linux 系统
这里我们使用 tftp 从 Ubuntu 中下载 zImage 和设备树文件
setenv bootargs 'console=tty1 console=ttymxc0,115200 rw root=/dev/nfs nfsroot=192.168.2.136:/home/zys/linux/nfs/rootfs ip=192.168.2.157:192.168.2.136:192.168.2.1:255.255.255.0::eth0:off'
setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 imx6ull-alientek-nand.dtb;bootz 80800000 - 83000000'
saveenv
如果出现内核崩溃,说明没有挂载成功网络文件系统。
因为我是新装的一台机器,直接把虚拟机里做好的rootfs文件夹拷贝到新机器里,所以出现了挂载失败的问题。这里需要在虚拟机rootfs文件夹中进行打包,将当前文件夹内所有内容打包
tar -vczf rootfs.tar.gz *
tar -vxzf rootfs.tar.gz -C rootfs
三、问题
- 内核编译出错
解决: