1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,18 五月 2026,Linux应用与开发,Linux系统使用深入,源码编译安装软件包,rpm包从源码到制作到发布需要一定的时间,并不一定是最新的版本,可能会有bug,rpm包是制作者已经编译成二进制格式的程序,在编译的时候使用的特征禁用的特征,用户难以选择,源码安装可以获得最新版本和自主选择安装特性,但需要准备开发编译环境,yum grouplist 有个Development tools的组,yum groupinstall Development tools,Linux系统使用深入,源码编译安装C+软
2、件包,configure,配置指挥文档,检查依赖的开发库,开发工具,运行环境,选择编译安装源程序时的特性,尽量不编译不需要的特性,减少程序体积,用makefile.in生成makefile,同时生成config.log,makefile,编译指挥文档,保存程序的各种配置信息,gcc依赖这个文件,make install,Linux系统使用深入,源码编译安装perl软件包,perl Makefile.PL,make,make install,Linux系统使用深入,源码编译安装axel,pscp axel-2.4.tar.gz root192.168.23.148:/333/7/,tar zxf
3、 axel-2.4.tar.gz,cd axel-2.4,less README,./configure-help,./configure-prefix=/usr/local/axel,Linux系统使用深入,源码编译安装axel,./configure,./configure-strip=0,make,make install,man axel,axel-n-3-o/tmp XXXXXX,Linux系统使用深入,源码编译安装httpd,pscp httpd-2.2.29.tar.gz root192.168.23.148:/333/7/,tar zxf httpd-2.2.29.tar.gz
4、cd httpd-2.2.29,less INSTALL,./configure-prefix=/usr/local/apache,config.log,make,make install,rpm-e-nodeps httpd,apachectl1 start,Linux系统使用深入,源码编译安装httpd,hash-r,./apachectl start,访问 192.168.23.148,netstats-tn,cd config htdocs,Linux系统使用深入,软件下载,sourceforge.org,Linux系统使用深入,Linux系统进阶,启动,加电自检(硬件BIOS完成)
5、BIOS读取引导次序,BIOS读取引导设备的主引导记录(MBR),BIOS运行主引导记录的主引导程序(BootLoader),主引导程序识别磁盘分区加载操作系统内核(Kernel),内核检测硬件并加载对应驱动,内核启动/sbin/init进程,进入用户空间,Linux系统使用深入,Linux系统进阶,启动,内核如何找到/sbin/init?,内核如果没有驱动,是否可以访问磁盘分区?,Linux系统使用深入,Linux系统进阶,启动,驱动全放在内核中会有什么问题?,Linux系统使用深入,Linux系统进阶,内核的种类,单内核 Linux,在嵌入式系统上非常有优势,微内核 Solaris Wi
6、ndows,Linux系统使用深入,Linux系统进阶,内核的种类,单内核采用模块化设计来解决内核庞大的问题,内核对象Kernel Object(KO)/lib/modules/内核版本号/,单内核采用动态加载外围的内核模块实现内核精简,Linux系统使用深入,Linux系统进阶,内核模块,Linux系统使用深入,Linux系统进阶,内核模块,Linux系统使用深入,Linux系统进阶,内核模块,Linux系统使用深入,Linux系统进阶,内核模块,Linux系统使用深入,Linux系统进阶,驱动程序都通过模块放在了内核外围,没有磁盘的驱动程序,如何去访问磁盘?,Linux系统使用深入,Lin
7、ux系统进阶,驱动程序都通过模块放在了内核外围,没有磁盘的驱动程序,如何去访问磁盘?,Linux系统使用深入,Linux系统进阶,在内核与要访问的设备之间加一个文件,专门存储这种驱动程序,linux系统在安装的最后,会动态收集linux系统内核运行需要的最基本模块有哪些,并根据需求动态生成一个中间文件系统,存储这些基本模块,减少体积,Linux系统使用深入,Linux系统进阶,内核也通过根文件系统的方式访问存储内核运行所需基础模块的中间文件系统,这个中间文件系统上有跟文件系统,磁盘上也有跟文件系统会不会冲突?,Linux系统使用深入,Linux系统进阶,根切换,在内核完成加载后就进行跟切换,切
8、换到磁盘真正的根文件系统,chroot/DIR/,mkdir/333/rootdir,mkdir/333/rootdir/bin,cp/bin/bash/test/rootdir/bin,Linux系统使用深入,Linux系统进阶,根切换,在内核完成加载后就进行跟切换,切换到磁盘真正的根文件系统,ldd/bin/bash 查询bash依赖的库文件,Linux系统使用深入,Linux系统进阶,根切换,在内核完成加载后就进行跟切换,切换到磁盘真正的根文件系统,mkdir/mkdir/333/rootdir/lib64,cp/lib64/libtinfo.so.5/333/rootdir/lib64
9、cp/lib64/libdl.so.2/333/rootdir/lib64,cp/lib64/libc.so.6/333/rootdir/lib64,cp/lib64/ld-linux-x86-64.so.2/333/rootdir/lib64,chroot/333/rootdir,Linux系统使用深入,Linux系统进阶,linux内核在进行根切换的时候机制类似,切换完成后,中间文件系统中的几个目录迁移进磁盘根目录,/proc,/sys,/dev,Linux系统使用深入,Linux系统进阶,存储内核所需基本模块的文件系统存储于内存中,为内存文件系统(ramfs,也称作ramdisk),i
10、nitramfs(initrd),Linux系统使用深入,Linux系统进阶,启动,加电自检(硬件BIOS完成),BIOS读取引导次序,BIOS读取引导设备的主引导记录(MBR),BIOS运行主引导记录的主引导程序(BootLoader),主引导程序识别磁盘分区加载操作系统内核(Kernel),内核读取initramfs加载启动所需模块,内核检测硬件并加载对应驱动,内核启动/sbin/init进程,进入用户空间,Linux系统使用深入,Linux系统进阶,init启动后要开始加载服务和其他用户空间所需的进程了,运行级别,0 halt 关机,1 single user mode 单用户模式,2
11、multi user mode 多用户模式,不支持NFS系统,3 multi user mode 文本多用户模式,4 reserved 系统保留模式,5 multi user mode 图形多用户模式,6 reboot 重启,Linux系统使用深入,Linux系统进阶,运行模式由/sbin/init的配置文件/etc/inittab决定,Linux系统使用深入,Linux系统进阶,查看,运行,级别,的,命令,runlevel,who-r,Linux系统使用深入,Linux系统进阶,回到bootloader,LILO(Linux Loader)不能引导8G以后的磁盘空间,嵌入式系统很适用,GRU
12、B(Grand Unified Bootloader),阶段1:MBR,用于引导阶段2,阶段1.5:识别不同文件系统,阶段2:/boot/grub,Linux系统使用深入,Linux系统进阶,回到bootloader,Linux系统使用深入,Linux系统进阶,ls-l/etc/grub.conf,cat/etc/grub.conf,Linux系统使用深入,Linux系统进阶,default=0 默认第一个title启动项,timeout菜单的等待时间,hiddenmenu隐藏菜单,splashimage 背景图片,title 不同启动项的名字,root(hd0,0)内核文件所在的设备,gru
13、b把所有硬盘识别为hd,光盘为cdrom,表示第一块磁盘的第一个分区,kernel 内核路径及传递给内核的参数(cat/proc/cmdline),initrd ramfs文件d路径,Linux系统使用深入,Linux系统进阶,grub中的内核和内存文件系统的路径为什么在,“,/,”,目录下,不是应该在/boot下吗?,Linux系统使用深入,Linux系统进阶,mount,/dev/sda1 on/boot说明/boot是挂在独立分区上的,Linux系统使用深入,Linux系统进阶,如果/boot没有挂在独立的分区,grub中内核和内存文件系统的路径就变成了/boot/*,Linux系统使用
14、深入,Linux系统进阶,把隐藏菜单去掉,修改启动项的标题,修改超时时间为10秒,执行sync同步命令后重启看效果,Linux系统使用深入,Linux系统进阶,直接在启动的时候修改grub,e进入编辑界面,编辑内核传入参数,quiet后加上,“,single,”,可以直接修改启动系统的运行级别,保存后用b键boot,Linux系统使用深入,Linux系统进阶,grub密码保护,全局,保护,在,第一个,titile,前,加入,密码,明文,password,明文,密文 grub-md5-crypt,命令,生成,密码,password-md5,密文,单个,启动项,保护,,在,启动项,的,后边,下一个
15、启动项,的,前边,加入,password,Linux系统使用深入,Linux系统进阶,grub MBR,修复,fdisk-,l,查看,分区,破环/boot,所,在,分区,的MBR,dd if=/dev/zero of=/dev/sda count=1 bs=400,sync,Linux系统使用深入,Linux系统进阶,grub,指定boot,分区,root(hd0,0),安装,grub,setup(hd0),退出,grub,quit,Linux系统使用深入,Linux系统进阶,grub,损坏,修复,破坏,grub,配置,文件,mv/boot/grub/grub.conf/boot/grub/
16、grub.confb,reboot,Linux系统使用深入,Linux系统进阶,指定,boot,所,在,分区 root(hd0,0),指定,内核,kernel/vmlinuz-2.6-32-358.,指定,内存,文件,系统,initrd/initramfs-2.6.32-358.,boot,Linux系统使用深入,Linux系统进阶,内核,加载,的,过程?,Linux系统使用深入,Linux系统进阶,/,sbin/,init,upstart,支持,服务,的,并发,启动,配置,文件/,etc/inittab,/etc/init/*.conf,Linux系统使用深入,Linux系统进阶,/etc/
17、inittab,id:runlevels:action:process,id,标识符,runlevels:,运行,的,级别,action:,运行,的,条件,process:,运行,的,程序,si:sysinit:/etc/rc.d/rc/XXXX?,Linux系统使用深入,Linux系统进阶,action,initdefault:,设定,默认,的,运行,级别(,只,执行,一次,),sysinit:,系统,初始化(,只,执行,一次,),wait:,等待,级别,切换,完成,后,执行,(,可,执行,多次),ctrlaltdel:,设置,响应,快捷键,powerfail:,停电,时,执行,的,操作,p
18、owerok,wait:,来电,时,执行,的,操作,respawn:,一旦,程序,终止,,重新,启动,ca:ctrlaltdel:/sbin/shutdown-t3-r now,Linux系统使用深入,Linux系统进阶,more/etc/init/control-alt-delete.conf,快捷键,映射,more/etc/init/rcS.conf,系统,初始化,脚本,exec/etc/rc.d/rc.sysinit,Linux系统使用深入,/etc/rc.d/rc.sysinit,激活UDV,和S,elinux,利用/,etc/sysctl.conf,设定,内核,参数,设定,时钟,加载
19、键盘,映射,启用,交换,分区,设置,主机名,Linux系统使用深入,/etc/r,c,.d/rc.sysinit,检测,根,文件,,并,用,读写,模式,重新,挂载,激活RAID、LVM,设备,启用,磁盘,配额,读取/,etc/fstab,检查,并,挂载,其他,文件,系统,清理,过期,的,锁,文件,,pid,文件,Linux系统使用深入,Linux系统进阶,more/etc/init/rc.conf,不,同,级别,运行,的,脚本,exec/etc/rc.d/rc$RUNLEVEL,more/etc/rc.d/rc,Linux系统使用深入,Linux系统进阶,more/etc/rc.d/rc,f
20、or i in/etc/rc$i.d/K*,$i stop,for i in,/etc/rc$i.d/,S*,$i start,按,数字,次序,启动,和,关闭,,优先级,控制,关闭,的,服务,文件,都是,真正,服务,的,链接 ls-l,/etc/init.d/,Linux系统使用深入,Linux系统进阶,more/etc/rc.d/rc.3/K*,服务,脚本,服务,脚本,都,要求,有,四个,参数,start|stop|restart|status,./K01smartd status,more K01smartd,Linux系统使用深入,Linux系统进阶,more K01smartd,#ch
21、kconfig:,runlevels SS KK,可以,用于,chkconfig,命令,自动,创建,链接,到,rc.d,目录,下,runlevels,表示,默认,创建,为S,开头,的,级别,-,表示,没有,级别,为S,开头,的,链接,SS,表示,启动,的,优先级,KK,表示,关闭,的,优先级,SS,和KK,加,起来,接近99,,表示,先,开始,后,关闭,,后,开始,先,关闭,,防止,依赖,Linux系统使用深入,Linux系统进阶,写一个,类似,的,服务,脚本 myservice:,#!/bin/bash,#chkconfig:12345 20 79,#description:my servi
22、ce,case$1 in,status),echo staring,touch,;,.,Linux系统使用深入,Linux系统进阶,cp myservice/,etc/rc.d/init.d/myservice,chkconfig-list,显示,当前,所有,的,独立,守护,服务,进程,chkconfig-,add,脚本,名,添加,脚本,到,服务,chkconfig-add myservice,ls/etc/rc.d/rc3.d,chkconfig-del myservices,chkconfig-level,Linux系统使用深入,Linux系统进阶,/etc/rc.d/rc.local,这个,脚本,是,系统,启动,后,自动,启动,的,最后,一个,脚本,,可以,存放,需,开机,运行,但,不,方便,做,为,服务,或,守护,进程,的,脚本,END,!,






