菜鸟的cubieboard之旅-SD卡镜像制作

http://blog.csdn.net/allen6268198/article/details/19068523
http://blog.csdn.net/allen6268198/article/details/19406865
http://blog.csdn.net/andy_wsj/article/details/8515197
http://dl.cubieboard.org/software/a20-cubietruck/lubuntu/ct-lubuntu-card-v2.0/server/nand/
参考了http://mer.jolladev.net/wiki.php?id=%E5%90%AF%E5%8A%A8cubieboard2%E5%88%B0linux_kernel和tll大神的How to make a cubieboard system文档
第一步:下载kernel代码并编译
git clone git://github.com/linux-sunxi/linux-sunxi
配置并编译:
Gerneral setup ->Cross Compilter too prefix 这里填arm-linux-gnueabihf-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- cubieboard2_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 uImage modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf–j4 INSTALL_MOD_PATH=output modules_install
如果成功,在/arch/arm/boot/目录下会有uImage,在output下会有lib目录
第二步:下载uboot代码并编译
git clone git://github.com/linux-sunxi/u-boot-sunxi.git
make distclean CROSS_COMPILE=arm-linux-gnueabihf-
make Cubieboard2 CROSS_COMPILE=arm-linux-gnueabihf-
如果成功,会在主目录下有u-boot.bin,在spl目录有u-boot-spl.bin
第三步:生成boot.scr
boot.scr是什么?
根据资料描述(https://github.com/linux-sunxi/u-boot-sunxi/wiki#bootscr-support),u-boot在启动的时候会在第一个分区(FAT/extX格式)寻找/boot.scr或者/boot/boot.scr文件,boot.scr中可以包含用于载入script.bin,kernel,initrd(可选)以及设置内核启动参数的uboot命令。
boot.cmd如何生成?
WORKDIRboot.cmdsetenvbootargsconsole=ttyS0,115200noinitrddisp.screen0outputmode=EDID:1280x1024p60init=/initroot=/dev/mmcblk0p2rootfstype=ext4rootwaitpanic=10 {extra}
fatload mmc 0 0x43000000 boot/script.bin
fatload mmc 0 0x48000000 boot/uImage
bootm 0x48000000
生成boot.scr:
kimage -C none -A arm -T script -d boot.cmd boot.scr
第四步:生成script.bin
git clone git://github.com/linux-sunxi/sunxi-tools.git,这个下载的是生成上次script所需要的工具
git clone git://github.com/linux-sunxi/sunxi-boards.git这个是板子对应的资源列表
编译工具:
cd WORKDIR/sunxitoolsmakescript.bincd WORK_DIR/sunxi-boards/sys_config/a20
$WORK_DIR/sunxi-tools/fex2bin cubieboard2.fex script.bin

这样就把制作需要的东西都准备好了,接下来就是把刚才这些拷贝到tf卡中
A20 芯片上电启动的时候,会读取SD卡最前面的 1M 内容,从而得到 bootloader,所以我们需要把 u-boot 写到SD卡的前1M区间。
其中详细的SD卡布局如下:
起始 大小 用途
0 8KB 存放分区表等内容
8 24KB SPL loader
32 512KB u-boot
544 128KB environment
672 352KB 保留
1024 - 用于剩余分区
可以看到,应该把刚uboot编译产生的u-boot-spl.bin 这个文件拷贝到8k这个位置,把u-boot.bin 放到32k这个位置
话说要先给tf卡分区
具体分区步骤如下:
建立第一个分区
root@kubuntu:~/src/u-boot-sunxi# fdisk ${card}
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x911332e8.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n #键入n然后回车
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): #直接回车
Using default response p
Partition number (1-4, default 1): #直接回车
Using default value 1
First sector (2048-15278079, default 2048): #直接回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-15278079, default 15278079): +64M #键入+64M后回车,即分区大小为64M
建立第二个分区
Command (m for help): n #键入n然后回车
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): #直接回车
Using default response p
Partition number (1-4, default 2): #直接回车
Using default value 2
First sector (133120-15278079, default 133120): #直接回车
Using default value 133120
Last sector, +sectors or +size{K,M,G} (133120-15278079, default 15278079): #直接回车,即第二个分区使用全部剩余空间
Using default value 15278079
接下来指定分区类型:
Command (m for help): t #键入t然后回车
Partition number (1-4): 1 #键入1然后回车,即指定第一个分区
Hex code (type L to list codes): c #键入c然后回车,即指定第一个分区为vfat
Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): w #键入w然后回车,保存分区表
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
格式化分区:
mkfs.vfat card1mkfs.ext4 {card}2
然后写入bootloader:
cd WORKDIR/ubootsunxiddif=ubootsunxiwithspl.binof= card bs=1024 seek=8
最后安装内核 uImage,设置启动参数:
mount card1/mntmkdir/mnt/bootcp WORK_DIR/linux-sunxi/arch/arm/boot/uImage /mnt/boot
cp WORKDIR/sunxiboards/sysconfig/a20/script.bin/mnt/bootcp WORK_DIR/boot.scr /mnt/
sync && umount /mnt

制作文件系统
wget http://busybox.net/downloads/busybox-1.21.1.tar.bz2
tar -jxvf busybox-1.21.1.tar.bz2
cd busybox-1.21.1
make menuconfig ARCH=arm
这边设置一下:busybox settings->build option->Cross Compiler prefix arm-linux-gnueabihf-
make
make install

将文件系统拷贝到tf第二分区
mount /dev/sdb2 /mnt
cp -r _instll/* /mnt
cp -r examples/bootfloppy/etc /mnt
cd /mnt
mkdir dev proc sys var home tmp mnt run boot boot2 dev/pts
删除fstab,并重新编辑
rm etc/fstab;
nano etc/fstab;
chmod 777 etc/fstab;
编辑
proc /proc proc nosuid,nosuid,noexec,nodev 0 0
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devpts /dev/pts devpts gid=4,mode=620 0 0
tmpfs /tmp tmpfs defaults 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
/dev/mmcblk0p1 /boot2/ vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,notime 0 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值