嵌入式Linux入门9:Linux系统使用

Linux系统使用涉及层面很广,无法一一涉猎,所以只做一个大纲性的概括。

一、GNU/Linux

一般通常意义的Linux系统,包括了内核以及根文件系统里的各种工具、库、文件,等。

linux只是一个操作系统内核,GNU则提供了大量的自由软件供用户使用。

Linux系统上大部分工具都来自GNU:gcc、makefile、emacs、X窗口gnome

细节方面可参考:
GNU/Linux命名争议:http://zh.wikipedia.org/wiki/GNU/Linux%E5%91%BD%E5%90%8D%E7%88%AD%E8%AD%B0
kernel官网:http://www.kernel.org/
GNU官网:http://www.gnu.org/

二、命令使用

1、命令分类

命令分类大约在如下这些:
编译有关:Binutils: gcc gdb ar nm ld strip
常用基本:Coreutils: ls cat ln mv nice sleep rm
系统相关:Utils-linux: mount dmesg fdisk kill last mkfs
其它开发用到的:flex、bison、readline
有趣的小工具:figlet、sl

值得一提的是man工具(帮助工具),通过man工具可以查看命令、函数的使用方法。

man有不同的分类。如printf是一个命令,也是一个库函数。执行man printfman 3 printf命令会得到不同的结果,前面打开的是关于命令printf的帮助信息,而后者则是库函数printf帮助信息。因此需要了解一下分类。这些分类如下:
1 可执行程序或Shell命令
2 系统调用
3 由库提供的库函数调用
4 特殊文件
5 文件格式,如配置文件格式
6 游戏
7 杂项,如man 7 man
8 系统管理工具
9 其它

2、命令使用技巧

返回上一次目录:cd –

emacs/命令行/u-boot快捷键:
行首:ctrl+a 行尾ctrl+e
上页(上一命令):ctrl+p 下页(下一命令): ctrl+n
删除光标后面所有字符:ctrl+k
前移:ctrl+f 后移:ctrl+b
删除光标字符:ctrl+d

3、文件属性

linux每个文件有所有者、所在组、其它组的概念,每一组都有读(r)、写(w)、执行(x)三个属性。用ls -l可以查看,位于输出内容左侧。如下:

1
-rwxrw-r‐-1 root root 1213 Feb 2 09:39 hello

此文件表示hello由root用户创建,拥有读、写、执行属性(rwx),与root同组的用户有读、写(rw)属性,其它组有读(r)属性。

可以用chown修改文件拥用者,chmod改变文件属性。

另外,最前面的是链接文件或其它的,示例:

1
2
lrwxrwxrwx 1 root root 25 Jun 17  2017 /lib/ld-linux.so.2 -> i386-linux-gnu/ld-2.23.so* // l表示链接文件
crw-rw-rw- 1 root tty 5, 0 Jun 21 09:18 /dev/tty // c表示字符设备

三、工具/库编译方法

Linux下编译一般分三步骤(提前是把工具/库压缩包解压^_^):

1、配置:./configure

如安装目录、依赖头文件/库、禁止某些特性,使能某些特性。此步骤会生成Makefile。如果已带有Makefile,则无须此步。可以通过./configure –help查看详细信息。常用的是–prefix(安装目录前缀)。

2、编译:make

如系统是多核的,一般可以使用make -j4,即使用4线程编译。类似的可用8线程编译。此操作可以加速编译速度。注意,如果是使用虚拟机安装linux,而物理机器性能不好的话,还是慎用多线程编译。

3、安装:make install

该命令会将编译产生的文件安装到前面指定的目录。如头文件、静态库/动态库、帮助文件。

4、编译示例:

示例一、openssl-0.9.8e
1、./configure linux-elf-arm -DB_ENDIAN linux:'arm-inux-gcc' --prefix=/home/latelee/bin/sip_new/ssl
(注1:在该平台上不支持动态库,如果添加shared选项,会在configure后面提示的。)
(注2:–prefix是指定openssl的静态库及头文件目录,后面编译其它库时要用到)
2、make
3、make install
示例二、libosip2-3.6.0
1、./configure --prefix=/home/latelee/bin/sip_new/libosip2 CC=arm-inux-gcc --host=arm-linux -enable-static
2、make
3、make install

四、系统配置

1、环境变量文件:~/.bashrc/etc/profile

修改后需要执行source ~/.bashrc或重新登陆,以使其生效。

2、对于多人共用服务器情况,个人的配置不要在/etc目录下进行,因为可能会影响其它人的使用。

3、服务配置
一般地,系统服务的配置文件都位于/etc目录下,下面列出几个典型的服务:
samba配置文件:/etc/samba/smb.conf
nfs配置文件:/etc/exports
telnet配置文件:/etc/xinetd.d/telnet
DNS配置文件:/etc/resolv.conf

详情参考samba、nfs、telnet等的使用相关文章。

五、高阶:LFS

LFS是Linux From Scratch的简称,即从头开始构建一个Linux系统。

官方网站为:http://www.linuxfromscratch.org/

通过LFS,我们可以了解Linux系统内部的实现细节。比工具包分类,编译方法,grub、系统配置文件。

另外,基于ubuntu系统的构建方法有debootstrap,使用该方法比较简单。

此项仅对于有兴趣研究的人,不了解LFS并不影响Linux的日常使用。

六、细节/杂项

1、Linux与Windows差异:
1)、大小写敏感
2)、无后缀名概念
3)、隐藏文件文件前带“.”

2、权限、属性
1)、root权限、普通用户权限
2)、可执行属性、链接属性

七、小结

Linux的使用涉及面广,大家可以逐个知识点学习,对于命令的熟悉,其实日常的使用积累已经可以达到,不必集中时间专门学习,在需要使用时可搜索其使用方法,并做笔记。而对于Linux系统与Windows的差异,则需要比较注意(比如在Windows下用svn检出的库文件可能没有链接属性,可执行文件没有可执行属性,等等)。

李迟 2017.7.26 周三