|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
要多动手,不要怕什么搞坏了怎么办,你不搞坏,不去动手,就永远不会有收获,既然你在linux中是自由的,那就发挥自己的权利;
uClinux操纵体系是尺度Linux的一个分支,是专门针对没有MMU(存储办理单位)的CPU而配制的操纵体系,而且专为嵌进式体系做了很多小型化的事情。今朝uClinux经常使用的使用程序库是mC-libc和mClibc.
经由过程makemenuconfig来设置uClinux时,能够看到,这里可供选择的Shell有:sash、minix-shell、nwsh、bash、Other.
个中sash对应的代码为uClinux-Samsung/user/sash,minix-shell对应的代码为uClinux-Samsung/user/sh,nwsh对应的代码为uClinux-Samsung/user/nwsh,bash对应的代码为uClinux-Samsung/user/bash,Other则暗示可选择别的的Shell,次要是指Busybox内里的几个Shell.
个中:
minix-shell在mC-libc和mClibc下都能够编译经由过程,且都能够较好地利用,但功效不是很强;nwsh在mC-libc和mClibc下都能够编译经由过程,但都事情不一般,没法进进命令行提醒符;bash则不管在mC-libc仍是mClibc下都没法编译经由过程,其布局不合适uClinux.本文次要会商怎样利用Busybox中的Shell.
Busybox中的shell
Busybox最早为DebianLinux的安装盘所写,并将大批Linux下的工具集成到一个可实行文件中。今朝Busybox供应了100多个命令的功效,但它的可实行文件只要几百KB,为嵌进式体系供应了一个对照完全并且体积较小的POSIX运转情况。不外这些命令的参数选项要比本来完全的GNU命令少。
Busybox中集成出来的Shell有以下几个。
①Lash:很小,加起来有10k,十分合适实行命令,撑持管道和重定向,但不撑持BourneShell语法,没法注释剧本。
②Hush:也十分小,18k摆布,撑持BourneShell语法,可以很好地处置if/then/else/fi布局语句,可是处置不了像for/do/done大概case/esac等轮回语句。
③Msh:加起来有30k摆布,可以处置for/do/done、case/esac等轮回语句。只需是Bourneshell可以做的,Msh一样平常都能做到,它的语法与BourneShell语法大概不完整不异,但年夜多半BourneShell语法都能被Msh注释。Msh是用vfork来创立新历程的,以是适于uClinux操纵体系。
④Ash:在默许设置下约莫有60k摆布,是Busybox里最完全的Shell,但没法在uClinux上编译经由过程。
综上所述,Busybox里的Msh是今朝uClinux下最好的Shell.
移植:
makemenuconfig,从头设置uClinux内核。设置时选失落sash,然后选中以下几项:
BusyBox
shell
msh:Minixshell
MSHis/bin/sh
往失落sash后,就必需在Busybox内里把本来sash下经常使用的一些外部命令编译出去,比方ls、cp等基础命令,这些本来是sash的外部命令,如今换了Shell,就必需选用Busybox内里的命令作为自力的小使用程序来利用。本文当选择了以下的经常使用命令:clear、mkdir、ping、cat、cp、ln、ls、ifconfig等,个中的ls和ifconfig命令上面的几项功效必要全体选择。
编译的时分有个毛病,是指msh.c中没有_NSIG这个界说,须在msh.c中加上如许一句:#define_NSIG255,以后可编译经由过程。
编译后,在uClinux-Samsunguserusybox目次下编译出一个单个的自力实行程序,叫做busybox.exe.将编译后的busybox.exe拷贝到uClinux-Samsungomfshome目次下,从头编译内核(不必再设置内核)。将编译好的uClinux操纵体系内核下载运转,利用Busybox中的MshShell及各类命令。利用Busybox也很复杂,只需建一个标记链接就能够了。可是因为uClinux操纵体系默许的根文件体系romfs是只读的,只要/tmp和/var两个目次下是以假造ram盘的办法完成的可读写目次(体系失落电后,里边保留的内容全丧失),故在举行标记链接时必需链接到这两个可读写的目次下,比方ln-s/bin/busybox/tmp/ls,那末,实行/tmp/ls的时分,Busybox就会实行ls的功效,也会依照ls的体例处置命令行参数。
运转乐成后,能够发明这个Shell分歧于本来的sash,它的提醒符为#,撑持高低键翻查命令,但还不撑持Tab键补齐功效。
再找到uClinux-dist/config/config.in文件举行编纂,将该文件中的
boolsh:tabcompletionCONFIG_USER_BUSYBOX_TAB_COMPLETION
boolsh:usernamecompletionCONFIG_USER_BUSYBOX_USERNAME_COMPLETION
改成:
boolsh:tabcompletionCONFIG_USER_BUSYBOX_COMMAND_TAB_COMPLETION
boolsh:usernamecompletionCONFIG_USER_BUSYBOX_COMMAND_USERNAME_COMPLETION
然后再makemenuconfig,选择Busybox的Shell特征后从头编译,再下载运转,就能够完成Tab键补齐功效了。
别的还能够增添MshShell的别的功效,好比ls命令的以黑色显现分歧属性文件的功效等,这里不再胪陈
</p>
要明白学好linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在使用初期。 |
|