主题 : mini2440上安装debian在高速SD卡 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 5728
精华: 1
发帖: 92
金钱: 785 两
威望: 572 点
贡献值: 1 点
综合积分: 204 分
注册时间: 2009-05-06
最后登录: 2017-09-13
楼主  发表于: 2010-02-24 14:24

 mini2440上安装debian在高速SD卡

管理提醒: 本帖被 kasim 执行加亮操作(2010-02-24)
个人一直认为装有操作系统的机器就不应再花时间编译自己想要的程序,因为很多已经别人做过的啊!一直希望能在mini2440上用debian系统, 经过近几天在网上找和看文档,终于搞好在mini2440上的SD卡安装并运行debian系统。曾经下载别人编译好的UBOOT二进制文件,不是没有SD卡支持就是不支持高速SD卡,利用春节假期参考了几篇文档,终于实现目标,参考的全是老外的文档,特记录过程,方便自己及同好,希望这方面多跟同好交流学习www@beebuu.com,感谢以下内容的老外
Thanks for these authors and their help:
http://bill.station51.net/index.php?post/2010/01/16/U-Boot-on-Mini2440
http://blog.leshak.ru/english/pages/how-to-install-debian-50-lenny-to-arm-qq2440/
http://wiki.linuxmce.org/index.php/Mini2440
http://code.google.com/p/mini2440/wiki/Emdebian
http://narnia.cs.ttu.edu/drupal/node/131


以下操作在ubuntu9.10server版操作系统中执行
1) 下载安装编译工具
    cd
    #回当前用户主目录
    wget http://www.codesourcery.com/sgpp/lite/arm/portal/package3696/public/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
    #下载
    cd /opt
    #进入目录
    tar jxvf ~/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
    #解压
    export PATH=$PATH:/opt/arm-2009q1/bin/
    #将目录加入环境变量
2) 安装 git 工具
    命令 apt-get install git-core
3) 下载并编译u-boot
   cd;mkdir uboot;cd uboot
    #回当前用户主目录,建uboot目录后进入
    git clone git://repo.or.cz/u-boot-openmoko/mini2440.git
    #下载uboot源码
    export CROSS_COMPILE=arm-none-linux-gnueabi-
    #设置编译器变量
    cd mini2440
    #进入uboot源码目录
    make mini2440_config
    #设置编译目标
    make all
    #编译
    ls u-boot.bin -l
    #显示u-boot.bin文件,确定已成功编译
4) 下载并编译内核
    cd;mkdir kernel;cd kernel
    #回当前用户主目录,建kernel目录后进入
    git clone git://repo.or.cz/linux-2.6/mini2440.git
    #下载内核源码
    cd mini2440
    #进入内核源码目录
    mkdir -p ../kernel-bin
    #建立最终二进制文件存放目录
    CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ mini2440_defconfig
    #生成mini2440的.config文件
    CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../kernel-bin/ modules_install
    #编译内核及模块,生成后放在当前用户主目录的kernel/kernel-bin目录;蓝色部份在原英文文档中没有,会导致以后启动时出现无法找到modules.dep的错误提示
    ../../uboot/mini2440/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ../kernel-bin/arch/arm/boot/zImage ~/kernel/kernel-bin/uImage
    #生成uImage文件放在当前用户主目录的kernel/kernel-bin目录
5) 制作文件系统
    cd
    #回当前用户主目录,建kernel目录后进入
    wget http://blog.leshak.ru/files/debian-5.0-armel-rootfs-20090216.tar.bz2
    #下载老外已经做好的文件系统压缩文件,也可按http://blog.leshak.ru/english/pages/how-to-install-debian-50-lenny-to-arm-qq2440/上方法自行制作;
    fdisk /dev/sdb
    #本人的SD卡是SDHC的4G卡,利用读卡器连接在电脑的USB口,用fdisk分区分了第一区为2G,详细命令步骤省去。
    mkfs.ext3 /dev/sdb1
    #在SD卡上的第一个分区建立EXT3文件系统
    mount /dev/sdb1 /mnt/arm
    #挂接到/mnt/arm
    cd /mnt/arm; tar jxvf debian-5.0-armel-rootfs-20090216.tar.bz2
    #进入目录,解压
    cp ~/kernel/kernel-bin/lib/modules lib/ -R
    #把以上第4)步中生成的~/kernel/kernel-bin/lib/modules目录拷贝到解压以上文件后的
    cd;umount /mnt/arm
    #最后回当前用户主目录,卸载,把SD卡取出放进mini2440主机中

以下操作在XP操作系统中执行,XP中已按mini2440手册安装设置并可使用DNW程序及usb的驱动,且超级终端能正确连接mini2440;因本人选择使用tftp下载内核的方法,所以先从网上下载安装了tftpd32 for windows,且将以上第4)步生成的uImage文件放在tftpd32的目录后启动tftpd32 for windows,XP的网络IP设为192.168.1.110
6) 烧写uboot到nand
    按 mini2440用户手册(2010-2-4版) 中第390页的“8.3.2 把 U-Boot 烧写到开发板”内容将以上第3)步生成的u-boot.bin烧写到mini2440板上
