《鸟哥Linux私房菜》读书笔记0\1\2\3\4章


一、计算机硬件和Linux的诞生(对应第0、1章):

1.内存是必经之路,输入输出和CPU,所有数据都要通过内存!
2.单位:
数据容量容量:1024; 1GB内存=102410241024B
CPU频率速度单位:1000;1GHz=100010001000Hz(次每秒)
网络传输速度单位:1000;20M带宽=20Mbps=20100010008bps=20/8MBps=2.5MB/s
ps:买了一块500G硬盘,生产商按1000算,500
100010001000/1024/1024/1024G=466G
ps:百兆网口和千兆网口说的是带宽
100M带宽=100Mbps=100/8MB/s=12.5MB/s(实际在11M左右)
1000M带宽=1000Mbps=1Gbps=1000/8MB/s=125MB/s(实际在16M左右)
注意:下电影取决于视频平台服务器的上传速度,说明16M/s已经到达瓶颈了,你就是万兆宽带也是一样

3.操作系统的角色:
在这里插入图片描述
CPU是硬件的大脑,CPU中有指令集,指令集用来操控硬件,
人可以通过机器语言(101010)向CPU传达指令,让CPU控制管理硬件。

为了有效地管理硬件,人们开发了操作系统。
操作系统就是人和硬件的双向通讯官。

把控制、管理硬件的任务,交给内核吧!
人该怎么给内核下发命令呢?内核提供了系统调用API。
其他应用程序调用这个API,程序员编程也调用API。

内核程序在电脑启动后就常驻在内存中,并受保护。
它的功能有:它可以管理硬件资源(进程管理、内存管理、文件系统管理)
,并提供额外功能(比如网络等),这些功能通过API供程序员调用:
系统调用接口(对编程者/程序提供API)
设备驱动程序(对厂商提供API)

4.Linux的诞生:
批处理操作系统(用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行)---->兼容分时系统---->Multics---->Unix---->BSD---->Minix---->GNU(Emacs\gcc\gllibc\Bash shell)---->Linux


二、磁盘(对应第2章):

两种分区格式:MBR和GPT

1.MBR–Master Boot Record(过时)

在这里插入图片描述
说一说MBR的缺点:
MBR启动引导程序仅446字节,无法存储较多的程序代码
MBR的那一个分区状态表,一旦它坏了,那磁盘就GG了
MBR分区无法支持超过2TB容量的磁盘

分区表仅64字节,4个分区平均下来16字节,在这16个字节中,
因为每个分区用4个字节存储分区的总扇区数,最大能表示2的32次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB
(由于硬盘制造商采用1:1000进行单位换算,因此也有2.2TB一说,别怪他们,他们不是程序员)。
磁盘容量超过2TB以后,分区的起始位置也就无法表示了,不能分配地址,自然也就无法管理了。
所以,MBR不支持超过2.2T的"硬盘",指的是一整块硬盘的所有分区

2.GPT–GUID partition table

GPT是来拯救MBR分区的
过去扇区是512字节,现在有4K的扇区
为了兼容,GPT不再使用固定的扇区划分,而是定义了LBA(Logical Block Address),默认大小512B
而第一个LBA成为LBA0

如下图所示:
在这里插入图片描述
从图中我们可以看出:
与MBR仅仅使用第一个512字节区块来记录不同,
GPT使用了34个LBA区来记录分区信息,最后34个区块用于 备份信息。

下面我们来分别介绍:

LBA0(MBR兼容模块):仿照MBR
前446字节存储了启动引导程序,
在分区表处,放置了表示GPT格式的标志位,
不懂GPT的磁盘管理程序,就不会修改这部分信息了,保护了磁盘。

LBA1(GPT表头记录):记录GPT分区表的实际位置和大小,备份GPT分区块的位置和大小,
同时还有CRC32校验码,操作系统可以根据这个校验码来判断GPT是否正确,若有错误,
还可以通过备份来恢复。

LBA2~33(实际记录分区信息处)
从LBA2 开始,每个LBA记录4个分区信息
一共32个LBA,
所以一共可以有4*32=128个分区信息,

假如 每个LBA 512字节,
每条信息平均占用512B/4=128B,
128B相比MBR每条64B/4=16B来说就大多了,
在这128B里,有64位来记录开始扇区号,有64位来记录结束扇区号,
注意这里是扇区号,而不是柱面号,
这里假设每个扇区512字节而不是4K字节,
那分一个盘最大就可以是:
264 * 512字节
其中,264 表示最大的十进制数,
我们开始扇区号取0,结束扇区号取264,
每个扇区512字节,
最后的结果是8 589 934 592TB。

计算过程如下:
264 * 512B
=263 * 1KB
=233 TB
=8 589 934 592TB
( 注:210=1024
K–>M–>G–>T 是2^30)

GPT也没有主、扩展、逻辑分区的概念,
所以每一个都是独立存在的主分区,
每一个分区都可以用来格式化。

