构建基本的嵌入式Linux根文件系统文档格式.docx

上传人:b****4 文档编号:18498298 上传时间:2022-12-17 格式:DOCX 页数:13 大小:25.83KB
下载 相关 举报
构建基本的嵌入式Linux根文件系统文档格式.docx_第1页
第1页 / 共13页
构建基本的嵌入式Linux根文件系统文档格式.docx_第2页
第2页 / 共13页
构建基本的嵌入式Linux根文件系统文档格式.docx_第3页
第3页 / 共13页
构建基本的嵌入式Linux根文件系统文档格式.docx_第4页
第4页 / 共13页
构建基本的嵌入式Linux根文件系统文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

构建基本的嵌入式Linux根文件系统文档格式.docx

《构建基本的嵌入式Linux根文件系统文档格式.docx》由会员分享,可在线阅读,更多相关《构建基本的嵌入式Linux根文件系统文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

构建基本的嵌入式Linux根文件系统文档格式.docx

mkdirmnt/etcmnt/jffs2mnt/yaffsmnt/datamnt/temp

mkdirvar/libvar/lockvar/logvar/runvar/tmp 

chmod1777var/tmp

homerootboot"

mkdirhomerootboot

echo"

done"

在你想要建立根文件系统的地方,运行:

[tekkamanninja@Tekkaman-Ninjanfs]$ 

./mkroot

creatintrootfsdir......

makingdir 

:

bindevetclibprocsbinsysusr

mnttmpvar

homerootboot

done

cdrootfs/dev/

[tekkamanninja@Tekkaman-Ninjadev]$ 

su

口令:

[root@Tekkaman-Ninjadev]# 

mknod 

-m600consolec51;

-m666 

null 

c13;

exit

[tekkamanninja@Tekkaman-Ninjadev]$

(2)配置、编译和安装Busybox-1.9.1

[tekkamanninja@Tekkaman-Ninjasource]$ 

tar 

-xjvfbusybox-1.9.1.tar.bz2 

修改Makefile文件:

[tekkamanninja@Tekkaman-Ninjabusybox-1.9.1]$ 

pwd

/home/tekkamanninja/working/source/busybox-1.9.1

kwriteMakefile

......(第151-154行)

#SUBARCH 