7) 烧写内核
    关掉mini2440后,把mini2440上的“NOR/NAND选择开关”设置为NAND重新开机,这时可以超级终端看到uboot的启动信息,启动后进入待命状态显示 mini2440 #
    打入以下命令:   
    dynpart
    #划分nand
    dynenv set u-boot_env
    #建立uboot动态环境
    saveenv
    #保存
    setenv ipaddr 192.168.1.100
    #设置uboot变量,tftp下载文件时的IP
    setenv serverip 192.168.1.110
    #设置uboot变量,tftp下载文件时的服务器IP
    tftp 0x31000000 uImage
    #下载uImage内核文件到0x31000000处
    nand write 0x31000000 kernel
    #将0x31000000处内容写入kernel部份
    setenv bootargs 'noinitrd rootdelay=4 root=/dev/mmcblk0p1 console=ttySAC0,115200'
    #设置启动传递参数,mmcblk0p1指明文件要系统在SD卡的第一个分区个
    setenv bootcmd nboot.e kernel \; bootm
    #设置uboot自动启动命令
    saveenv
    #保存以上设置
    reset
    #重启
8) 一切正常的话,就可以看到LCD上的login提示,超级终端上也有login提示。本人没有尝试连接USB键盘到mini2440上直接登录,但发现在超级终端上的login尝试登录root失败,最后把SD卡放在读卡器连接ubuntu9.10的电脑,强行直接修改SD卡上的文件系统中的etc目录里的passwd,shadow,group文件,且在home目录建立用户目录,增加一用户user01密码为abc;这样mini2440启动后才能在超级终端中登录user01再操作。OK,开始在mini2440上运行debian了!设置网卡、修改主机名、修改fstab等文件、安装SSH服务器dropbear…………一切如常操作,喜欢debian系列的系统是因为它安装软件特简单,一个apt-get就搞定了,找软件只要apt-cache search就行了,这下不用再自己一步步地编译软件了,象以前自己编译的iptables,pppoe啊什么的都不用做了,一个apt-get install搞定!而且debian的软件很丰富,很多软件都有现成的了,象我这样的懒人真是高兴啊~~

PS:光是记录这过程就花了我近三个小时,如有错漏,还请指导EMAIL:www@beebuu.com
级别: 新手上路
UID: 15556
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-03-06
最后登录: 2010-04-16
1楼  发表于: 2010-03-25 13:31
按照楼主的文档,启动的时候出错了:
什么原因?


U-Boot 1.3.2-mini2440 (Mar 25 2010 - 11:52:50)

I2C:   ready
DRAM:  64 MB
Flash:  2 MB
NAND:  Bad block table not found for chip 0
Bad block table not found for chip 0
256 MiB
Found Environment offset in OOB..
USB:   S3C2410 USB Deviced
In:    serial
Out:   serial
Err:   serial
MAC: 08:08:11:18:12:27
Hit any key to stop autoboot:  0

Loading from NAND 256MiB 3,3V 8-bit, offset 0x60000
reading NAND page at offset 0x60000 failed
** Read error
Wrong Image Format for bootm command
ERROR: can't get kernel image!
MINI2440 #
级别: 新手上路
UID: 15556
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-03-06
最后登录: 2010-04-16
2楼  发表于: 2010-03-25 13:48
MINI2440 # nand bad

Device 0 bad blocks:
  0ff80000
  0ffa0000
  0ffc0000
  0ffe0000
MINI2440 #
级别: 新手上路
UID: 15556
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-03-06
最后登录: 2010-04-16
3楼  发表于: 2010-03-25 14:20
执行 的时候,console画面好像死掉了

MINI2440 # nand createbbt
Create BBT and erase everything ? <y/N>
Skipping bad block at  0x0ff80000
Skipping bad block at  0x0ffa0000
Skipping bad block at  0x0ffc0000
Skipping bad block at  0x0ffe0000

Creating BBT. Please wait ...Bad block table not found for chip 0
Bad block table not found for chip 0

停在这里,敲回车也没用。
这正常吗?
级别: 新手上路
UID: 15556
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-03-06
最后登录: 2010-04-16
4楼  发表于: 2010-03-25 14:31
原来在Creating BBT.的时候是要停很久的。
现在已经看到debian启动了。
太感谢   kasim了!

不过我发现进入debian系统后,
LCD上可以用usb的键盘。
但是console上敲回车没反应了。
怎么才能让console重新能用?

还有在LCD上登录的时候,root的密码是多少?
级别: 新手上路
UID: 15556
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-03-06
最后登录: 2010-04-16
5楼  发表于: 2010-03-25 15:15
已经通过在其他linux上把SD卡上的/etc/shadow中的root密码清空了。
现在已经可以无密码登录root。

另外console的问题也通过直接修改sd卡上的文件来解决。

# echo ttySAC0 >>etc/securetty
# printf "T0:123:respawn:/sbin/getty 115200 ttySAC0\n" >>etc/inittab

发现在dibian启动过程中有一些错误报出来。
不知道是什么意思。希望高人能解释一下。
错误如下:

Synthesizing the initial hotplug events...done.
Waiting for /dev to be fully populated...end_request: I/O error, dev mtdblock0, sector 0
Buffer I/O error on device mtdblock0, logical block 0
end_request: I/O error, dev mtdblock0, sector 8
Buffer I/O error on device mtdblock0, logical block 1
uncorrectable error :
end_request: I/O error, dev mtdblock0, sector 16
Buffer I/O error on device mtdblock0, logical block 2
end_request: I/O error, dev mtdblock0, sector 24
Buffer I/O error on device mtdblock0, logical block 3
end_request: I/O error, dev mtdblock0, sector 0
Buffer I/O error on device mtdblock0, logical block 0
done.