ps:fdisk只能用在MBR,GPT需要使用gdisk或parted命令,但后续fdisk可以支持GPT了,
启动引导程序grub第一版不支持GPT格式,第二版grub才支持。


三、启动流程(对应第2章):

前面我们知道,操作系统可以控制所有硬件,
但你有没有想过:操作系统也是软件呀,
启动机器的时候,又是谁控制电脑去读取硬盘中的操作系统的呢?

嘿嘿,这就要说到计算机的启动程序了,即古老的BIOS和新的UTFI模式。

1.先说古老的BIOS搭配MBR或者GPT

第①步:CMOS/BIOS
CMOS是硬件,是芯片,是集成在主板上,里面有硬件参数的存储器,需要一个电池维持着它。
BIOS,英文名是"Basic Input Output System",听着就是一个软件、程序了,
BIOS就是系统启动计算机主动执行的第一个程序了,如下图:
在这里插入图片描述
这个程序可以设置一些参数,比如:引导介质顺序、安全设置(给BIOS界面加个密码)等。

第②步:上电自检
检测硬件(CPU、内存、显卡、网卡、硬盘等)是否正常通电?

第③步:硬盘
当上电自检硬盘可以正常工作后,接下来就要读取硬盘的内容了。
还记着前面一张图中绿色的方块吗?他在硬盘的第一个扇区,
里面有主引导程序和分区表两部分内容。
主引导程序也叫自举程序、自启动程序,英文叫BootLoader,
Linux的BootLoader是GRUB程序。
GRUB的作用就是为了载入内核程序(操作系统的心脏)

grub:GRand Unified Bootloader
grub 0.x:grub legacy(centos5,6)
grub 1.x:grub2(centos7)

简单说一下:硬盘上电自检完成后,会跳转到硬盘的MBR,载入MBR中的程序BootLoader,
BootLoader指定了内核的位置,之后就可以载入内核,开始启动操作系统。
在这里插入图片描述
BootLoader主要有一下功能:
①提供不同的启动选项
②指向要加载的内核文件
③将启动管理功能转交给其他的启动引导程序(双系统)

第④步:载入内核
内核Kernel中含有大量的驱动程序(让Linux系统识别操作硬件)
所以内核干的第一件事就是——驱动硬件。
第二件事,是启动init进程。
init进程的任务是读取 inittab文件
init进程的PID恒为1,
这里补充一下,PID为0的是内核调度器(Kernel Schedule),
Kernel Schedule是所有进程(包括init进程)的父进程,它把CPU时间分配给各个进程。

这样系统就差不多启动起来了。

PS:上面出现了两个文件,我们简单介绍一下:
/etc/inittab里面写了启动哪一个运行级别?系统初始化需要哪些操作?启动哪些服务?匹配用户名和密码等。
/boot/grub/grub.conf 定义了缺省启动的操作系统,缺省等待时间,操作系统内核在硬盘的位置和是否需要跳转交给其他引导程序(双系统)等。
在这里插入图片描述

2.再说一下UTFI BIOS 搭配GPT启动流程

UTFI是更NB一点的BIOS,更快更强大更安全。


四、动手安装吧(对应第3章):

用VMware WorkStation划分20G硬盘的虚拟机,
因为默认2T以下用MBR分区模式,
当然,也可以用GPT格式,
如果想用GPT,需要这样做:
在这里插入图片描述
下图我们要分配硬盘的分区了,会遇到下面几个分区管理概念:
标准分区:就是我们一直在说的分区,例如/dev/vda1
LVM:是一种可以弹性伸缩的分区,但开始会分配固定容量
LVM简单配置:直接就是用多少,分配多少
Btrfs:是甲骨文公司开发的一种新的分区管理办法
自动生成磁盘分区:
我就点击自动创建它们了:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再简单说一下FileSystem:
在这里插入图片描述
ext2/ext3/ext4:这是Linux早期使用的文件类型。ext3/ext4多了日志功能,
不过由于磁盘容量越来越大,ext系列hold不住了,所以很少使用。
swap:时磁盘用来模拟内存的交换分区,由于交换分区不会使用目录树挂载,所以不需要指定挂载点。
BIOS Boot:是GPT分区用到的东西,如果使用Mbr并不会有这个分区。
xfs:它对于大容量的磁盘管理的非常好,主流。
vfat:同时支持Windows和Linux的文件系统类型,如果你的主机硬盘中是双系统,
为了数据交换,可以创建一个。


五、双系统(对应第3章):

上面说过,上电自检之后,系统读了硬盘第一扇区,里面有启动引导程序和分区表。
现在,因为要装双系统,所以就变成了下图。

在这里插入图片描述
我是先制作了Linux CentOS7 的U盘,开始安装Linux,分区了/和/boot,
还预留了空间,给将来的Windows用。

之后制作了Win10的U盘,安装在了刚才预留的空间里。

现在,我的电脑自启动直接就进入Windows了。
在Windows系统中,我下载了EasyBCD,添加了Linux的启动,如下图:
在这里插入图片描述
ps:因为刚开始学习,代码什么的都不太熟悉,所以用了一些工具,来简化手动的步骤,
网上有人说自己自动进入了Linux系统,实际上,
这些软件的操作就是更改了grub中的一些配置文件,网上也有很多说明可以参考。

