Linux2.6.24.4 移植到S3C2410(nano2410)
2013-01-28
Kevin(随风)
标签: S3C2410 Linux

Linux2.6.24.4 移植到S3C2410(nano2410)之:

建立nfs 根文件系统(busybox1.9.2)

1. 下载最新的busybox1.9.2,并解压缩。

2. 修改Makefile 中的174 行的 arch 和编译工具链头。

ARCH ?= arm

CROSS_COMPILE ?=

/opt/tool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-

3. make menuconfig. 修改编译配置选项。

install optin-->

[*] Don't use /usr

Busybox Library Tuning --->

(2) MD5: Trade Bytes for Speed

[*] Faster /proc scanning code (+100 bytes)

[*] Support for /etc/networks

[*] Support for /etc/networks

[*] Additional editing keys

[*] vi-style line editing commands

[*] History saving

[*] Tab completion

[*] Username completion

[*] Fancy shell prompts

--- Ash Shell Options 下面的选项全部选择

Linux Module Utilities --->

[*] Support version 2.6.x Linux kernels

Build Options ---> (采用动态lib 链接)

[ ] Build BusyBox as a static binary (no shared libs)

4.编译busybox

[kevin@localhost busybox-1.9.2]$ make install

在busybox/_install 目录下会生成我们需要的文件。

5. 修改_install/bin/busybox 的属性。为4755

chmod 4755 ./_install/bin/busybox

必须要要修改属性,否则在busybox 中很多命令会受限制,比如:

[kevin@kevin /]$ su

su: must be suid to work properly

6.建立root fs 的文件系统所需的目录和文件。

Mkdir /nano2410

Mkdir /nano2410/root

在root 文件夹中建立基本的目录

[kevin@localhost nano2410]$ tree root 5

root

|-- bin

|-- boot

|-- dev

|-- etc

|-- home

|-- lib

| `-- modules

|-- makedir

|-- mnt

| |-- data

| |-- etc

| |-- jffs2

| |-- temp

| `-- yaffs

|-- proc

|-- root

|-- sbin

|-- sys

|-- tmp

|-- usr

| |-- bin

| |-- lib

| `-- sbin

`-- var

|-- lib

|-- lock

|-- log

|-- run

