1.如何在ELF 1开发板实现命令行显示中文
2.BusyboxBusybox源码分析-01 | 源码目录结构和程序入口
3.终端模拟器禁止安装软件命令
4.BusyboxBusybox源码分析-02 | init程序
如何在ELF 1开发板实现命令行显示中文
为了实现ELF 1开发板上使用busybox 1..0及以上版本命令行显示中文,命码b命令需要对源码进行修改。令源首先,详解从busybox.net下载busybox-1..1源码,命码b命令然后解压并进入解压后的令源文件夹。使用make defconfig命令保留默认配置,详解eth 源码接着,命码b命令通过make menuconfig进入图形界面编辑,令源选择编译选项并添加locale support支持。详解需要将选项值调整为大于Unicode中最高中文字符的命码b命令值以确保支持所有中文字符。接下来,令源修改printable_string.c和unicode.c文件中的详解特定行以适应中文显示需求。完成修改后,命码b命令执行make和make install编译并安装新版本的令源busybox。最后,详解将新生成的busybox文件复制到开发板的/bin目录并给予执行权限,创建指向busybox的新链接文件以替代原有命令。
为了使修改后的busybox在ELF 1开发板上运行,还需对内核进行相应调整。在执行环境变量设置后,通过make imx6ull_elf1_defconfig和make zImage命令生成并编译新的内核。将新内核文件复制到开发板,并替换原有内核。最后,验证修改效果,溯源码不平整将含有中文名称文件的U盘插入开发板,通过ls命令查看是否能正确显示中文文件名。
通过上述步骤,即可在ELF 1开发板中实现命令行显示中文功能,为用户提供更为便利的交互体验。此方法适用于希望在使用busybox命令行工具时支持中文显示的开发人员。
BusyboxBusybox源码分析- | 源码目录结构和程序入口
Busybox是一个开源项目,遵循GPL v2协议。其本质是将多个UNIX命令集合成一个小型可执行程序,适用于构建轻量级根文件系统,特别是嵌入式系统设计中。版本1..0的Busybox体积小巧,仅为几百千字节至1M左右,动态链接方式下大小更小。其设计模块化,可灵活添加、去除命令或调整选项。
Busybox程序主体在Linux内核启动后加载运行,入口为main()函数,位于libbb/appletlib文件末尾。通过条件分支处理,决定以库方式构建。在函数体中,使用mallopt()调整内存分配参数以优化资源使用。关系卡源码plp接着通过条件宏定义,控制代码编译逻辑,如在Linux内核启动后期加载并运行Busybox构建的init程序。命令行输入时,Busybox会解析参数,执行对应操作。
在源码中,通过char * applet_name表示工具名称,调用lbb_prepare()函数设置其值为“busybox”。之后解析命令行参数,如在mkdir iriczhao命令中,解析到mkdir命令传递给applet_name。配置了FEATURE_SUID_CONFIG宏定义时,会从/etc/busybox.conf文件中解析配置参数。最后,执行run_applet_and_exit()函数,根据NUM_APPLETS值决定执行命令或报错。
在命令行下键入命令后,执行关键操作的函数是find_applet_by_name()和run_applet_no_and_exit()。编译构建并安装Busybox后,可执行程序和命令链接分布在安装目录下。从源码角度,命令有一一对应的执行函数,通过命令表管理命令入口函数。如何阅读系统源码在代码执行逻辑中,首先调用find_applet_by_name()获取命令表数组下标,再传递给run_applet_no_and_exit()执行对应命令。
终端模拟器禁止安装软件命令
free
1.作用
free命令用来显示内存的使用情况,使用权限是所有用户。
2.格式
free[-b|-k|-m][-o][-sdelay][-t][-V]
3.主要参数
-b-k-m:分别以字节(KB、MB)为单位显示内存使用情况。
-sdelay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。
4.应用实例
free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。
#free-b-s5
使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。
Android系统在超级终端下必会的命令大全(一)
busybox
BusyBox是标准Linux工具的一个单个可执行实现。BusyBox包含了一些简单的工具,例如cat和echo,还包含了一些更大、更复杂的工具,例如grep、消字游戏源码find、mount以及telnet。有些人将BusyBox称为Linux工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux的许多工具和命令。
1、BusyBox的诞生
BusyBox最初是由BrucePerens在年为DebianGNU/Linux安装盘编写的。其目标是在一张软盘上创建一个可引导的GNU/Linux系统,这可以用作安装盘和急救盘。
2、busybox的用法
可以这样用busybox
#busyboxls
他的功能就相当运行ls命令
最常用的用法是建立指向busybox的链接,不同的链接名完成不同的功能.
#ln-sbusyboxls
#ln-sbusyboxrm
#ln-sbusyboxmkdir
然后分别运行这三个链接:
#./ls
#./rm
#./mkdir
就可以分别完成了lsrm和mkdir命令的功能.虽然他们都指向同一个可执行程序busybox,但是只要链接名不同,完成的功能就不同,很多linux网站都提供busybox的源代码下载。。
3、配置busybox
busybox的配置程序和linux内核菜单配置方式简直一模一样.熟悉用makemenuconfig方式配置linux内核的朋友很容易上手.
#cpbusybox-1..tar.gz/babylinux
#cd/babylinux
#tarxvfzbusybox-1..tar.gz
#cdbusybox-1.
#makemenuconfig
下面是需要编译进busybox的功能选项。
GeneralConfiguration应该选的选项
Showverboseappletusagemessages
RuntimeSUID/SGIDconfigurationvia/etc/busybox.conf
BuildOptions
BuildBusyBoxasastaticbinary(nosharedlibs)
这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使它正常工作.
InstallationOptions
Don’tuse/usr
这个选项也一定要选,否则makeinstall后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,makeinstall后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向它的链接.
其它选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。
保存。
4、编译并安装busybox
#make
#makeinstall
编译好后在busybox目录下生成子目录_install,里面的内容:
drwxr-xr-x2rootroot月:bin
rwxrwxrwx1rootroot月:linuxrc->bin/busybox
drwxr-xr-x2rootroot月:sbin
其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接.
Android系统在超级终端下必会的命令大全(二)一、安装和登录命令
reboot1.作用
reboot命令的作用是重新启动计算机,它的使用权限是系统管理者。
2.格式
reboot[-n][-w][-d][-f][-i]
3.主要参数
-n:在重开机前不做将记忆体资料写回硬盘的动作。
-w:并不会真的重开机,只是把记录写到/var/log/wtmp文件里。
-d:不把记录写到/var/log/wtmp文件里(-n这个参数包含了-d)。
-i:在重开机之前先把所有与网络相关的装置停止。
mount
1.作用
mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。
2.格式
mount-a[-fv][-tvfstype][-n][-rw][-F]devicedir
3.主要参数
-h:显示辅助信息。
-v:显示信息,通常和-f用来除错。
-a:将/etc/fstab中定义的所有文件系统挂上。
-F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。
-f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。
-tvfstype:显示被加载文件系统的类型。
-n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。
4.应用技巧
在Linux和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分访问的。要访问CD-ROM上的文件,需要将CD-ROM设备挂装在文件树中的某个挂装点。如果发行版安装了自动挂装包,那么这个步骤可自动进行。在Linux中,如果要使用硬盘、光驱等储存设备,就得先将它加载,当储存设备挂上了之后,就可以把它当成一个目录来访问。挂上一个设备使用mount命令。在使用mount这个指令时,至少要先知道下列三种信息:要加载对象的文件系统类型、要加载对象的设备名称及要将设备加载到哪个目录下。
(1)Linux可以识别的文件系统
◆Windows/常用的FAT文件系统:vfat;
◆WinNT/的文件系统:ntfs;
◆OS/2用的文件系统:hpfs;
◆Linux用的文件系统:ext2、ext3;
◆CD-ROM光盘用的文件系统:iso。
虽然vfat是指FAT系统,但事实上它也兼容FAT的文件系统类型。
(2)确定设备的名称
在Linux中,设备名称通常都存在/dev里。这些设备名称的命名都是有规则的,可以用“推理”的方式把设备名称找出来。例如,/dev/hda1这个
IDE设备,hd是HardDisk(硬盘)的,sd是SCSIDevice,fd是FloppyDevice(或是Floppy
Disk?)。a代表第一个设备,通常IDE接口可以接上4个IDE设备(比如4块硬盘)。所以要识别IDE硬盘的方法分别就是hda、hdb、hdc、
hdd。hda1中的“1”代表hda的第一个硬盘分区
(partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。此外,可以直接检查/var/log/messages文件,在该文件中可以找到计算机开机后系统已辨认出来的设备代号。
(3)查找挂接点
在决定将设备挂接之前,先要查看一下计算机是不是有个/mnt的空目录,该目录就是专门用来当作挂载点(MountPoint)的目录。建议在/mnt里建几个/mnt/cdrom、/mnt/floppy、/mnt/mo等目录,当作目录的专用挂载点。举例而言,如要挂载下列5个设备,其执行指令可能如下(假设都是Linux的ext2系统,如果是WindowsXX请将ext2改成vfat):
软盘===>mount-text2/dev/fd0/mnt/floppy
cdrom===>mount-tiso/dev/hdc/mnt/cdrom
SCSIcdrom===>mount-tiso/dev/sdb/mnt/scdrom
SCSIcdr===>mount-tiso/dev/sdc/mnt/scdr
不过目前大多数较新的Linux发行版本(包括红旗Linux、中软Linux、MandrakeLinux等)都可以自动挂装文件系统,但RedHatLinux除外。
BusyboxBusybox源码分析- | init程序
在Linux内核启动后期,init线程执行的第一个用户空间程序是init,这个程序在Busybox源码中的实现由/init目录下的init.c编译而成,其入口点为init_main()。在init_main()函数中添加了标识代码,验证了这一过程。实际上,当Busybox编译安装后,会通过链接指向../bin/busybox来执行init。 分析init程序,当CONFIG_FEATURE_USE_INITTAB配置启用时,会依据/etc/inittab文件中的配置进行操作;若文件不存在或未启用该配置,init将执行默认行为,如运行INIT_SCRIPT和启动"askfirst" shell。而BusyBox的init不支持运行级别,sysvinit是需要的选项来处理运行级别管理。 Linux支持7个运行级别:0:停机状态,等同于关机,不可作为默认运行级别。
1:单用户模式,用于系统维护,禁止远程登录。
2:多用户无网络模式。
3:多用户有网络模式,常见运行级别。
4:保留,未使用。
5:X图形界面,登录后进入。
6:正常关闭并重启,同样不能作为默认运行级别。
可以通过runlevel命令查看当前运行级别,如在Ubuntu系统中,运行runlevel命令会显示当前的运行级别。