大功告成,我们重启电脑!
系统就进入了下图等待选择:

在这里插入图片描述
这个界面就是原理图的绿色方框:这里的引导程序界面是Windows的,
如果点击Windows10,则直接跳转的Windows用户密码登陆界面,
如果点Linux,则重新开始引导,也就是黄色方框,然后进入Linux系统。


六、第一次登陆Linux(对应第4章):

上一篇,我们装好了带GUI界面的Linux:
在这里插入图片描述

1.更改屏幕的分辨率:

应用程序-系统工具-设置-设备-Display-分辨率。
设置-设备-Mouse可以修改鼠标速度。

2.GUI与命令行模式的切换:

但是,服务器一般都是命令行界面,
那我们要做的第一件事就是: X Window命令行界面 的切换。

Linux默认会提供6个终端,其中第1个终端就是上面的图形化界面:

Ctrl + Alt + F2~F6:可以切换另外5个命令行模式的终端
Ctrl + Alt + F1:回到第1个图形界面模式的终端

在命令行模式的终端,输入startx:可以在命令行模式终端中启动图形界面

       注: 本系统用的 CentOS7-x86_64 ,发行版是 7.1.1503 (通过cat /etc/centos-release查询)
                内核版本是: 3.10.0-229.el7.x86_64 (通过uname -r查询)
                这两个信息也可以在 命令行登陆 的时候看到:
                   在这里插入图片描述
                  从这一版的CentOS7开始,已经没有了所谓的 运行级别 的概念,
                  即:要不要开启图形界面,仅仅是要不要加入图形界面的 服务 而已。

                  如果你用的是CentOS 5或者6,就可以看到运行级别的概念:
                  在上一篇系统的引导流程中,CentOS 5或者6的电脑载入linux内核,
                  启动了init进程之后,就会读取/etc/inittab文件,这里面写着每个终端可以选择的运行级别。

3.最常用的快捷键:

Tab:补全(命令、文件、选项)
Ctrl + C:中断正在执行的命令
Ctrl + Z:暂停正在执行的命令
Shift +pageup/pagedown:滚动命令行屏幕(命令屏幕显示不下)
\:命令太长,换行继续输入

4.获取帮助:

- -help:查询曾经使用过的命令的选项
man:书本形式
           主要看NAME、DESCRIPTION、OPTIONS、SEEALSO、FILES
info:超链接形式
           N、P控制节点,回车U控制层U级

5.关机前的准备:

exit Ctrl + D:注销账户

who:看看还有谁在线
netstat -a:看看现在的网络状态
ps -aux:看看后台正在执行的进程

shutdown -h nowpoweroff:现在就关机
shutdown -r nowreboot:现在就重启

6.用Shell远程登陆Linux:

①虚拟机网卡模式:
参考: 桥接、NAT和仅主机模式

桥接模式:就相当于又连了一根网线,主机和虚拟机是同等关系,只是一张网卡负责两台机器。
NAT模式:NAT地址转换,虚拟机是主机的下级,对外用同一个IP。
仅主机模式:仅和主机进行通信。
在这里插入图片描述

②Linux网卡配置命令:
参考: Linux网卡配置

step1:ip address show:查看网卡名称
在这里插入图片描述
step2:vi /etc/sysconfig/network-scripts/ifcfg-eth0:找到网卡文件 --> etc/系统配置/网卡-脚本/网卡名称
在这里插入图片描述
step3:配置网卡信息:
在这里插入图片描述
这里重点注意:

bootproro:static、none还是dhcp
onboot:开机自动启动
type:以太网
ipaddr、netmask、gateway
device:网卡名
name:网络连接名
uuid:唯一标识

step4:重启网卡服务:
systemctl restart network系统控制台,重启网络
service network restart 服务 --> (哪个服务?)网络服务–>(干什么?)重启

step5:ifconfig 查看一下ip地址
在这里插入图片描述

step6:用shell连接:

在这里插入图片描述


补充一下:如果你装了双系统,那第一扇区的MBR就会根据你的选择,跳转到Windows启动程序或者Linux的启动程序,详见标题五、双系统

如果分区表用的是GPT格式的话,还记的上面那张图吗?
LBA0(MBR兼容模块)中,也有启动引导程序,会被读取。
但GPT比MBR更复杂一些,LBA0里的程序只能够提供第一阶段的引导程序,CentOS使用GRUB的启动引导程序,我们需要额外划分出一个"BIOS boot"的分区,这个分区通常2M左右,用来放置其他开机过程所需的程序,这个grub,是第二版grub程序。

https://blog.csdn.net/zhongjin616/article/details/17630357
https://zhidao.baidu.com/question/876823738620239492.html
https://blog.csdn.net/wuneiqiang/article/details/100748536
http://www.voycn.com/article/fenqubiosbootbios-boot-partition

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值