原创 mini uclinux系统

2009-12-27 14:18 3587 10 10 分类: MCU/ 嵌入式
mini uclinux系统
by panasonic.lin@163.com

由于uboot对网络的支持很好,于是想实验下uclinux的最小系统,板上只有uboot代码在flash,uclinux的映像通过网络使用tftp下载到内存,然后启动uclinux,uclinux在启动的最后阶段使用nfs挂载根文件系统,根文件系统使用busybox完成init过程,然后启动一个控制台和shell,busybox只编译了几个最基本的应用程序。开发阶段,nfs十分的方便,任何内核,根文件系统的更改都不需要反复的烧写flash,也不需要调试器......

$make menuconfig
1.0 Vendor/product
->Samsung
->44B0

1.1 Kernel/Library/Defaults
->linux-2.4.x Kernel Version
->uclibc Libc Version
->customize kernel settings
->customize vendor/user settings

1.2 exit->do you wish to save your new kernel configuration?->yes

/*------------------------------------------------------------*/
/*--------------配置内核--------------------------------------*/
/*-----------------------------------------------------------*/

2.0 Linux Kernel v2.4.24-uc0 configuration

2.1system Type
->Samsung ARM System type
->set flash/sdram size and base addr
->sdram base address 0c000000
->sdram size 00800000
->flash base address 00000000
->flash size 00200000
->RAM kernel executes from
->S3C44B0-MBA44 Board Implementation
点击看大图

点击看大图

2.2 General setup
->networking support
->NWfpe math emulation
->ELF kernel core format
->support uclinux flat format binaries
->compiled-in kernel boot parameter"root=/dev/nfs rw nfsroot=192.168.0.1:/home/panasonic/nfs-root,v3 ip=192.168.0.2:192.168.0.1::255.255.255.0:44b0:eth0:none"
->timer and cpu usage leds

2.3Networking options
->packet socket
->tcp/ip networking
->IP:kernel level autoconfiguration

2.4 Network device support
->ethernet (10 or 100mbit)->other ISA cards->ne2000/ne1000 support->16bits modes

2.5 Block devices
->network block device support
->ramdisk support->4096 default ramdisk size
->去掉romdisk memory block device(blkmem)
->去掉initial ram disk(initrd )support

2.6 File systems
->kernel automounter support
->kernel automounter version 4 support
->virtual memory file system support
->/proc file system support
->rom file system support
->second extended fs support
->Network file systems->NFS file system support->provide nfsv3 client support->root file system on NFS

2.7 Character devices
->Samsung s3c44b0x serial ports support
->UART serial console device
->serial drivers->s3c44b0 serial port support->support for console on s3c44b0->115200 default s3c44b0 baudrate

2.8 Library routines
->zlib compression support

3.0exit->do you wish to save your new kernel configuration?->yes

/*--------------------------------------------------------------------*/
/*--------------配置用户应用--------------------------------------------*/
/*--------------------------------------------------------------------*/

3.1 applications user setting
3.2 core applications
3.3 Library configuration
3.4 flash tools
3.5 filesystem applications
3.6 network applications
3.7 miscellaneous applications
3.8 Tinylogin
3.9 Microwindows
3.10 Games
3.11 Miscellaneous configuration
3.12 Debug Builds
以上编译/user目录下的应用程序,由于这里暂时只实验busybox的init和app,故只编译一个busybox,把上面的3.2-3.12全不选。
3.13 Busybox->cat->echo->hostname->ifconfig->init->ls->mkdir->mknod->mount->ping->rm->shell->msh:minix shell->msh is /bin/sh->sh:command editing->sh:tab completion->umount
3.14 exit->do you wish to save your new kernel configuration?->yes

/*------------------------------------------------------------*/
/*-----------下载调试前准备------------------------------------*/
/*-----------------------------------------------------------*/
$make dep
$make clean
$make lib_only
$make user_only
$make romfs
$make
$make image
4.0 最后在uclinux-dist/images目录下生成romfs.img,uclinux_ram.bin.gz,uclinux_rom.bin,romfs.img就是根文件系统,将在flash运行的uclinux_rom.bin拷贝到tftp的输出目录(我这里是/home/panasonic/bin),设置tftp服务器。
点击看大图


