由于我的这块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