CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 12669|回复: 9

通过nand启动,然后切换rootfs为sata谁成功过?

[复制链接]
发表于 2013-7-28 13:50:52 | 显示全部楼层 |阅读模式
通过nand启动,然后切换rootfs为sata谁成功过?
回复

使用道具 举报

发表于 2013-7-28 14:28:50 | 显示全部楼层
不觉得有难点~
事实上cubieboard lubuntu sdk(http://cubiebook.org/index.php?t ... /Ubuntu_Nand_Images)
是这样做的,
u-boot把内核引导起来后,进到kernel里builin了一个rootfs,这个rootfs已经可以让你进入控制台,这个时候可以把sata 驱动加载起来,然后exec switch_root到sata的rootfs上。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-28 15:21:55 | 显示全部楼层
matson 发表于 2013-7-28 14:28
不觉得有难点~
事实上cubieboard lubuntu sdk(http://cubiebook.org/index.php?title=Cubieboard/Ubuntu_N ...

你好,你指的是initramfs吗?在内核启动的时候也需要有一个参数指定initramfs在哪里的,也就是说要在uboot启动内核的参数中指定,也就是在boot.scr或env。txt中,但是uboot启动之后,内核加载之前是找不到boot.scr或者env.txt的,所以赶脚还是不能实现~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-28 15:22:40 | 显示全部楼层
matson 发表于 2013-7-28 14:28
不觉得有难点~
事实上cubieboard lubuntu sdk(http://cubiebook.org/index.php?title=Cubieboard/Ubuntu_N ...

不是手工到uboot的console中输入各种参数~~
回复 支持 反对

使用道具 举报

发表于 2013-7-28 18:41:22 | 显示全部楼层
既然是builtin的rootfs,为什么还要启动参数传进来
这个方法没问题的,压根就无需怀疑
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-29 12:45:56 | 显示全部楼层
matson 发表于 2013-7-28 18:41
既然是builtin的rootfs,为什么还要启动参数传进来
这个方法没问题的,压根就无需怀疑 ...

你好,小弟无知,能给个教程吗~~
回复 支持 反对

使用道具 举报

发表于 2013-7-29 13:18:02 | 显示全部楼层
今天晚一些给你一个教程。
回复 支持 反对

使用道具 举报

发表于 2013-7-29 16:57:05 | 显示全部楼层
slackwareer 发表于 2013-7-29 12:45
你好,小弟无知,能给个教程吗~~

方法步骤:
1.下载a10的lubuntu SDK,下载地址如下
http://linux-sunxi.org/Install_Ubuntu_Linux_for_Cubieboard

2. 下载解压后,假设解压成linux-sdk目录,修改builtin到内核的rootfs,具体命令如下

$cd linux-sdk/linux-sunxi/rootfs
$fakeroot
#mkdir tmp
#gzip -dc sun4i_rootfs.cpio.gz |(cd tmp/; cpio -iv)
#vim tmp/init

原始内容如下
#!/bin/sh

mount -t proc proc /proc
mount -t devtmpfs none /dev
mount -t sysfs sysfs /sys

e2fsck -y /dev/nandc
e2fsck -y /dev/nandd
e2fsck -y /dev/nande
e2fsck -y /dev/nandf

mount -t ext4 -o noatime,nodiratime,data=writeback /dev/nandc /target
mount -t ext4 -o noatime,nodiratime,data=writeback /dev/nandd /target/usr/lib
mount -t ext4 -o noatime,nodiratime,data=writeback /dev/nande /target/usr/share
mount -t ext4 -o noatime,nodiratime,data=writeback /dev/nandf /target/lib

mount -t tmpfs none /target/tmp

[ -x /target/sbin/init ] && exec switch_root /target /sbin/init

/bin/ash

需要修改上面红色部分把sata的rootfs mount 起来
mount /dev/sda1 /target

3. 修改完后重新打包builtin的rootfs
#cd tmp
#find . |cpio -o -Hnewc |gzip > ../sun4i_rootfs.cpio.gz
#exit (退出fakeroot界面,要非常注意,必须到fakeroot环境上操作,否则很容易导致rootfs损坏)

4.按照教程继续生成nand固件包

5.livesuit包nand的固件包烧写进去,挂上硬盘

6. 进入nand系统后,把nandd和sata的sda1挂载起来,并把nandd中的文件系统复制到sda1上

7.重启即可

需要注意内核启动到rootfs时,可能sda1节点还没创建出来或者甚至可能是u盘的,需要动脑经想想办法。最简单的可以是while循环中等待sda1节点的创建

启动楼主可以动手做一下,我今天实在抽不出时间弄~:-)
回复 支持 反对

使用道具 举报

发表于 2013-8-10 10:34:28 | 显示全部楼层
matson 发表于 2013-7-29 16:57
方法步骤:
1.下载a10的lubuntu SDK,下载地址如下
http://linux-sunxi.org/Install_Ubuntu_Linux_for_Cub ...

我做了,失败
原因:
switch_root只能使用tmpfs或者ramfs,不可以使用一般的ext2,3,4
不过测试出/dev/sda创建了,能挂载
回复 支持 反对

使用道具 举报

发表于 2013-11-4 14:47:14 | 显示全部楼层
CT的新版本(1.0, 20131026) 很方便转移rootfs到SATA硬盘上,有uEnv.txt可供修改……其实对所有cubieboard而言,也就几个地方要注意:

1、内核里面要把SATA驱动编译进去,不要编译成模块
2、uEnv.txt 里面加上 root=/dev/sda1 ,再不行就加一些延时 bootdelay=10 root=/dev/sda1
3、把rootfs从nand或SD卡拷贝到SATA硬盘,并修改 /etc/fstab ,增加 / 的挂载

改天写个教程
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-26 02:14 , Processed in 0.027809 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部