主题 : 向Tiny210移植Debian Linux 复制链接 | 浏览器收藏 | 打印
会当凌绝顶,一览众山小!
级别: 总版主
UID: 2
精华: 17
发帖: 1655
金钱: 13860 两
威望: 5369 点
贡献值: 17 点
综合积分: 3650 分
注册时间: 2008-01-01
最后登录: 2024-02-17
楼主  发表于: 2013-01-10 11:20

 向Tiny210移植Debian Linux

管理提醒: 本帖被 qq2440 执行加亮操作(2013-01-10)
前言
    我个人很喜欢Debian Linux,简洁、优雅、轻便、稳定。Debian有丰富的实用程序可供选用,而且它的Aptitude工具很好用,完美的解决了Linux里经常遇到的编译、安装过程中的版本匹配和库依赖的问题。所以在硬件资源充足的嵌入式开发中,是可以考虑移植Debian的。比如使用基于ARM11的S3C6410和基于Cotex-A8的S5PV210芯片的板子(跟这个CPU搭配的RAM和Flash怎么都不会太差吧?),运行一个精简的Debian系统完全绰绰有余了。
声明:
  • 本文的Debian Linux移植不包括Bootloader和Linux内核的移植,这方面的移植在网上已经非常的多了。本文介绍的仅仅是基于友善之臂Tiny210开发板现有的东西来制作一个文件系统,然后将这个文件系统烧到开发板上去并可以运行。这个文件系统包含了Debian运行需要的最基本的内容,后续需要的工具如ftp、nfs什么的都可以通过Aptitude一个命令搞定。
  • 虽然移植过程并不复杂,但是本文假定读者有一定的Linux基础,接触过Ubuntu或Debian的发行版,本文不会对一些基本的东西进行说明,比如Aptitude如何使用等。不明白的可以留言问,最好是自己搜。最后,对开发板的操作需要多查阅Tiny210的用户手册。
准备工作:
  • 获得一套Tiny210开发板及其配套资料。
  • 安装配套资料里的Minitools,连接开发板。
  • 准备一片可靠的SD卡以及读卡器。
  • 在PC上或虚拟机里安装Debian桌面系统(以下称开发主机),作者使用的版本是Squeeze,确保该Debian可以访问因特网并为其Aptitude配置好源(编辑/etc/apt/source.list)。
  • 为开发主机安装好nfs服务器。
步骤:
  1. 安装bootstrap,这是一个Debian提供的工具,可以用来自定义安装系统,也可以用来生成指定构架的文件系统:
    1aptitude install bootstrap
  2. 在工作目录下创建文件夹:
    1mkdir fs_debian_mini
  3. 下载基本文件系统:
    1sudo debootstrap --arch=armel --foreign squeeze fs_debian_mini/ http://ftp.us.debian.org/debian
    根据网速不同大约要30分钟左右;

  4. 1echo "proc /proc proc none 0 0" >> fs_debian_mini/etc/fstab 
    2echo "tiny210" > fs_debian_mini/etc/hostname 
    3mkdir -p fs_debian_mini/usr/share/man/man1/ 
    4mknod fs_debian_mini/dev/console c 5 1
    最后面一步可能会提示已存在,不用管。
  5. 启动Minitools,在kernel Commandline一项填写: 
    1console=ttySAC0 init=/bin/sh root=/dev/nfs nfsroot=192.168.86.240:/root/fs/fs_emdebian_mini ip=192.168.86.241:192.168.86.240:192.168.86.253:255.255.255.0:debian:eth0:off
    其中nfsroot为开发主机的地址,ip依次为:开发板临时IP:开发主机地址:网关:掩码:主机hostname:网卡设备:off,根据自己的情况修改。
  6. 参考Tiny210用户手册上的介绍,完成以下工作,连接好开发板的串口并上电: 


  7. 在这里我们只需要改变Serperboot的内核启动参数,如果开发板上还没有Bootloader或Linux内核则需要自己先安装,安装方法用户手册上有。点击快速烧写,烧写完成后点击快速启动,串口终端进入如下界面: 

  8. 输入: 
    1mount -t proc /proc /proc
  9. 输入: 
    1/debootstrap/debootstrap --second-stage
    又是一阵等待;
  10. 输入:
    1echo ttySAC0>> /etc/securetty
  11. 输入: 
    1echo "T0:123:respawn:/sbin/getty 115200 ttySAC0\n" >> /etc/inittab
  12. 输入passwd设定root的登陆密码,完成后输入reboot-f重启开发板。
  13. 此时开发板还是会停在等待USB烧写的状态,将Kernel Commandline中的init字段修改为/sbin/init: 
    1console=ttySAC0 init=/sbin/init root=/dev/nfs nfsroot=192.168.86.240:/root/fs/fs_emdebian_mini ip=192.168.86.241:192.168.86.240:192.168.86.253:255.255.255.0:debian:eth0:off
    点击快速启动,此时应可以看到登陆界面了;
  14. 拷贝驱动模块文件:如果你手头还有另外一块开发板的话,可以通过nfs将开发板Linux系统自带的/lib/modules/下的文件全部拷贝过来,没有的话就自己编译一下光盘上给的内核(Linux-3.0.8)并在/mnt/lib/下生成文件夹modules: 
    1cp mini210_linux_defconfig .config 
    2make CROSS_COMPILE=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi- 
    3make CROSS_COMPILE=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
  15. 重启,同样通过Minitools快速启动系统。
    此时,可以说你的Debian基本系统内容已经完成了,你可以通过Aptitude工具安装所需要的实用程序,所有的改动都会保存在你的开发主机的fs_debian_mini文件夹中(现在知道为啥要用nfs启动了吧?)。这个系统在经过自己的DIY后,就可以在开发主机上通过友善之臂提供的工具制作文件系统映像了,然后按照Tiny210用户手册上的介绍将它烧写到开发板的Nand中去就行了。
