由于我的这块4412开发板没办法使用dnw和fastboot,于是我选择了将uboo,kernel及rootfs放在SD卡中。
网上关于Exynos4412的uboot和移植教程很多,所以这里不细讲。这是所使用的已移植成功的
uboot-2015.04Github-uboot-2015.4
Linux-4.1.36Github-kernel-4.1.36
欢迎fork
!!!
Rootfs使用Buildroot-2018.05
编译生成,参考我的另一篇博文:Buildroot使用
一、SD卡分区
方法1:Linux下进行分区
①将读卡器挂接到虚拟机,使用如下指令找到自己盘符,例如我的是/dev/sdc
cat /proc/partitions
②对SD卡进行分区,fdisk /dev/sdc
,回车输入n
,p
,1
输入起始扇区和结束扇区,完成了添加第一个分区,该分区占用的空间为SD卡第2048~10240扇区共4M,用来存放kernel image。继续按照上述步骤添加第二个分区,添加完成后执行w
保存退出fdisk。输入mkfs -t ext2 /dev/sdc2
将第二个分区格式化成ext2,ext3或者ext4
,分区结束继续 cat /proc/partitions
,可以看到三个sdc
,分别是/dev/sdc
,/dev/sdc1
,/dev/sdc2
方法2:Windows下进行分区
使用DiskGenius
进行分区
二、编译擦入Uboot
在Uboot根文件目录下执行 make -j4
生成原始的uboot.bin
,但是还要经过三星官方的加密之后的uboot.bin
才可以被板上固化的BL1
所启动(这一点以后细讲)。执行./build.sh
生成最终的image.bin
,再执行sudo ./mkuboot /dev/sdc
擦入SD卡。
三、编译擦入Kernel
在Kernel根目录下执行make uImage -j4;make dtbs
生成内核映像和dtb文件。sudo ./burnimage.sh
擦入/dev/sdc
,或许你会有疑问,会不会把之前擦入的booloader映像擦除,事实上这是不会的,因为在burnimage.sh
文件中
dd
命令默认一个block
是512bytes,seek=4096
的意思是写入的时候从未格式化的地址上偏移4096个block,也就是2M的内存。
四、移入Rootfs
Rootfs的生成参考我的另一篇博文:Buildroot使用
只能通过以下命令挂载的方式进行写入操作。
sudo mount -t ext2 /dev/sdc2 /opt/
sudo cp -r /home/book/Desktop/buildroot-2018.05/output/target/* /opt/
sudo umount /opt
晚点更新移植填坑总结!