主题 : 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: 12076
精华: 0
发帖: 38
金钱: 205 两
威望: 41 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2009-12-28
最后登录: 2011-06-22
1楼  发表于: 2010-03-06 09:26
楼主我下载内核太慢了,几KB才(git clone git://repo.or.cz/linux-2.6/mini2440.git)
楼主,我给你什么好处,你才能通过QQ超大附件把你下下来的内核发给我的QQ邮箱呢?375488770@qq.com

我认为此帖是绝世好帖!!!还请楼主帮忙!!!绝世好帖!!!
立志救中国
级别: 新手上路
UID: 12076
精华: 0
发帖: 38
金钱: 205 两
威望: 41 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2009-12-28
最后登录: 2011-06-22
2楼  发表于: 2010-03-08 15:02
最后启动时遇到这个问题: VFS: Cannot open root device "mmcblk0p1" or unknown-block(2,0)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

这是格式化SD卡时出的问题,还是内核没有检测到SD卡?
立志救中国
级别: 新手上路
UID: 12076
精华: 0
发帖: 38
金钱: 205 两
威望: 41 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2009-12-28
最后登录: 2011-06-22
3楼  发表于: 2010-03-08 21:04

 回 7楼(kasim) 的帖子

感谢kasim
启动参数为 bootargs 'noinitrd rootdelay=4 root=/dev/mtcblk0p1 console=ttySAC0,115200'
启动信息如下:
Waiting 4sec before mounting root device...
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c-sdi s3c2440-sdi: powered down.
mmc0: error -110 whilst initialising SD card
s3c-sdi s3c2440-sdi: powered down.
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "mtcblk0p1" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00             256 mtdblock0 (driver?)
1f01             128 mtdblock1 (driver?)
1f02            5120 mtdblock2 (driver?)
1f03           60032 mtdblock3 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

难到我板子的SD卡电路坏掉了
立志救中国
级别: 新手上路
UID: 12076
精华: 0
发帖: 38
金钱: 205 两
威望: 41 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2009-12-28
最后登录: 2011-06-22
4楼  发表于: 2010-03-13 10:51

 回 10楼(kasim) 的帖子

我用的内核版本就是帖子里的内核(git clone git://repo.or.cz/linux-2.6/mini2440.git);SD卡是SDHC 4G。
完整启动信息如下:
Loading from NAND 64MiB 3,3V 8-bit, offset 0x60000
** Unknown image type
## Booting kernel from Legacy Image at 31000000 ...
   Image Name:
   Created:      2010-03-08   0:18:10 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2040172 Bytes =  1.9 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux.............................................................
.................................................................... done, booti
ng the kernel.
Linux version 2.6.32-rc8 (root@xiaogen-desktop) (gcc version 4.3.2 (Sourcery G++
Lite 2008q3-72) ) #1 Mon Mar 8 07:58:04 CST 2010
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: noinitrd rootdelay=4 root=/dev/mmcblk0p1 console=ttySAC0,11
5200
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60640KB available (3592K code, 388K data, 132K init, 0K highmem)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Hierarchical RCU implementation.
NR_IRQS:85
irq: clearing pending status 02000000
irq: clearing subpending status 00000003
irq: clearing subpending status 00000002
Console: colour dummy device 80x30
console [ttySAC0] enabled
Calibrating delay loop... 201.93 BogoMIPS (lpj=504832)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
MINI2440: Option string mini2440=0tb
MINI2440: LCD [0:240x320] 1:800x480 2:1024x768 3:240x320 4:640x480
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c4808000, irq 33
DMA channel 1 at c4808040, irq 34
DMA channel 2 at c4808080, irq 35
DMA channel 3 at c48080c0, irq 36
S3C244X: Clock Support, DVS off
S3C24XX CPU Frequency driver, s3c244x cpu support
bio: create slab <bio-0> at 0
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
s3c-i2c s3c2440-i2c: slave address 0x10
s3c-i2c s3c2440-i2c: bus frequency set to 98 KHz
s3c-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
squashfs: version 4.0 (2009/01/31) Phillip Lougher
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
msgmni has been set to 118
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Console: switching to colour frame buffer device 60x53
fb0: s3c2410fb frame buffer device
s3c2440-uart.0: ttySAC0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: ttySAC1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: ttySAC2 at MMIO 0x50008000 (irq = 76) is a S3C2440
brd: module loaded
at24 0-0050: 1024 byte 24c08 EEPROM (writable)
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c24xx-nand s3c2440-nand: Tacls=1, 9ns Twrph0=3 29ns, Twrph1=2 19ns
s3c24xx-nand s3c2440-nand: NAND soft ECC
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit
)
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "u-boot"
0x000000040000-0x000000060000 : "u-boot-env"
0x000000060000-0x000000560000 : "kernel"
0x000000560000-0x000004000000 : "root"
dm9000 Ethernet Driver, V1.31
eth0: dm9000e at c4860300,c4864304 IRQ 51 MAC: 08:08:11:18:12:27 (chip)
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver libusual
mice: PS/2 mouse device common for all mice
input: gpio-keys as /devices/platform/gpio-keys/input/input0
s3c2440-ts s3c2440-ts: Starting
  Created group ts filter len 12 depth 2 close 10 thresh 6
  Created Median ts filter len 20 depth 2 dec 24
  Created Mean ts filter len 4 depth 2 thresh 65535
  Created Linear ts filter depth 2
s3c2440-ts s3c2440-ts: 4 filter(s) initialized
s3c2440-ts s3c2440-ts: successfully loaded
input: s3c2410 TouchScreen as /devices/virtual/input/input1
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling
s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0
i2c /dev entries driver
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
cpuidle: using governor ladder
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
s3c-sdi s3c2440-sdi: powered down.
s3c-sdi s3c2440-sdi: mmc0 - using pio, sw SDIO IRQ
s3c-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).
Registered led device: led1
Registered led device: led2
Registered led device: led3
Registered led device: led4
Registered led device: backlight
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
Advanced Linux Sound Architecture Driver Version 1.0.21.
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
No device for DAI UDA134X
No device for DAI s3c24xx-i2s
S3C24XX_UDA134X SoC Audio driver
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
UDA134X SoC Audio Codec
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
asoc: UDA134X <-> s3c24xx-i2s mapping ok
ALSA device list:
  #0: S3C24XX_UDA134X (UDA134X)
