最全的Linux教程,Linux从入门到精通
======================
-
linux从入门到精通(第2版)
-
Linux系统移植
-
Linux驱动开发入门与实战
-
LINUX 系统移植 第2版
-
Linux开源网络全栈详解 从DPDK到OpenFlow
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
POST
上电自检–>加载BIOS–>加载主引导记录–>BootLoader
启动–>加载内核–>运行开机自启程序–>系统启动
开机自检
linux
开机加电后,系统开始开机自检,该过程主要对计算机各种硬件设备进行检测,如CPU
、内存、主板、硬盘、CMOS
芯片等。
如果出现致命故障则停机,并且由于初始化过程还没完成,所以不会出现任何提示信号;
如果出现一般故障则会发出声音等提示信号,等待故障清除;若未出现故障,加电自检完成。
当打开计算机电源,计算机会首先加载基本输入输出系统(Basic Input Output System
)。BIOS
程序一般被存放在主板ROM
(只读存储芯片)之中、即使在关机或掉电以后该程序也不会丢失。
BIOS
中包含了CPU
的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PNP
特性等等。在此之后,计算机就知道应该去读取哪个硬件设备了。
加载主引导记录
主引导记录(MBR
,Master Boot Record
)是计算机开机以后访问硬盘时所必须要读取的第一个扇区,位于硬盘的第0
柱面第0
磁道第一扇区,大小为512字节。
**MBR
中最主要的功能就是存储、启动、加载启动引导程序。**诸如LILO、GRUB这些引导程序(BootLoader)都是直接安装在MBR中。
BootLoader启动
BootLoader
是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
在嵌入式系统中,通常并没有像BIOS
那样的固件程序(注,有的嵌入式CPU
也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader
来完成。
加载内核
GRUB
把内核加载到内存后展开并运行, 此时GRUB
的任务已经完成,接下来内核将会接管并完成,同时把initrd
加载到内存中并运行。
initrd
文件其实是一个虚拟的根文件系统,里面有bin
、lib
、lib64
、sys
、var
、etc
、sysroot
、 dev
、proc
、tmp
等根目录,它的功能就是将内核与真正的根建立联系,内核通过它加载根文件系统的驱动程序,然后以读写方式挂载根文件系统,至此, 内核加载完成。
执行init
内核加载进内存运行并以读写方式挂载完根文件系统后,执行第一个用户进程init
,init
首先运行/etc/init/rcS.conf
脚本,对系统做初始化设置。init
进程的一大任务,就是去运行这些开机启动的程序。
Linux预置七种运行级别(0-6),Linux允许为不同的场合,分配不同的开机启动程序。
在该过程中主要执行以下操作:
- 获得网络环境
- 挂载设备
- 开机启动画面Plymouth(取替了过往的 RHGB)
- 判断是否启用SELinux
- 显示于开机过程中的欢迎画面
- 初始化硬件
- 用户自定义模块的加载
- 配置内核的参数
- 设置主机名
- 同步存储器
- 设备映射器及相关的初始化
- 初始化软件磁盘阵列(RAID)
- 初始化 LVM 的文件系统功能
- 检验磁盘文件系统(fsck)
- 设置磁盘配额(quota)
- 重新以可读写模式挂载系统磁盘
- 更新quota(非必要)
- 启动系统虚拟随机数生成器
- 配置机器(非必要)
- 清除开机过程当中的临时文件
- 创建ICE目录
- 启动交换分区(swap)
- 将开机信息写入/var/log/dmesg文件中
打印登录提示符
系统初始化完成后,init
给出用户登录提示符(login
)或者图形化登录界面,用户输入用户和密码登陆后,系统会为用户分配一个用户uid
和组gid
,这两个ID
是用户的身份标识,用于检测用户运行程序时的身份验证。
登录成功后,整个系统启动流程运行完毕!
总结
Linux的启动其实是一个矛盾的过程,系统要启动就必须先运行程序,而程序的运行又需要系统的启动,所以早期科学家们想到了一个巧妙的办法,即将一段小程序直接装载进内存(只读内存)里,这样计算机一通电程序内存里的程序就可以正常运行了。
致谢
本文参考以下文章并根据自己理解所写:
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新