给初学者,讲讲关于Linux操作系统的一些简单介绍。。。

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。

① Linux内核:内核是系统的“心脏”,是运行程序和管理磁盘等硬件设备的核心程序。

② Linux Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接受用户输入的命令,并对其进行解释,最后送入内核去执行,实际上就是一个命令解释器。人们也可以使用Shell编程语言编写Shell程序,这些Shell程序与用其他程序设计语言编写的应用程序具有相同的效果。

③ Linux 文件系统:文件系统是文件存放在磁盘等存储设备上的组织方法。Linux的文件系统呈树型结构,同时它也能支持目前流行的文件系统,如:EXT2、EXT3、FAT、VFAT、NFS、SMB等。

④ Linux 应用程序:同Windows操作系统一样,标准的Linux也提供了一套满足人们上网、办公等需求的程序集即应用程序,包括文本编辑器、X Windows、办公套件、Internet工具、数据库等。

其中,Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。

linux开机的几个流程
POST(加电自检)–>加载BIOS(Basic Input/Output System)–>确定启动设备(Boot sequence)、加载Boot Loader–>加载内核(kernel)初始化init–>运行/sbin/init初始化系统–>打印用户登录提示符

Linux系统有7个运行级别(runlevel):
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

一般来说,用户的登录方式有三种:

(1)命令行登录
(2)ssh登录(SSH是一种网络协议,用于计算机之间的加密登录,这个一般用于远程操作)
(3)图形界面登录

Linux文件权限基本属性
我们可以使用ls -l 命令可以显示文件的属性以及文件所属的用户和组
如:ls -l
drwxrwxr-x 2 linuxidc linuxidc 4096 2月 18 10:59 listem.com
其基本构成是:文件属性 链接数 所有者 所属用户组 最后修改时间 文件名
1.第一个字符代表文件类型,具体字符有:
d 目录

  • 普通文件
    I 软链接,即链接文档(link file)
    b 块设备,装置文件中可供存储的接口设备(可随机存储装置)
    c 字符设备,装置文件中串行端口设备(一次性读取装置)
    s 网络套接字(socket)
    p 管道(piep)
    由此,上面的开头第一个字符为d,说明是一个目录

2.文件权限
Linux 文件的基本权限就有九个,文件类型其后的九个字符三个一组,分别是 owner / group / others 三种身份;各组各有自己的 read / write / execute 权限,均为 r w x 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute),这三个权限的位置不会改变,若没有权限,仅会出现 - 符号。
在这里插入图片描述
想要修改文件权限,我们可以用如下方式修改:
用数字更改
用数字来代表各个权限,则:
读,权限是二进制的100,十进制是4;

写,权限是二进制的010,十进制是2;

执行,权限是二进制的001,十进制是1;

即:各权限的对应数字为:r:4,w:2,x:1

每种身份( owner / group / others )各自的三个权限( r / w / x )数字是需要累加的。

当权限为: [ -rwxrwx— ] 时分数为:

owner = rwx = 4+2+1 = 7

group = rwx = 4+2+1 = 7

others = --- = 0+0+0 = 0

所以当设定权限的变更时,该文件的权限数字就是770。

变更权限的命令的语法为:chmod [选项] xyz 文件名或目录名
以前,我经常很粗暴地一个方法就是直接:chmod 777 XXX

还有就是用字符更改:由于九个权限分别是 user、group、others 三种身份的权限,那么可用 u、g、o 来代表三种身份的权限,此外,用 a 代表 all 表示所有的身份。
则变更权限的命令的语法为:chmod 身份 符号 权限 文件名或目录名,不过我这个没用过,在这里就不说了;有知道这个就好。

Linux的内核裁剪
在Linux内核中增加程序需要完成以下三项工作:

1.将编写的源代码复制到Linux内核源代码的相应目录
(/usr/src/linux-headers-2.6.32-31-generic/drivers/X,其中X为相对应的源码类型:
a.字符设备存在于drivers/char/目录下
b.块设备存放在drivers/block/目录下
c.USB设备则存放在drivers/usb/目录下)
2.在目录的Kconfig文件中增加新源代码对应项目的编译配置选项
3.在目录的Makefile文件中增加对新源代码的编译条目

