介绍
常见的操作系统(windows、IOS、Android、MacOS, Linux, Unix);
一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可;目前很多企业级的项目(c/c++/php/python/java/go)都会部署到 Linux/unix 系统上。
吉祥物
xLinux 之父: Linus Torvalds ; Git 创作者 ; 世界著名黑客。
主要发行版: Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain[蝶变]、Fedora、SuSE、OpenSUSE等
与Unix的关系
应用领域
个人桌面领域
- 传统 linux 应用薄弱的环节
- 随着 ubuntu、fedora [fɪˈdɔ:rə] 等优秀桌面环境的兴起,比重在增加
服务器领域
- 应用是最强
- linux 免费、稳定、高效等特点在这里得到了很好的体现
- 尤其在一些高端领域尤为广泛(c/c++/php/java/python/go)
嵌入式领域
- 主要应用:机顶盒、数字电视、网络电话、程控交换机、手机、PDA、智能家居、智能硬件等都是其应用领域;
- 以后在物联网中应用会更加广泛;
- linux 运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百 KB 等特点,使其近些年来在嵌入式领域的应用得到非常大的提高
目录结构
【在 Linux 世界里,一切皆文件】
linux 的文件系统是采用级层式的树状目录结构;
序号 | 名称 | 介绍 | 备注 |
1 | /:根目录 | 一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始; 当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录 | |
2 | /bin [常用]: (/usr/bin 、 /usr/local/bin) | 是 Binary 的缩写, 这个目录存放着最经常使用的命令; 可执行二进制文件的目录,如常用的命令 ls、 tar、 mv、 cat 等 | |
3 | /sbin : /usr/sbin 、 /usr/local/sbin | s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序 | |
4 | /home [常用] | 存放普通用户的主目录,在 Linux 中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名; 系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下 ~ 表示当前用户的家目录 ~edu 表示用户 edu 的家目录 | |
5 | /root [常用] | 该目录为系统管理员,也称作超级权限者的用户主目录; 系统管理员root的家目录 | |
6 | /lib | 系统开机所需要最基本的动态连接共享库 其作用类似于 Windows 里的 DLL 文件,几乎所有的应用程序都需要用到这些共享库 | |
7 | /lost+found | 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件 | |
8 | /etc [常用] | 所有的系统管理所需要的配置文件和子目录
| |
9 | /boot [常用] | 存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件; 系统引导管理器: /boot/grub | |
10 | /proc [不能动] | 这个目录是一个虚拟的目录 它是系统内存的映射,访问这个目录来获取系统信息 | |
11 | /srv [不能动] service 缩写 | 该目录服务启动之后需要访问的数据目录 如 www 服务需要访问的网页数据存放在 /srv/www 内 | |
12 | /sys [不能动] | 这是 linux2.6 内核的一个很大的变化该目录下安装了 2.6 内核中新出现的一个文件系统 | |
13 | /tmp | 一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下 | |
14 | /dev | 类似于 windows 的设备管理器,把所有的硬件用文件的形式存储; 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount/dev/cdrom /mnt | |
15 | /media [常用] | linux 系统会自动识别一些设备; 例如 U 盘、光驱等等,当识别后, linux 会把识别的设备挂载到这个目录下 | |
16 | /mnt [常用] | 系统提供该目录是为了让用户临时挂载别的文件系统的; 我们可以将外部的存储挂载在/mnt/上,然后进入该目录,就可以查看里的内容 d:/myshare | |
17 | /opt | 这是给主机额外安装软件所存放的目录 默认为空; 如安装 ORACLE 数据库就可放到该目录下 | |
18 | /var [常用] | 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下包括各种日志文件 例如: /var/log:随时更改的日志文件 /var/spool/mail:邮件存放的目录 /var/run:程序或服务启动后,其 PID 存放在该目录下 | |
19 | /selinux [security-enhanced linux] | SELinux 是一种安全子系统,它能控制程序只能访问特定文件, 有三种工作模式,可以自行设置. | |
20 | /usr [常用] | 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与 windows 下的 program files 目录 例如: /usr/bin:存放应用程序 /usr/share:存放共享数据 /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件 /usr/local:存放软件升级包 ;这是另一个给主机额外安装软件所安装的目录;一般是通过编译源码方式安装的程序 /usr/share/doc:系统说明文件存放目录 /usr/share/man:程序说明文件存放目录 /usr/local [常用] |
下载安装
centos下载
以网易镜像站来做演示:
1、首先我们输入网址 欢迎访问网易开源镜像站 进到网易开源镜像站。
这里给我们提供了很多资源,大家可根据自己的需求去 search!
2、我们点击进入 CentOS 这一选项,可以看到有很多版本供大家选择,这里我们选 7.8 版本。
3、点击版本后进入这一目录,我们点击进入这一选项。
4、选择“X86”就好。
5、在这里我们可以看到有不同版本的镜像,可以根据自己的需求进行下载。
安装CentOS7.6
检查 BIOS 虚拟化支持
新建虚拟机
配置虚拟机的内存
配置处理器, 分配的处理器内核多,虚拟机速度快
配置网络
正式安装 Centos 系统
说明: 选择第一个,不需要 Test this media ,否则检测时间很长
选择安装软件,默认是最小化安装.
软件选择(套餐):需要什么,安装好后也可以再安装。
也可以根据需要勾选附加项, 比如这里我勾选了兼容库和基本开发工具(jdk,gcc), 安装好后,也可以卸载,更新等操作
【备注:实际生产中选用最小安装;】
安装位置,进行分区操作
【备注:注意要耐心等待,不要鼠标乱点】
先指定/boot 分区,即引导分区,大小为 1G, 然后点击添加挂载点.
swap 分区设备类型和文件系统
[备注:实际生产过程中打开 Kdump]
设置网络和主机名, 安装好后也可以设置
设置你的主机名,然后点击完成即可.
点击开始安装就开始了
注意:在实际生产环境,密码一定要复杂,否则容易造成安全隐患
创建其它用户,也可以安装成功后,再创建
完成后面的设置
默认以普通用户登录,可以切换成 root, 点击未列出
连接网络,就可以上网了
contos安装mysql5.7(CentOS7.6)
1.新建文件夹/opt/mysql,并cd进去 : mkdir /opt/mysql 2.运行wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,下载mysql安装包 PS:centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。 3.运行tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar 4.运行rpm -qa|grep mari,查询mariadb相关安装包 5.运行rpm -e --nodeps mariadb-libs,卸载 6.然后开始真正安装mysql,依次运行以下几条 rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm 7.运行systemctl start mysqld.service,启动mysql 8.然后开始设置root用户密码 Mysql自动给root用户设置随机密码,运行grep "password" /var/log/mysqld.log可看到当前密码 9.运行mysql -u root -p,用root用户登录,提示输入密码可用上述的,可以成功登陆进入mysql命令行 10.设置root密码,对于个人开发环境,如果要设比较简单的密码(生产环境服务器要设复杂密码),可以运行 set global validate_password_policy=0; 提示密码设置策略 (validate_password_policy默认值1,) 11.set password for 'root'@'localhost' =password('hspedu100'); 12.运行flush privileges;使密码设置生效 |
Centos7启动流程分析
第一步、硬件启动阶段
这一步和CentOS6差不多,详细请看图
第二步、GRUB2引导阶段
从这一步开始,CentOS6和CentOS7的启动流程区别开始展现出来了。CentOS7的主引导程序使用的是grub2。
这一步的流程:显示加载两个镜像,再加载MOD模块文件,把grub2程序加载执行,接着解析配置文件/boot/grub2/grub.cfg,根据配置文件加载内核镜像到内存,之后构建虚拟根文件系统,最后转到内核。
在这里grub.cfg配置文件已经比较复杂了,但并不用担心,到了CentOS7中一般是使用命令进行配置,而不直接去修改配置文件了。不过我们可以看到grub.cfg配置文件开头注释部分说明了由/etc/grub.d/目录下文件和/etc/default/grub文件组成。
一般修改好配置后都需要使用命令grub2-mkconfig -o /boot/grub2/grub.cfg,将配置文件重新生成。
第三步、内核引导阶段
这一步与CentOS6也差不多,加载驱动,切换到真正的根文件系统,唯一不同的是执行的初始化程序变成了/usr/lib/systemd/systemd
第四步、systemed初始化阶段(又叫系统初始化阶段)
CentOS7中我们的初始化进程变为了systemd。执行默认target配置文件/etc/systemd/system/default.target(这是一个软链接,与默认运行级别有关)。然后执行sysinit.target来初始化系统和basic.target来准备操作系统。接着启动multi-user.target下的本机与服务器服务,并检查/etc/rc.d/rc.local文件是否有用户自定义脚本需要启动。最后执行multi-user下的getty.target及登录服务,检查default.target是否有其他的服务需要启动。
注意:/etc/systemd/system/default.target指向了/lib/systemd/system/目录下的graphical.target或multiuser.target。而graphical.target依赖multiuser.target,multiuser.target依赖basic.target,basic.target依赖sysinit.target,所以倒过来执行。
System概述(了解):systemd即为system daemon,是Linux下的一种init软件,开发目标是提供更优秀的框架以表示系统服务间的以来关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell系统开销的效果,最终代替现在常用的System V与BSD风格的init程序。
与多数发行版使用的System V风格的init相比,systemd采用了以下的新技术:A.采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;B.用Cgroup代替PID来追踪进程,即使是两次fork之后生成的守护进程也不会脱离systemd的控制。
unit对象:unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其他与init相关的信息。(也就是CentOS6中的服务器启动脚本)
(1)./etc/systemd/system/default.target
这是一个软链接,和默认运行级别相关
# ll /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 36 12月 9 15:47 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target
我们可以到这个目录下看看
# cd /lib/systemd/system/
# ls *.target
anaconda.target local-fs.target runlevel2.target
basic.target machines.target runlevel3.target
bluetooth.target multi-user.target runlevel4.target
cryptsetup-pre.target network-online.target runlevel5.target
cryptsetup.target network-pre.target runlevel6.target
ctrl-alt-del.target network.target shutdown.target
default.target nfs-client.target sigpwr.target
emergency.target nss-lookup.target sleep.target
final.target nss-user-lookup.target slices.target
getty-pre.target paths.target smartcard.target
getty.target poweroff.target sockets.target
graphical.target printer.target sound.target
halt.target rdma-hw.target suspend.target
hibernate.target reboot.target swap.target
hybrid-sleep.target remote-cryptsetup.target sysinit.target
initrd-fs.target remote-fs-pre.target system-update.target
initrd-root-fs.target remote-fs.target timers.target
initrd-switch-root.target rescue.target time-sync.target
initrd.target rpcbind.target umount.target
iprutils.target rpc_pipefs.target virt-guest-shutdown.target
kexec.target runlevel0.target
local-fs-pre.target runlevel1.target
这里可以看到runlevel开头的target文件,对应着CentOS6的启动级别,不过一样是软链接,指向了同目录下的其他文件,也算一种向下兼容吧
# ll runlevel*.target
lrwxrwxrwx. 1 root root 15 4月 5 22:10 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 4月 5 22:10 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 4月 5 22:10 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 4月 5 22:10 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 4月 5 22:10 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 4月 5 22:10 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 4月 5 22:10 runlevel6.target -> reboot.target
可以看到我的default.target与runlevel5.target指向的是同一个文件,可以看出我的默认运行级别是5。
(2)./usr/lib/systemd/system/
这个目录存储每个服务的脚本,类似CentOS6的/etc/init.d/。
(2)./run/systemd/system/
系统执行过程中产生的脚本。
(3)./etc/systemd/system/
类似于CentOS6的/etc/rc.d/rc#.d/SXX类文件的功能,管理员建立的执行脚本,大部分是软链接
Over
制作自己的min linux(基于CentOS7.6)
首先,我们在现有的linux添加一块大小为20G的硬盘 点击完成,就OK了, 可以使用 lsblk 查看,需要重启 添加完成后,点击确定,然后启动现有的linux(centos7.6)。 通过fdisk来给我们的/dev/sdb进行分区
接下来,我们对/dev/sdb的分区进行格式化 [root@localhost ~]# mkfs.ext4 /dev/sdb1 [root@localhost ~]# mkfs.ext4 /dev/sdb2 创建目录,并挂载新的磁盘 #mkdir -p /mnt/boot /mnt/sysroot #mount /dev/sdb1 /mnt/boot #mount /dev/sdb2 /mnt/sysroot/ 安装grub, 内核文件拷贝至目标磁盘 #grub2-install --root-directory=/mnt /dev/sdb #我们可以来看一下二进制确认我们是否安装成功 #hexdump -C -n 512 /dev/sdb #cp -rf /boot/* /mnt/boot/ 修改 grub2/grub.cfg 文件, 标红的部分 是需要使用 指令来查看的
7.创建目标主机根文件系统 #mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root} 8.拷贝需要的bash(也可以拷贝你需要的指令)和库文件给新的系统使用 #cp /lib64/*.* /mnt/sysroot/lib64/ #cp /bin/bash /mnt/sysroot/bin/ 9.现在我们就可以创建一个新的虚拟机,然后将默认分配的硬盘 移除掉,指向我们刚刚创建的磁盘即可. 这时,很多指令都不能使用,比如 ls , reboot 等,可以将需要的指令拷贝到对应的目录即可 如果要拷贝指令,重新进入到原来的 linux系统拷贝相应的指令即可,比较将 /bin/ls 拷贝到 /mnt/sysroot/bin 将/sbin/reboot 拷贝到 /mnt/sysroot/sbin root@hspedu100 ~]# mount /dev/sdb2 /mnt/sysroot/ [root@hspedu100 ~]# cp /bin/ls /mnt/sysroot/bin/ [root@hspedu100 ~]# cp /bin/systemctl /mnt/sysroot/bin/ [root@hspedu100 ~]# cp /sbin/reboot /mnt/sysroot/sbin/ 再重新启动新的min linux系统,就可以使用 ls , reboot 指令了 |
其他
CUP内核的确认
开始-->任务管理器-->性能-->打开资源监视器-->2CPU,16个内核
常见的镜像站
阿里云开源镜像站:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
清华大学开源软件镜像站:清华大学开源软件镜像站 | Tsinghua Open Source Mirror
中科大开源软件镜像站:USTC Open Source Software Mirror
网易云开源镜像站:欢迎访问网易开源镜像站
搜狐开源镜像站:Index of /
华为开源镜像站:华为开源镜像站_软件开发服务_华为云
提示生成复杂密码
生成随机密码 - 密码生成器 - 密码批量生成器
网络连接方式