TCP cubic registered
NET: Registered protocol family 17
s3c2410-rtc s3c2410-rtc: setting system clock to 2022-03-28 00:31:53 UTC (164842
7513)
Waiting 4sec before mounting root device...
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c-sdi s3c2440-sdi: powered down.
mmc0: error -110 whilst initialising SD card
s3c-sdi s3c2440-sdi: powered down.
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "mmcblk0p1" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00             256 mtdblock0 (driver?)
1f01             128 mtdblock1 (driver?)
1f02            5120 mtdblock2 (driver?)
1f03           60032 mtdblock3 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

另外,我在原来linux中插入SD卡时,串口也有mmc0: error -110提示,不过SD卡能用。我换2G的非SDHC SD卡也提示这个错误,我又换了一款mini2440板子,也是这样。
劳烦楼主和kasim给我分析一下,万分感谢!
立志救中国
级别: 新手上路
UID: 12076
精华: 0
发帖: 38
金钱: 205 两
威望: 41 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2009-12-28
最后登录: 2011-06-22
5楼  发表于: 2010-04-20 16:58

 回 28楼(kasim) 的帖子

终于将Debian装上,不过是命令行模式,请教kasim,如何安装qt2.2.0呢?另外如何去掉用户登录信息,开机直接进入系统(像mini2440官方root_qt系统就没有用户登录信息)?