$(shelluname 

-m 

sed 

-es/i.86/i386/ 

-es/sun4u/sparc64/ 

\

-es/arm.*/arm/ 

-es/sa110/arm/ 

-es/s390x/s390/ 

-es/parisc64/parisc/ 

-es/ppc.*/powerpc/ 

-es/mips.*/mips/ 

......(第174行附近)

#ARCH 

?

$(SUBARCH)

#CROSS_COMPILE 

=

ARCH 

arm

CROSS_COMPILE 

/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-

makemenuconfig

在原有的基础上修改如下:

BusyboxSettings--->

InstallationOptions--->

[*]Don'

tuse/usr

(/home/tekkamanninja/working/nfs/rootfs)BusyBoxinstallationprefix

BusyboxLibraryTuning 

--->

[*]Supportfor/etc/networks

[*] 

Additionaleditingkeys 

vi-stylelineeditingcommands 

(15) 

Historysize 

Historysaving 

Tabcompletion 

Usernamecompletion 

Fancyshellprompts

Login/PasswordManagementUtilities 

选项全部N掉,后面单独使用TinyLogin。

(因为集成的好像不是很好用,我自己的经验是这样)

LinuxModuleUtilities 

[N]Supportversion2.2.xto2.4.xLinuxkernels

Shells 

--- 

AshShellOptions 

下的选项全选

make

......

LINKbusybox_unstripped

Tryinglibraries:

cryptm

Librarycryptisneeded

Librarymisneeded

Finallinkwith:

makeinstall

我是动态编译所以查看一下需要的动态库

/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-readelf 

-dbusybox

Dynamicsectionatoffset0xac014contains22entries:

TagTypeName/Value

0x00000001 

(NEEDED) 

Sharedlibrary:

[libcrypt.so.1]

[libm.so.6]

[libc.so.6]

0x0000000c 

(INIT) 

0xc0f0

0x0000000d 

(FINI) 

0x97608

0x00000004 

(HASH) 

0x80e8

0x00000005 

(STRTAB) 

0xa3c0

0x00000006 

(SYMTAB) 

0x8b30

0x0000000a 

(STRSZ) 

3371 

(bytes)

0x0000000b 

(SYMENT) 

16 

0x00000015 

(DEBUG) 

0x0

0x00000003 

(PLTGOT) 

0xbc0ec

0x00000002 

(PLTRELSZ) 

2976 

0x00000014 

(PLTREL) 

REL

0x00000017 

(JMPREL) 

0xb550

0x00000011 

(REL) 

0xb4e0

0x00000012 

(RELSZ) 

112 

0x00000013 

(RELENT) 

0x6ffffffe 

(VERNEED) 

0xb400

0x6fffffff 

(VERNEEDNUM) 

3

0x6ffffff0 

(VERSYM) 

0xb0ec

0x00000000 

(NULL) 

(3)修改和创建必要的文件。

cp 

-aexamples/bootfloppy/etc/* 

/home/tekkamanninja/working/nfs/rootfs/etc/

cd../../nfs/rootfs/etc/

1、增加为SHELL导入全局变量的文件/etc/profile

[tekkamanninja@Tekkaman-Ninjaetc]$kwriteprofile

/etc/profile:

system-wide 

.profile 

file 

for 

theBourneshells

echo

Processing/etc/profile..."

no-op

Set 

search 

librarypath

Setsearchlibrarypathin/etc/profile"

export 

LD_LIBRARY_PATH=/lib:

/usr/lib 

userpath

Setuserpathin/etc/profile"

PATH=/bin:

/sbin:

/usr/bin:

/usr/sbin

PATH 

PS1 

#注意:

ash除了SHELL变量外,支持\u、\h、\W、\$、\!

、\n、\w、\nnn(ASCII字符对应的八进制数)

#以及\e[xx;

xxm 

(彩色特效)等等!

#而且前面还要多加一个 

'

\'

SetPS1in 

/etc/profile"

exportPS1="

\\e[05;

32m[$USER@\\w\\a]\\$\\e[00;

34m"

Done"

2、增加初始化文件

[tekkamanninja@Tekkaman-Ninjaetc]$kwriteinittab

sysinit:

/etc/init.d/rcS

respawn:

-/bin/login

restart:

/sbin/init 

ctrlaltdel:

/sbin/reboot

shutdown:

/bin/umount 

-a 

-r

/sbin/swapoff 

-a

[tekkamanninja@Tekkaman-Ninjaetc]$kwritefstab

proc 

/procprocdefaults00

none 

/tmpramfsdefaults00

mdev 

/devramfsdefaults00

sysfs 

/syssysfsdefaults00

3、增加初始化脚本

[tekkamanninja@Tekkaman-Ninjaetc]$kwriteinit.d/rcS

----------mountall"

/bin/mount 

----------Startingmdev......"

/bin/echo 

/sbin/mdev 

>

/proc/sys/kernel/hotplug

-s

*********************************************************"

TekkamanNinja2440Rootfs(nfs)2008.2"

LoveLinux!

!

@@LoveKeKe!

"

********************************************************"

4、删除备份文件

[tekkamanninja@Tekkaman-Ninjaetc]$rm*~init.d/*~

5、为mdev创建配置文件

[tekkamanninja@Tekkaman-Ninjaetc]$vimdev.conf

创建一个mdev.conf文件,内容可有可无。

(4)为使用用户登录功能移植TinyLogin

1、下载

从 

下载tinylogin-snapshot.tar.bz2,并解压.

tar-xjvftinylogin-snapshot.tar.bz2

2、修改tinyLogin的Makefile

[tekkamanninja@Tekkaman-Ninjasource]$cdtinylogin

[tekkamanninja@Tekkaman-Ninjatinylogin]$kwriteMakefile

指明tinyLogin使用自己的算法来处理用户密码

USE_SYSTEM_PWD_GRP 

false

...... 

CROSS 

=/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-

CC 

$(CROSS)gcc

AR 

$(CROSS)ar

STRIPTOOL 

$(CROSS)strip

编译并安装 

[tekkamanninja@Tekkaman-Ninjatinylogin]$ 

makePREFIX=/home/tekkamanninja/working/nfs/rootfsinstall

Abortinginstall 

-- 

Youmustberoot, 

otherwiseIcan'

t.

maketinyloginbesetuidroot,whichwillcauseittofail. 

make:

***[install] 

错误 

1

[tekkamanninja@Tekkaman-Ninjatinylogin]$su

[root@Tekkaman-Ninjatinylogin]#makePREFIX=/home/tekkamanninja/working/nfs/rootfsinstall

[root@Tekkaman-Ninjatinylogin]#exit

-dtinylogin 

Dynamicsectionatoffset0x9670contains21entries:

0x9c40

0x10160

0x8128

0x9070

0x85e0

1430 

0x19740

1064 

0x9818

0x97c8

80 

0x9758

2

0x9606

创建创建帐号及密码文件:

cd 

../../nfs/rootfs/etc/

[tekkamanninja@Tekkaman-Ninjaetc]$ 

[root@Tekkaman-Ninjaetc]# 

/etc/passwd 

;

/etc/shadow 

/etc/group 

.

kwritepasswd

root:

x:

0:

/root:

kwritegroup

root

kwriteshadow

$1$N8K8eEQe$.XkJo3xcsjOE6vo1jW9Nk/:

13923:

99999:

7:

rm 

*~

rm:

是否删除普通文件“group~”?

y

是否删除普通文件“passwd~”?

是否删除普通文件“shadow~”?

[tekkamanninja@Tekkaman-Ninjaetc]$

这 

3个文件是从Host中拷贝过来的,只留下root帐号。

那么现在root的登陆密码和Host的登陆口令一致了,可以登录后再修改以及创建新用户。

( 

若使用以上文件,则root密码为tekkaman)

拷贝必需的动态库文件

[tekkamanninja@Tekkaman-Ninjalib]$ 

-d 

/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/ld* 

cp:

略过目录“/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/ldscripts”

/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libc-2.3.2.so 

.;

/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libc.so.6 

/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libm-* 

/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1