其他:
    Mini/Tiny6410的Superboot如果没有Minitools的支持,则在第7步和第13步改为进入U-Boot菜单来修改Linux启动参数,也是一样的。有问题或指导欢迎提出,谢谢。
参考:http://code.google.com/p/mini6410-debian/wiki/Tutorial


以上内容,转自:http://my.oschina.net/huzhu1984/blog/98140
[ 此帖被qq2440在2013-01-10 11:27重新编辑 ]
友善之臂淘宝直销店:http://shop34928758.taobao.com

手机:13560352861(杨工),QQ:10108270
级别: 新手上路
UID: 70610
精华: 0
发帖: 17
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 34 分
注册时间: 2012-05-22
最后登录: 2013-12-30
1楼  发表于: 2013-01-10 14:18
强大!
级别: 侠客
UID: 54261
精华: 9
发帖: 43
金钱: 665 两
威望: 133 点
贡献值: 9 点
综合积分: 266 分
注册时间: 2011-08-27
最后登录: 2014-08-08
2楼  发表于: 2013-01-10 17:45
Cya,Reggie.
级别: 侠客
UID: 81867
精华: 1
发帖: 67
金钱: 390 两
威望: 78 点
贡献值: 1 点
综合积分: 154 分
注册时间: 2012-11-14
最后登录: 2014-10-30
3楼  发表于: 2013-01-11 08:49
Hello, nice tutorial, can I ask why you're using armel and not armhf?  armhf will give a performance boost to anything that uses floating point.
级别: 新手上路
UID: 67450
精华: 0
发帖: 25
金钱: 130 两
威望: 26 点
贡献值: 0 点
综合积分: 50 分
注册时间: 2012-04-11
最后登录: 2014-08-13
4楼  发表于: 2013-01-13 09:05
nice!!thanks
级别: 侠客
UID: 85929
精华: 0
发帖: 71
金钱: 360 两
威望: 72 点
贡献值: 0 点
综合积分: 142 分
注册时间: 2013-01-11
最后登录: 2013-05-31
5楼  发表于: 2013-02-20 14:03
在第一次烧写道板子时,出现以下问题,好像是init找不到,请大家帮忙看看,谢谢了!

[    5.031742] Freeing init memory: 1456K
192.168.1.201 /root/fs/fs_debian_squeeze 192.168.1.230 192.168.1.201 192.168.1.1
255.255.255.0 debian eth0 off
mount: 192.168.1.201:/root/fs/fs_debian_squeeze failed, reason given by server:
Permission denied
1Wire touchscreen OK
/init: line 109: can't open /r/dev/console: no such file
[    5.085772] Kernel panic - not syncing: Attempted to kill init!
[    5.085860] [<c0184fc8>] (unwind_backtrace+0x0/0xf0) from [<c0681a30>] (panic
+0x70/0x1ac)
[    5.085940] [<c0681a30>] (panic+0x70/0x1ac) from [<c01a15f8>] (do_exit+0x5dc/
0x68c)
[    5.086011] [<c01a15f8>] (do_exit+0x5dc/0x68c) from [<c01a1904>] (do_group_ex
it+0x3c/0xbc)
[    5.093449] [<c01a1904>] (do_group_exit+0x3c/0xbc) from [<c01a1994>] (sys_exi
t_group+0x10/0x18)
[    5.102105] [<c01a1994>] (sys_exit_group+0x10/0x18) from [<c017f640>] (ret_fa
st_syscall+0x0/0x30)
[    5.110938] Rebooting in 5 seconds..Board type: 2
级别: 新手上路
UID: 67929
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
贡献值: 0 点
综合积分: 66 分
注册时间: 2012-04-17
最后登录: 2018-07-09
6楼  发表于: 2013-03-09 10:08
移植后的桌面是什么样子的  截图  求共享
......
级别: 新手上路
UID: 98927
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2013-12-12
最后登录: 2015-12-20
7楼  发表于: 2013-12-22 18:33

 回 5楼(zhaoshuli) 的帖子

mount: 192.168.1.201:/root/fs/fs_debian_squeeze failed, reason given by server:
这一句说明你的这个问题归咎于你的NFS的服务端,而不是你的开发板(客户端),检查:
1.网线连接是否正常。
2.挂在目录权限是否满足。
3.NFS配置文件的配置是否正确。
4.minitools中的命令行是否正确,IP是否无误。
等等
专业维修手机、电视机、飞机、拖拉机,价格面议。