4.1 建立nfs输出目录,设置nfs服务器,最后将romfs.img挂载到回环设备,拷贝img里面的根文件系统到nfs输出目录。
$mount -o loop romfs.img /mnt
$cp -a /mnt/* /home/panasonic/nfs-root
$umount /mnt


点击看大图

最后nfs-root的目录内容如下:
.
|-- bin
|   |-- [
|   |-- busybox
|   |-- cat
|   |-- echo
|   |-- expr
|   |-- hostname
|   |-- ifconfig
|   |-- init
|   |-- kill
|   |-- killall
|   |-- ls
|   |-- mkdir
|   |-- mknod
|   |-- mount
|   |-- msh
|   |-- ping
|   |-- rm
|   |-- sh
|   |-- test
|   `-- umount
|-- dev
|   |-- console
|   |-- cua0
|   |-- cua1
|   |-- kmem
|   |-- mem
|   |-- null
|   |-- ptyp0
|   |-- ptyp1
|   |-- ptyp2
|   |-- ptyp3
|   |-- ptyp4
|   |-- ptyp5
|   |-- ptyp6
|   |-- ptyp7
|   |-- ptyp8
|   |-- ptyp9
|   |-- ptypa
|   |-- ptypb
|   |-- ptypc
|   |-- ptypd
|   |-- ptype
|   |-- ptypf
|   |-- ram0
|   |-- ram1
|   |-- random
|   |-- rom0
|   |-- rom1
|   |-- rom2
|   |-- rom3
|   |-- rom4
|   |-- rom5
|   |-- rom6
|   |-- rom7
|   |-- rom8
|   |-- rom9
|   |-- tty
|   |-- tty0
|   |-- tty1
|   |-- tty2
|   |-- tty3
|   |-- ttyS0
|   |-- ttyS1
|   |-- ttyp0
|   |-- ttyp1
|   |-- ttyp2
|   |-- ttyp3
|   |-- ttyp4
|   |-- ttyp5
|   |-- ttyp6
|   |-- ttyp7
|   |-- ttyp8
|   |-- ttyp9
|   |-- ttypa
|   |-- ttypb
|   |-- ttypc
|   |-- ttypd
|   |-- ttype
|   |-- ttypf
|   |-- urandom
|   `-- zero
|-- etc
|   |-- init.d
|   |   |-- rcS
|   |   `-- rcS~
|   |-- inittab
|   |-- motd
|   |-- mtab
|   |-- passwd
|   |-- ramfs.img
|   |-- ramfs2048.img
|   |-- rc
|   |-- services
|   `-- version
|-- home
|   `-- index.html
|-- lib
|-- mnt
|-- proc
|-- sbin -> /bin
|-- tmp -> /var/tmp
|-- usr
`-- var

/*------------------------------------------------------------------*/
/*----------下载调试------------------------------------------------*/
/*----------------------------------------------------------------*/
一切准备就绪,打开minicom,启动板子的uboot,
$tftpboot 0xc500000
$bootm 0xc500000
如果没什么以外的话,启动画面如下:

点击看大图

busybox抱怨说找不到/etc/init.d/rcS,在这之前busybox试着读取inittab,但是我们的inittab好像是没有内容的。另外这里的shell是Sash,它是uclinux默认的shell,奇怪的是我们在配置user app的时候并没有选择它,而且在busybox里面也是选择了Msh,所以这里的sash不太友好,连编辑命令都不可以,还是选择msh吧,自己新建一个rcS脚本,放在/etc/init.d/:
#!/bin/sh
mount -t proc proc /proc
hostname 44b0
cat /etc/motd
/bin/msh
重复开机步骤,启动...OK

点击看大图

如果刚开始的时候,出现了warning:unable to open an initial console
kernel panic:attempted to kill init!
记得,拷贝romfs根文件系统的时候,不要拷贝uclinux-dist目录下的romfs目录,而是应该将romfs.img挂载到回环设备,拷贝映像里面的内容,romfs目录下的/dev/有很多带@的设备文件,当然用不了拉。

点击看大图

还有一个问题就是uboot 传递给uclinux的命令行参数好像没什么作用,uclinux会使用默认的,如果不行,只好在内核里面编译进去cmd_line.

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条