imx6ul基于zImage,dtb 在SD卡制作linux镜像
SD卡分区 将sd卡插入到pc机上,使用fdisk工具打开对应设备(dev/sd* 是你sd卡对因的磁盘号)
$sudo fdisk /dev/sde #使用命令 d 删除所有分区 #使用n创建分区 命令(输入 m 获取帮助):n ############################################################ #第一分区 分区类型 p 主分区 (0 primary, 0 extended, 4 free) e 扩展分区 (逻辑分区容器) 选择 (默认 p):p 分区号 (1-4, 默认 1): 第一个扇区 (2048-15613951, 默认 2048): 最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-15613951, 默认 15613951): 102400
创建了一个新分区 1,类型为“Linux”,大小为 49 MiB。 ################################################################ #第二分区 命令(输入 m 获取帮助):n 分区类型 p 主分区 (1 primary, 0 extended, 3 free) e 扩展分区 (逻辑分区容器) 选择 (默认 p):
将使用默认回应 p。 分区号 (2-4, 默认 2): 第一个扇区 (102401-15613951, 默认 104448): 最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (104448-15613951, 默认 15613951):
创建了一个新分区 2,类型为“Linux”,大小为 7.4 GiB。 #################################################################### 命令(输入 m 获取帮助):w 分区表已调整。 将调用 ioctl() 来重新读分区表。 正在同步磁盘。 ########################################################### $ sudo fdisk -l /dev/sde Disk /dev/sde:7.45 GiB,7994343424 字节,15613952 个扇区 磁盘型号:Storage Device 单元:扇区 / 1 * 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x735e5517
设备 启动 起点 末尾 扇区 大小 Id 类型 /dev/sde1 2048 102400 100353 49M 83 Linux /dev/sde2 104448 15613951 15509504 7.4G 83 Linux 2. 格式化分区,就像之前说的,需要uboot 和linux读取到文件就必须让将sd格式化成对应的格式
sudo mkfs.vfat /dev/sde1 sudo mkfs.ext4 /dev/sde2 3. 复制uboot 到SD卡中(各种芯片seek可能不同)
sudo dd if=u-boot-dtb.imx of=/dev/sdb bs=1K seek=1 4. 复制zImage和设备树到sd卡第一分区
sudo mount /dev/sde1 /mnt sudo cp zImage /mnt/ sudo cp 100ask_imx6ull-14x14.dtb /mnt/ sync sudo umount /dev/sde1 5. 复制文件系统到sd卡第二分区
sudo mount /dev/sde2 /mnt sudo tar xvf rootfs.tar.bz2 -C /mnt sync sudo umount /dev/sde2 6. 设置uboot变量,插入sd,设置成sd启动,进入uboot
插入sd,设置成sd启动,进入uboot
setenv bootargs console=ttymxc0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw load mmc 0:1 0x83000000 100ask_imx6ull-14x14.dtb load mmc 0:1 0x83800000 zImage bootz 0x83000000 - 0x83800000 完成以上步骤,则可以完成 imx6ull从sd中启动了
增补 1.每次都需要在boot中设置好麻烦
uboot中设置bootcmd
设置自定义变量 sdboot
setenv sdboot ‘setenv bootargs console=ttyS0 console=ttymxc0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw load mmc 0:1 0x83800000 100ask_imx6ull-14x14.dtb load mmc 0:1 0x83000000 zImage bootz 0x83000000 - 0x83800000’
设置bootcmd
setenv bootcmd run sdboot
保存
saveenv 重启后,可以自动从SD启动。
- 内核打印数据太多 ,修改打印等级(在开发板linux系统中执行)
查看打印等级
cat /proc/sys/kernel/printk
一般都是7 4 1 7
7 4 1 7
修改第一位即可
echo 1 4 1 7 > /proc/sys/kernel/printk 或者 echo 0 4 0 7 > /proc/sys/kernel/printk 或者 echo 4 > /proc/sys/kernel/printk
打印等级是定义在内核中linux/kernel.h 中
#define KERN_EMERG “<0>” /* systemis unusable / #define KERN_ALERT “<1>” / actionmust be taken immediately */ #define KERN_CRIT “<2>” /*critical conditions / #define KERN_ERR “<3>” / errorconditions / #define KERN_WARNING “<4>” / warning conditions / #define KERN_NOTICE “<5>” / normalbut significant */ #define KERN_INFO “<6>” /*informational */ #define KERN_DEBUG “<7>” /*debug-level messages */
|