文章目录 Linux发行版简介学习Linux的必备硬件知识 关键硬件器件——CPU关键硬件器件——存储关键硬件器件——内存其他一些查看硬件信息的命令 Linux开机过程(以Ubuntu16.04为例) 阶段1:BIOS阶段2:boot Loader阶段3:kernel阶段4:systemd阶段5:应用软件 Linux常用命令 基本命令 文件管理文本操作磁盘管理系统管理网络通信压缩解压查询硬件信息的命令多命令协作 git操作命令 Reference
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核的操作系统。
Linux 的发行版简单说就是将 Linux 内核与应用软件做一个打包。知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux
Linux发行版主要有Debian与Redhat两大系列
Debian
Redhat
发行版代表
Debian,Ubuntu,Linux Mint
Redhat,CentOS,Fedora
软件包管理方式
dpkg(管理本地的软件包,无法处理依赖关系)、 apt(联网下载软件包,自动处理依赖关系)
rpm(管理本地的软件包,无法处理依赖关系)、 yum(联网下载软件包,自动处理依赖关系)
安装包格式
deb
rpm 关键硬件器件——CPU
CPU是计算机的运算核心和控制核心,部分CPU内置核芯显卡 x86架构:Intel、AMD、海光、兆芯等芯片ARM架构:飞腾、鲲鹏等
查看CPU的信息 关键硬件器件——存储
类型 固态硬盘(SSD):读写速度快,价格较高机械硬盘(HDD):读写速度慢,价格便宜,容量大EMMC:多用于低端嵌入式设备,容量较小,云终端的EMMC有4GB、8GB、32GB几种规格
查看存储设备信息的命令 关键硬件器件——内存
目前最新是DDR4技术,速率可达3.2GHz
分为板载和插槽两种接口
云桌面的瘦终端采用1-2GB内存,胖终端标配4G或8GB内存,服务器一般是16GB*N的内存
查看内存的命令 其他一些查看硬件信息的命令
查看PCI设备信息:
查看USB设备信息:
查看网卡信息:、、 命令行中输入,用浏览器查看从上图可看出开机过程包含了BIOS(firmware)、boot loader、kernel、systemd这4个阶段,再加上启动应用软件,共5个阶段虚拟中运行的Ubuntu则没有BIOS(firmware)和boot loader这两个阶段。 阶段1:BIOS
BIOS是(Basic Input Output System),是一组固化到计算机内主板上一个ROM芯片上的程序。它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。X86架构才有BIOS,ARM架构没有BIOS
DMI
DMI (Desktop Management Interface)是帮助收集电脑系统信息的管理系统。通过DMI可以在Linux中查询到包括CPU、内存、扩展槽等在内的系统配置信息。DMI通常将上述信息存储在BIOS中一个大小的DMI数据区中
云终端的产品ID、产品型号、硬件版本、SN都存储在DMI中,可通过命令查看。
BIOS与boot loader MBR与GPT
MBR:Master Boot Record,主引导扇区,它在硬盘上的三维地址为**(柱面,磁头,扇区)=(0,0,1)**。MBR中存放着boot loader(446字节)、分区表(64字节)和硬盘有效标志(55AA) 。MBR最多只能支持4个主分区,无法支持超过2T的硬盘。
GPT: GUID Partition Table ,是一个实体硬盘的分区结构。最多支持 128 个分区,允许大于 2 TB 的卷容量
Legacy BIOS 与UEFI BIOS
Legacy BIOS:传统BIOS。Legecy BIOS从MBR中寻找boot loader。目前云桌面的服务器大多还是用Legacy BIOS。
UEFI BIOS:只支持64位系统且磁盘分区必须为GPT模式,可引导大于2T的硬盘,更快的启动速度。 UEFI BIOS会自动搜索硬盘根目录的EFI目录,而boot loader就在EFI文件夹中。目前云终端都采用UEFI BIOS。
**总结:**BIOS从硬盘的特定位置寻找boot loader 阶段2:boot Loader
主要功能 提供选择菜单,让使用者选择不同的开机项加载内核,启动操作系统将开机管理功能转交其他boot loader负责
常见的boot loader有、、,云桌面的终端和服务器都使用GRUB
为什么平时一般见不到BootLoader的界面?因为超时时间被设为0了,直接从默认的启动项启动
修改终端的grub超时时间:vim.tiny /boot/grub/custom.cfg,将第一行的set timeout=0改为set timeout=3
查看grub.cfg:vi /boot/grub/grub.cfg
修改grub配置以及grub配置文件的各种设置选项:
https://help.ubuntu.com/community/Grub2/Setup
https://www.jianshu.com/p/a24d51276a82
https://blog.csdn.net/mr_zing/article/details/41055617
https://blog.csdn.net/dc_show/article/details/47396649
https://blog.csdn.net/shana_8/article/details/81455657
gurb.cfg
中,会用到和两个文件
是可引导的、压缩的内核。“vm”代表 “Virtual Memory”,z代表用gzip压缩
是个RAM Disk(通过软件将一部分RAM模拟为硬盘的技术)的映像文件,里面包含了linux启动时需要的目录、可执行文件、内核驱动模块等。 阶段3:kernel
当前流行的Linux版本一般都采用模块化的内核,这种方式可以在不重新编译构建内核的情形下增加功能模块(ko)。但考虑一种场景,如果磁盘是EMMC的,但相应驱动没有编译进kernel,kernel就无法访问磁盘了,更谈不上加载ko了。这时候就需要用到RAM Disk技术了。
载入和到内存中
kernel启动后自解压,将的内容挂载为根文件系统
kernel从init根文件系统中加载所需功能模块
kernel会根据中“root=XXX”部分所指定的内容创建一个根设备,然后将根文件系统以只读的方式挂载,并切换到真正的根文件系统上
调用systemd程序,进入系统初始化阶段。
详细流程可以参考
Bootloader引导内核后,进入第三个阶段:内核。这边并不打算介绍内核的函数调用流程,因为目前我自己在工作中还没遇到需要解决的问题。今天想要介绍的是内核阶段可能存在两个根文件系统。 阶段4:systemd
是 系统中最新的初始化系统,它主要的设计目标是克服 固有的缺点,提高系统的启动速度。
在硬件驱动成功后,kernel 会主动呼叫 systemd 。从右图可以看出,、、、存在依次依赖的关系,按照依赖关系并发启动包含的服务后,完成图形界面的启动
会执行,自研脚本可以从中进行启动
阶段5:应用软件
使用可以查看进程树。可以看到的PID为1,所有应用软件都是从派生出来的
学习完linux开机的5个阶段,请大家思考下,我们学习这部分知识的目的是什么,能解决什么问题?
1 开机速度的优化
2 定位BUG在哪个阶段发生
3 调试,例如grub选择内核,编辑启动参数
4 功能开发,例如自研脚本的加入,systemd服务的编写
基本命令 文件管理
ls, mv, cp, rm, chown, chmod, mkdir, find, touch, ln
ls
mv
mv参数设置与运行结果
命令格式
运行结果
mv 文件名 文件名
将源文件名改为目标文件名
mv 文件名 目录名
将文件移动到目标目录
mv 目录名 目录名
目标目录已存在,将源目录 移动到目标目录;目标 目录不存在则改名
mv 目录名 文件名
出错
cp
rm
chown
chmod
mkdir
find
touch
ln
文本操作
grep, cat, wc, cut, awk, sed, tr
grep
cat
wc
cut
awk
https://www.runoob.com/linux/linux-comm-awk.html
sed
tr
磁盘管理
cd, pwd, df, du, dd, fdisk, mount/umount, mkfs
cd
pwd
df
du
dd
fdisk
mount/umount
mkfs
系统管理
top, ps, pstree, date, shutdown, reboot, passwd
top
ps
pstree
date
shutdown
reboot
passwd
网络通信
ping, ssh, scp, ifconfig
ping
ssh
scp
ifconfig
压缩解压
tar, gzip/gunzip, zip/unzip
tar
gzip/gunzip
zip/unzip
查询硬件信息的命令
lscpu
free
lspci
lsusb 多命令协作
管道:
http://c.biancheng.net/view/3131.html
https://www.jianshu.com/p/9c0c2b57cb73
输入输出重定向:,,
git操作命令
git是一个开源的分布式版本控制系统,Linux的开源代码一般都采用git管理
git常用命令
菜鸟教程 https://www.runoob.com/linux/linux-tutorial.html
鸟哥的私房菜 http://linux.vbird.org/
Linux就该这么学 https://www.linuxprobe.com/
Pro Git https://git-scm.com/book/zh/v2
版权声明
本文仅代表作者观点,不代表xx立场。
本文系作者授权xxx发表,未经许可,不得转载。
发表评论