Makefile,Kconfig和配置工具组成了Linux内核的配置系统。
其中Makefile定义了Linux内核的编译规则,它是大型项目开发的产物。Linux环境下的大型项目开发中,系统被分为很多模块,而这些模块一般会经历几次修改,而在修改后的编译过程中,由于某些文件中存在依赖关系,人工编译效率低(有些文件不需要重新编译)且易出错,Makefile文件便应运而生。Makefile文件定义了模块间的依赖关系,指定文件的编译顺序,以及编译所使用的命令。它和make命令使得项目的源程序文件可以自动编译,提高了软件开发效率。

到此,再谈一下make,它是用来维护程序模块关系和生成可执行程序的工具,它可以根据程序模块的修改情况重新编译链接生成中间代码或最终的可执行程序,省去那些重复的不必要的编译工作,提高编译效率。

Kconfig给用户提供配置选择的功能。通常配置内核会有四种方法,makeconfig(字符界面配置),makemenuconfig(菜单界面配置),makexconfig(依赖QT),makegconfig(依赖GTK+)。makeconfig比较适合专业人员,像初学者比较适合makemenuconfig,让我们重点关注一下它。我之前在学校做过的嵌入式实验就是用makemenuconfig去配置内核的。

当我们运行makemenuconfig时,配置工具会首先分析与体系结构相对应的/arch/xxx/Kconfig文件(xxx为传入的arch参数),它里面包含了除一些与体系结构相关的配置项和配置菜单外,还通过source语句引入了一系列Kconfig,配置工具依据这些Kconfig包含的菜单和项目就可以描绘出一个分层结构。

例如当我们运行makezImagine、makebzImagine等生成映像的命令时,会先检索顶层的Makefie(在arch/xxx/目录下的Makefile为顶层Makefile补充体系结构相关的信息),顶层Makefile的两个主要任务是:产生内核映像文件和内核模块。接着顶层Makefile会去递归地进入内核的各个子目录,然后分别调用子目录中的Makefile(这些Makefile记录编译目标),而进入哪些子目录取决于内核的配置。

当使用makemenuconfig,makeconfig命令时,生成的.config会在源码目录下记录哪些部分被编译入内核,哪些部分被编译为内核模块。简而言之,它是保存内核配置结果的文件。当我们装上Linux系统时,第一次查看源码下的所有文件,会发现没有.config文件,那是因为从来没配置过内核。当你运行makemenuconfig保存并退出时,再次查看就有这个文件了。

配置工具,包括配置命令解释器(对配置脚本中使用的命令进行解释)和配置用户界面(提供字符界面和图形界面),配置工具都是用脚本语言编写的。
关于内核裁剪的具体流程可以去参考这位大佬的博客:https://blog.csdn.net/ds1130071727/article/details/80507813

Linux的系统目录:树状图
在这里插入图片描述
由于目录太多了,这里挑几个主要的来讲就好了:
●root — 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。
●home — 存储普通用户的个人文件;系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。
●bin — 系统启动时需要的执行文件(二进制)
●sbin — 可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行
●proc — 虚拟,存在linux内核镜像;保存所有内核参数以及系统配置信息
●usr — 用户目录,存放用户级的文件
●boot — 引导加载器所需文件,系统所需图片保存于此
●lib — 根文件系统目录下程序和核心模块的公共库
modules — 可加载模块,系统崩溃后重启所需模块
●dev — 设备文件目录;存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。
●etc — 配置文件;不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。
●var–放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
●mnt — 临时用于挂载文件系统的地方。一般情况下这个目录是空的,而在我们将要挂载分区时在这个目录下建立目录,再将我们将要访问的设备挂载在这个目录上,这样我们就可访问文件了。
●tmp — 临时文件目录,系统启动后的临时文件存放在/var/tmp
●lost+found — 在文件系统修复时恢复的文件
●/opt:给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下

路径说明
绝对路径:
由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
相对路径:
相对于目前路径的文件名写法。 例如 ./home/dmtsai ;反正开头不是 / 就属于相对路径的写法

如何先进入/var/spool/mail/目录,再进入到/var/spool/cron/目录内?
命令:

cd /var/spool/mail
cd ../cron
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章