构建基本的嵌入式Linux根文件系统Word下载.docx
- 文档编号:1553194
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:14
- 大小:25.75KB
构建基本的嵌入式Linux根文件系统Word下载.docx
《构建基本的嵌入式Linux根文件系统Word下载.docx》由会员分享,可在线阅读,更多相关《构建基本的嵌入式Linux根文件系统Word下载.docx(14页珍藏版)》请在冰点文库上搜索。
tusemknod,unlessyourunthisScriptasroot!
#
mknod-m600dev/consolec51
mknod-m666dev/nullc13
mnttmpvar"
mkdirmnttmpvar
chmod1777tmp
mkdirmnt/etcmnt/jffs2mnt/yaffsmnt/datamnt/temp
mkdirvar/libvar/lockvar/logvar/runvar/tmp
chmod1777var/tmp
homerootboot"
mkdirhomerootboot
done"
在你想要建立根文件系统的地方,运行:
[tekkamanninja@Tekkaman-Ninjanfs]$./mkroot
creatintrootfsdir......
bindevetclibprocsbinsysusr
mnttmpvar
homerootboot
done
[tekkamanninja@Tekkaman-Ninjanfs]$cdrootfs/dev/
[tekkamanninja@Tekkaman-Ninjadev]$su
口令:
[root@Tekkaman-Ninjadev]#mknod-m600consolec51;
mknod-m666nullc13;
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
[tekkamanninja@Tekkaman-Ninjabusybox-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-
[tekkamanninja@Tekkaman-Ninjabusybox-1.9.1]$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下的选项全选
[tekkamanninja@Tekkaman-Ninjabusybox-1.9.1]$make
......
LINKbusybox_unstripped
Tryinglibraries:
cryptm
Librarycryptisneeded
Librarymisneeded
Finallinkwith:
[tekkamanninja@Tekkaman-Ninjabusybox-1.9.1]$makeinstall
我是动态编译所以查看一下需要的动态库
[tekkamanninja@Tekkaman-Ninjabusybox-1.9.1]$/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(bytes)
0x00000015(DEBUG)0x0
0x00000003(PLTGOT)0xbc0ec
0x00000002(PLTRELSZ)2976(bytes)
0x00000014(PLTREL)REL
0x00000017(JMPREL)0xb550
0x00000011(REL)0xb4e0
0x00000012(RELSZ)112(bytes)
0x00000013(RELENT)8(bytes)
0x6ffffffe(VERNEED)0xb400
0x6fffffff(VERNEEDNUM)3
0x6ffffff0(VERSYM)0xb0ec
0x00000000(NULL)0x0
(3)修改和创建必要的文件。
[tekkamanninja@Tekkaman-Ninjabusybox-1.9.1]$cp-aexamples/bootfloppy/etc/*/home/tekkamanninja/working/nfs/rootfs/etc/
[tekkamanninja@Tekkaman-Ninjabusybox-1.9.1]$cd../../nfs/rootfs/etc/
1、增加为SHELL导入全局变量的文件/etc/profile
[tekkamanninja@Tekkaman-Ninjaetc]$kwriteprofile
#/etc/profile:
system-wide.profilefilefortheBourneshells
echo
Processing/etc/profile..."
#no-op
#Setsearchlibrarypath
Setsearchlibrarypathin/etc/profile"
exportLD_LIBRARY_PATH=/lib:
/usr/lib
#Setuserpath
Setuserpathin/etc/profile"
PATH=/bin:
/sbin:
/usr/bin:
/usr/sbin
exportPATH
#SetPS1
#注意:
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-a
----------Startingmdev......"
/bin/echo/sbin/mdev>
/proc/sys/kernel/hotplug
mdev-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,并解压.
[tekkamanninja@Tekkaman-Ninjasource]$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
3、编译并安装
[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
我是动态编译所以查看一下需要的动态库
[tekkamanninja@Tekkaman-Ninjatinylogin]$/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-readelf-dtinylogin
Dynamicsectionatoffset0x9670contains21entries:
0x0000000c(INIT)0x9c40
0x0000000d(FINI)0x10160
0x00000004(HASH)0x8128
0x00000005(STRTAB)0x9070
0x00000006(SYMTAB)0x85e0
0x0000000a(STRSZ)1430(bytes)
0x00000003(PLTGOT)0x19740
0x00000002(PLTRELSZ)1064(bytes)
0x00000017(JMPREL)0x9818
0x00000011(REL)0x97c8
0x00000012(RELSZ)80(bytes)
0x6ffffffe(VERNEED)0x9758
0x6fffffff(VERNEEDNUM)2
0x6ffffff0(VERSYM)0x9606
创建创建帐号及密码文件:
[tekkamanninja@Tekkaman-Ninjatinylogin]$cd../../nfs/rootfs/etc/
[tekkamanninja@Tekkaman-Ninjaetc]$su
[root@Tekkaman-Ninjaetc]#cp/etc/passwd.;
cp/etc/shadow.;
cp/etc/group.
[root@Tekkaman-Ninjaetc]#kwritepasswd
root:
x:
0:
/root:
/bin/sh
[root@Tekkaman-Ninjaetc]#kwritegroup
root
[root@Tekkaman-Ninjaetc]#kwriteshadow
$1$N8K8eEQe$.XkJo3xcsjOE6vo1jW9Nk/:
13923:
99999:
7:
[root@Tekkaman-Ninjaetc]#rm*~
rm:
是否删除普通文件“group~”?
y
是否删除普通文件“passwd~”?
是否删除普通文件“shadow~”?
[root@Tekkaman-Ninjaetc]#exit
[tekkamanninja@Tekkaman-Ninjaetc]$
这3个文件是从Host中拷贝过来的,只留下root帐号。
那么现在root的登陆密码和Host的登陆口令一致了,可以登录后再修改以及创建新用户。
(
若使用以上文件,则root密码为tekkaman)
拷贝必需的动态库文件
[tekkamanninja@Tekkaman-Ninjalib]$cp-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”
[tekkamanninja@Tekkaman-Ninjalib]$cp/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.;
cp-d/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.
[tekkamanninja@Tekkaman-Ninjalib]$cp/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libm-*.;
cp-d/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libm.s*.
[tekkamanninja@Tekkaman-Ninjalib]$cp/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 构建 基本 嵌入式 Linux 文件系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)