`-- tmp

可以通过以下脚本文件来建立。

[kevin@localhost nano2410]$ vi makedir

#! /bin/sh

echo "making dir : bin dev etc lib proc sbin sys usr"

cd root

mkdir bin dev etc lib proc sbin sys usr #必备的8 个目录

mkdir usr/bin usr/lib usr/sbin lib/modules

# Don't use mknod ,unless you run this Script as root !

# mknod -m 600 dev/console c 5 1

# mknod -m 666 dev/null c 1 3

echo "making dir : mnt tmp var"

mkdir mnt tmp var

chmod 1777 tmp

mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp

mkdir var/lib var/lock var/log var/run var/tmp

chmod 1777 var/tmp

echo "making dir : home root boot"

mkdir home root boot

echo "done"

运行脚本文件makedir

[kevin@localhost nano2410]$ sh makedir

这样在root 目录下就会生成以上列出的文件。

6. 以root 身份建立节点文件/dev/console, /dev/null

mknod -m 600 dev/console c 5 1

mknod -m 666 dev/null c 1 3

7. 为shell 加入全局变量文件/etc/profile,内容如下:

# /etc/profile: system-wide .profile file for the Bourne shells

echo

echo -n "Processing /etc/profile...... "

# Set search library path

export LD_LIBRARY_PATH=/lib:/usr/lib

# Set user path

PATH=/bin:/sbin:/usr/bin:/usr/sbin

export PATH

# Set PS1

USER="`id -un`"

LOGNAME=$USER

PS1='[u@h W]$ '

PATH=$PATH

echo “Done ... “

8. 增加初始化文件inittab 和fstab

[kevin@localhost etc]$ vi fstab

proc /proc proc defaults i 0 0

none /tmp ramfs defaults 0 0

mdev /dev ramfs defaults 0 0

sysfs /sys sysfs defaults 0 0

[kevin@localhost etc]$ vi inittab

::sysinit:/etc/init.d/rcS

::respawn:-/bin/sh

tty2::askfirst:-/bin/sh

::ctrlaltdel:/bin/umount -a -r

::shutdown:/bin/umount -a -r

::shutdown:/sbin/swapoff -a

9. 增加初始化脚本文件。

[kevin@localhost etc]$ mkdir init.d

[kevin@localhost etc]$ vim init.d/rcS

#! /bin/sh

# 设置主机名,需要在etc 建立文件host

. /etc/host

hostname ${HOSTNAME}

# mount all filesystem defined in “fstab”

echo "# mount all..........."

/bin/mount -a

#+kevin

#/bin/chmod 0666 /dev/null

echo "# Starting mdev........."

/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

echo "*********************************************************"

echo " kevin Linux-2.6.24.4 nfs boot "

echo " 2008-03-29 "

echo "********************************************************"

echo

10.建立主机名存储文件/etc/host

[kevin@localhost etc]$ vim host

HOSTNAME=kevin

#如果不指定主机名,默认的为www。

11.建立文件/etc/mdev.conf,内容为空

[kevin@localhost etc]$ vi mdev.conf

12.复制主机/etc/下面的文件passwd, group, shadow 文件到/etc

[kevin@localhost etc]$ cp /etc/group .

[kevin@localhost etc]$ cp /etc/passwd .

[kevin@localhost etc]$ cp /etc/shadow .

并修改用户passwd 中用户使用的shell 名称。FC8 上默认的为bash,uboot 中只支持ash。

root:x:0:0:root:/root:/bin/bash -->

root:x:0:0:root:/root:/bin/ash

kevin:x:500:500:kevin:/home/kevin:/bin/bash -->

kevin:x:500:500:kevin:/home/kevin:/bin/ash

ok,所需要的文件都已经建立ok 了

[kevin@localhost etc]$ ls

fstab group host init.d inittab mdev.conf passwd profile shadow

13.复制刚刚编译的busybox 到/root 目录下

[kevin@localhost _install]$ sudo cp -Rfv * /nano2410/root

14.因为是编译的时候使用的是动态链接。所以先看看/busybox/_install/bin/busybox 使用了哪些lib,然后从glibc 复制相应的lib 到/nano2410/root/lib 中。

[kevin@localhost bin]$

/opt/tool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-readelf -d busybox

Dynamic section at offset 0xb8014 contains 22 entries:

Tag Type Name/Value

0x00000001 (NEEDED) Shared library:[libcrypt.so.1]

0x00000001 (NEEDED) Shared library: [libm.so.6]

0x00000001 (NEEDED) Shared library: [libc.so.6]

0x0000000c (INIT) 0xc04c

0x0000000d (FINI) 0xa26f0

0x00000004 (HASH) 0x80e8

0x00000005 (STRTAB) 0xa384

0x00000006 (SYMTAB) 0x8b24

0x0000000a (STRSZ) 3316 (bytes)

0x0000000b (SYMENT) 16 (bytes)

0x00000015 (DEBUG) 0x0

0x00000003 (PLTGOT) 0xc00ec

0x00000002 (PLTRELSZ) 2952 (bytes)

0x00000014 (PLTREL) REL

0x00000017 (JMPREL) 0xb4c4

0x00000011 (REL) 0xb454

0x00000012 (RELSZ) 112 (bytes)

0x00000013 (RELENT) 8 (bytes)

0x6ffffffe (VERNEED) 0xb384

0x6fffffff (VERNEEDNUM) 3

0x6ffffff0 (VERSYM) 0xb078

0x00000000 (NULL) 0x0

复制lib 文件:

[kevin@localhost lib]$ /opt/tool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/ arm-9tdmi-linux-gnu/lib/ld* .

[kevin@localhost lib]$ /opt/tool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/

arm-9tdmi-linux-gnu/lib/libc-2.3.2.so .

[kevin@localhost lib]$ /opt/tool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/

arm-9tdmi-linux-gnu/lib/libc.so.6 .

[kevin@localhost lib]$ /opt/tool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/ arm-9tdmi-linux-gnu/lib/libm * .

[kevin@localhost lib]$ /opt/tool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/

arm-9tdmi-linux-gnu/lib/libcrypt* .

15.启用host PC 上的nfs rootfs 文件夹/nano2410/root

[root@localhost ~]# vim /etc/exports

/nano2410/root *(rw,sync,no_root_squash)

# 如果PC 通过路由器连接targetboad 请使用下面的配置,否则targetboad 不能访问

# Pc 上的nfs. 192.168.0.xxx 我的局域网使用的网段

# rw:可读写,no_root_squash:允许非root 用户操作改文件夹

/nano2410/root 192.168.0.xxx(rw,sync,no_root_squash)

以root 身份启动nfs 服务:

[root@localhost ~]# /etc/init.d/nfs start

16. 设定uboot 的命令行参数。

bootargs=console=ttySAC0,115200 root=/dev/nfs init=/linuxrc nfsroot=192.168.0.10

4:/nano2410/root ip=192.168.0.69:192.168.0.104:192.168.0.1:255.255.255.0:www.kev

in.com:eth0:off

targetboard IP addr : 192.168.0.69

Host PC IP addr : 192.168.0.104

Gateway : 192.168.0.1

Nfs dir : 192.168.0.104:/nano2410/root

17.reset targetboard,看看启动信息~~

Starting kernel ...

Uncompressing Linux................................................................................................... done, booting the

kernel.

Linux version 2.6.24.4 (kevin@localhost.localdomain) (gcc version 4.1.1) #2 Sat Mar 29 17:32:04 CST

2008

CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=00007177

Machine: SMDK2410

Memory policy: ECC disabled, Data cache writeback

CPU S3C2410A (id 0x32410002)

S3C2410: core 202.800 MHz, memory 101.400 MHz, peripheral 50.700 MHz

S3C24XX Clocks, (c) 2004 Simtec Electronics

CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on

CPU0: D VIVT write-back cache

CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128

Kernel command line: console=ttySAC0,115200 root=/dev/nfs init=/linuxrc

nfsroot=192.168.0.104:/nano2410/root

ip=192.168.0.69:192.168.0.104:192.168.0.1:255.255.255.0:www.kevin.com:eth0:off

irq: clearing pending ext status 00000200

irq: clearing subpending status 00000002

PID hash table entries: 128 (order: 7, 512 bytes)

timer tcon=00500000, tcnt a509, tcfg 00000200,00000000, usec 00001e4c

Console: colour dummy device 80x30

console [ttySAC0] enabled

Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)

Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)

Memory: 32MB = 32MB total

Memory: 29196KB available (2836K code, 296K data, 116K init)

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

net_namespace: 64 bytes

NET: Registered protocol family 16

S3C2410 Power Management, (c) 2004 Simtec Electronics

S3C2410: Initialising architecture

S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics

DMA channel 0 at c2800000, irq 33

DMA channel 1 at c2800040, irq 34

DMA channel 2 at c2800080, irq 35

DMA channel 3 at c28000c0, irq 36

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

NET: Registered protocol family 2

IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

TCP established hash table entries: 1024 (order: 1, 8192 bytes)

TCP bind hash table entries: 1024 (order: 0, 4096 bytes)

TCP: Hash tables configured (established 1024 bind 1024)

TCP reno registered

NetWinder Floating Point Emulator V0.97 (double precision)

JFFS2 version 2.2. (NAND) 漏 2001-2006 Red Hat, Inc.

io scheduler noop registered

io scheduler anticipatory registered (default)

io scheduler deadline registered

io scheduler cfq registered

s3c2410-lcd s3c2410-lcd: no platform data for lcd, cannot attach

s3c2410-lcd: probe of s3c2410-lcd failed with error -22

lp: driver loaded but no devices found

ppdev: user-space parallel port driver

Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled

s3c2410-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410

s3c2410-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410

s3c2410-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410

RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize

loop: module loaded

Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)

eth0: CS8900A rev E at 0xe0000300 irq=53, addr: 00: 0:3E:26:0A: 0

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx

S3C24XX NAND Driver, (c) 2004 Simtec Electronics

s3c2410-nand s3c2410-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns

NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)

Scanning device for bad blocks

Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":

0x00000000-0x00100000 : "U-Boot"

0x00100000-0x00400000 : "Linux Kernel"

0x00400000-0x02c00000 : "Root"

0x02c00000-0x04000000 : "User"

usbmon: debugfs is not available

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

mice: PS/2 mouse device common for all mice

S3C24XX RTC, (c) 2004,2006 Simtec Electronics

s3c2410-i2c s3c2410-i2c: slave address 0x10

s3c2410-i2c s3c2410-i2c: bus frequency set to 99 KHz

s3c2410-i2c s3c2410-i2c: i2c-0: S3C I2C adapter

S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics

s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled

TCP cubic registered

NET: Registered protocol family 1

RPC: Registered udp transport module.

RPC: Registered tcp transport module.

drivers/rtc/hctosys.c: unable to open rtc device (rtc0)

IP-Config: Complete:

device=eth0, addr=192.168.0.69, mask=255.255.255.0, gw=192.168.0.1,

host=www, domain=, nis-domain=kevin.com,

bootserver=192.168.0.104, rootserver=192.168.0.104, rootpath=

Looking up port of RPC 100003/2 on 192.168.0.104

Looking up port of RPC 100005/1 on 192.168.0.104

VFS: Mounted root (nfs filesystem).

Freeing init memory: 116K

init started: BusyBox v1.9.2 (2008-04-01 21:32:34 CST)

starting pid 770, tty '': '/etc/init.d/rcS'

# mount all...........

chmod: /dev/null: No such file or directory

# Starting mdev.........

*********************************************************

kevin Linux-2.6.24.4 nfs boot

2008-03-29

********************************************************

starting pid 776, tty '': '/bin/sh'

Processing /etc/profile...... Linux initialized! ^_^

[root@kevin /]# uname -a

Linux kevin 2.6.24.4 #2 Sat Mar 29 17:32:04 CST 2008 armv4tl unknown

[root@kevin /]#

OK~~~ NFS 加载成功! ☺

共 3 页   上一页123
可能会用到的工具/仪表
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号