【系统工程】linux操作系统简介与安装

(由于以下内容纯经手打,有些过于白话,且省事尽量无配图,不明之处敬请留言!)

哈哈哈,说到系统工程师,对linux操作系统,这绝对不陌生,没错这应该是必备技能;

当然大家对它也是很了解了,但博主为了让自己后人,还有真正的初学者多点慰藉,今天还是决定结合工作的需求,来简单的介绍一下linux操作系统的历史特点和它的安装;

一、linux的发展历史  

说到linux,就不得不说unix,让然Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。不过对于unix,早在16954年,贝尔实验室就计划开发一种多用户多进程多层次的multics操作系统,而其中的参与者之一Ken Thompson在1969年成功开发一个”星际旅行”的操作系统,便开始了unix的原型;之后呢这期间一路波折,直到1984年,Richard stallman创立了GNU项目,开始明确开放一个完全自由的unix操作系统为目标;在之后就是1991年的linux之父——Linus Torvalds,开发并发布了最初的linux 0.01版本;并于1994年加入GNU,同年发布了linux 1.0版本;1996年发布了linux 2.0版本,linux进入使用阶段,用户已经高达350万;

1998年,哈哈,我们最熟知的radhat公司宣布商业支持计划,是的,再次之前所有服务都是免费的,而现在一套radhat正版系统还不便宜!不过也正是这个原因,导致了linux迅猛的发展并强大,直到如今,已经成为每个行业最不可或缺的操作系统之一,另一个牛逼的是windows;

二、linux特性  

说到linux牛逼,那就不得不说它为啥牛,从1991年问世到现在,linux在服务器、桌面、行业定制等各级领域都获得了长足的发展;

尤其是在服务器领域,不要说了,几乎所有的大型网络服务集群,都是linux的宿主家园了,一致被业界认为前途无量啊;

而在嵌入式领域,也是牛逼的不行,linux具有优秀的移植性、丰富的代码资源、广泛对硬件的支持啊,其95%的C语言代码编辑,机器的高级语言啊,移植起来兼容性很强不是,很多硬件产品都是基于linux、unix开发;

另一方面,linux是完全免费开源的啊,我们说了redhat收费,但是人家那收了的是服务费用,收的是人情,收的的友谊,收的是优质的售后服务啊;

linux的模块化程度也是非常高,这从他的内核设计就可以看出,分为进程管理、内存管理、进程间通信、虚拟文件系统、网络五部分;这种模块化机制,也为针对用户不同需求从而定制;

linux的安全性就更不用说了,老话说,世界上最牛逼的防火墙就是linux的内核iptables-filter;可以牛逼无死角的封死进程间通信啊;

linux的多用户、多任务、多进程,充分利用资源、充分优化计算、充分的并行能力显的高大上有没有;

三、linux操作系统的安装  

①、安装前准备  

选择合适的发行版,常见的redhat、centos、ubuntu

其中redhat、centos就不说了,几乎一样的,redhat拥有更好的商业支持,技术和认证体系都比较完善、ubuntu就比较适用于个人使用了,博主最喜欢的经常用的ubuntu口袋系统,也就是装在U盘里面的ubuntu麒麟系统,很大气很实用有没有。

不过呢如果是为了工作,建议初学还是使用centos和redhat好了。

前面说了,linux的支持性很友好的,但是呢,目前有些新版的家用主板,还真是不支持linux,或是网卡不支持,当然是很少遇到了,所以选择主机时,可以使用虚拟机如vmware workstation或esxi来安装。

至于配置呢,随意咯,不要太低就行了,linux另一个好处就是资源利用充分啊,没有太多的浪费资源的进程,硬盘呢,20G就好了。

分区规划:省事的就直接一个根分区就好,优化点就分个/boot分区和/var、/opt、啥的。

最重要的是,画一个交换分区,也就是windows中的虚拟内存啊,大小适中就好了。

好了下面,咱们就以readhat 6.6操作系统举例,大同小异哦:

②、安装  

首先光盘引导启动,进入linux安装引导界面,按提示选择安装;

此界面为检测光盘,选择Skip跳过检测即可;

进入安装向导,点next下一步;

选择安装语言,默认为英语,这里选取择简体中文,点下一步;

选择键盘,默认,点下一步;

选择基本存储设备,点下一步;

选择重新初始化所有

设置主机名,根据服务器用途自行定义

选择时区为“亚洲/上海”

设置root密码

这里选择创建自定义布局

分区划分规划

首先/boot分区200M。如果物理内存小于8G,swap为物理内存的两倍;

如果物理内存大于等于8G,swap和物理内存相同大小。剩余所有容量分配给根分区。

格式化并将修改写入磁盘

这里选择基本服务器—高可用性—–现在定义——下一步

选择桌面(默认里面没有选)

选择开发,每项开发包都要点击,并点击“可选的软件包”

然后勾选下面所有的小项,所有小项都要安装

当然如果想研究集群,选择高可用性包扩里面各个小项也勾上

(好吧,之所以安装这么多包,是为了后期方便学习)

当然,如果你想后期自己打包,可以选择最小化安装

不过到这里我们的安装基本结束了,接下来就是十几分钟的等待吧

完事后,选择重新引导,到此系统算是安装完毕了

③、linux初始化配置  

初始化配置一步一步下一步

创建用户并配置日期和时间(这里为个人用户可忽略创建

使用root用户和最开始设置的密码,登录进入系统

四、linux登录连接及命令  

上面我们系统已经安装完毕了,并可以进入系统桌面了,但是作为linux,显然并没有这么简单啊;

linux除了提供桌面管理之外,命令字符界面才是linux的主作战场地;

说到这,我们就不得不了解一下,linux的终端模式,即命令行模式或字符模式

linux提供6个终端,可以使用组合键Ctrl+Alt+F1进入第一个终端,Ctrl+Alt+F2进入第二个终端

依次类推,F1——F6对应六个终端,可以同时处理不同作业;

默认下Ctrl+Alt+F7便对应的linux的桌面模式,如此,桌面和终端模式便可随意切换使用

而linux的桌面右下角又有默认四个虚拟桌面,可以在不同桌面处理不同的工作;

厉害了吧,可见linux的并行作业能力了吧,完全压制不是很好用的window虚拟桌面三方工具啊;

当然,linux终端模式下,也可以通过startx打开图形窗口,前提是你安装了图形桌面系统;

那么除此之外,linux作为商界最流行的系统,远程管理自然是必不可少的;

ssh的远程终端,当然也支持桌面的远程了,不过这个有时候需要xwinds、xrdp或xshell的支持了;

上面说了,linux有别于windows,生产环境中,linux作战主要在终端,那么“命令”应运而生了;

没错linux的大多数管理都在命令行模式下进行,高效灵活,简单直白,但用起来其实并不简单

这就需要工程师们,长期使用才能熟能生巧,用起来得心应手,让我们看几个简单的命令吧~

[root@Moni ~]# date    !--查看时间
2017年 05月 22日 星期一 12:28:08 CST
[root@Moni ~]# cat /etc/issue    !--查看系统版本
Red Hat Enterprise Linux Server release 6.6 (Santiago)
Kernel \r on an \m
[root@Moni ~]# ls    !--列出目录内容
anaconda-ks.cfg  install.log  install.log.syslog  user

linux 命令使用方式:command [options] [arguments]
其次linux命令支持tab补全,不支持简写,过敏大小写;
linux命令选项,在一定程度上,有些雷同之处,不同命令,有的可以参考方便记忆;
可以说整个linux运维工作都离不开命令的,骚年认命吧,赶快装个系统每日联系吧!

五、linux操作系统的启动过程  

我们安装了linux操作系统,并且知道使用管理它的工具:“命令”;但为了更好的理解linux的运行,我们非常有必要了解一下系统启动流程。

首先我们要打开计算机吧,可能你会听到“滴”的一声,没错,这是主板的加电自检啊,说明硬件正常;

然后通过bios的设置,选择引导磁盘,读取主引导记录mgr,寻找操作系统的引导程序地址,linux常用的grub,运行它,然后加载kernel映像,并运行内核加载后的第一个程序/sbin/init,这个程序会根据/etc/inittab来进行初始化工作,如选择运行级别runlevel。

但这里先是根据inittab文件中的系统初始化配置“si::sysinit:/etc/rc.d/rc.sysinit”执行/etc/rc.sysinit脚本;

该脚本用来设置系统变量、网络设置,并启用swap、设定/proc、加载用户自定义模块、加载内核设置等

再根据inittab文件默认配置如“id:3:initdefault:”,运行级别“3”意为完全多用户模式,默认打开终端模式;

从而,引导加载/etc/rc3.d/下的所有脚本;然后运行/etc/rc.local自定义开机启动脚本;最后加载终端

当然如果是runlever是5的话,则是生成x windows 等待用户登录进入桌面窗口;

到这里linux启动就结束了,但是其中有几个重点需要特别注意,可能面试用到哦!

①、linux的系统运行级别runlever  

0)、关机,常用命令“init 0”来关机,慎重操作,特别是在远程维护的情况下

1)、单用户模式,常用来修改摸吗,也就是single模式咯;

2)、多用户模式,但是没有网络连接;

3)、完全多用户模式,最常用的runlever,默认生成终端模式;

4)、保留未使用;

5)、窗口模式,支持多用户,支持网络,默认生成桌面模式;

6)、重启,常用命令“init 6”来重启;

每个级别对应着一个启动服务目录,如果runlever3 对应/etc/rc3.d/

[root@Moni ~]# ll /etc/rc3.d/
总用量 0
lrwxrwxrwx. 1 root root 17 1月  20 01:32 K00ipmievd -> ../init.d/ipmievd
lrwxrwxrwx  1 root root 19 1月  24 11:13 K00rgmanager -> ../init.d/rgmanager
lrwxrwxrwx. 1 root root 19 1月  20 01:35 S08ip6tables -> ../init.d/ip6tables
lrwxrwxrwx. 1 root root 17 1月  20 01:34 S10network -> ../init.d/network

这里大家可以看到,其实这里面服务脚本都是链接的/init.d/下面的服务脚本;

系统在启动过程中,会首先运行以K开头的脚本,然后是运行S开头的服务脚本;

K和S分别代表的是Kill(停止)和start(启动);没错它是在每行的第九列开始处!

而起运行的先后顺序还要看K和S后面的数字,从小到达开始依次运行,没错先是K的然后是S的;

②、服务启动脚本  

在上面我们看到吗,linux的启动过程中运行级别下,以K和S分别来控制脚本服务的关闭和启动,这是怎么做到的呢,这就不得不提到sehll了;

什么是shell?命令解析器,我们可以说是linux系统的壳,来区别于它的内核,就像windows的cmd;

这里就不详细说它了,linux是如何通过shell编程来控制服务自启动的开关,说下简单的过程,可以打开服务启动脚本自行研究一下,大致的情况就是:
脚本执行,我们知道rc*.d目录下面,实则都是/etc/init.d/下面的服务启动脚本,那么脚本本身自然会对这个由一定的判断,先确定是那个runlever,然后对应目录下面脚本链接的第九排属性K和S判断是否启动,如果是K,则系统会使用stop,如果是S,则系统会使用start启动服务,从而控制其是否启动;

③、grub介绍  

grub,全称grand unified bootloader,GNU赞助的项目之一,系统引导程序,其实他支持多个操作系统的引导;

grub引导分为两个步骤,第一是定位和装载第二段引导程序,并转交控制权,第二运行引导程序;

[root@Moni ~]# ll /boot/grub/
总用量 280
-rw-r--r--. 1 root root     63 1月  20 01:42 device.map
-rw-r--r--. 1 root root  13396 1月  20 01:42 e2fs_stage1_5
-rw-r--r--. 1 root root  12636 1月  20 01:42 fat_stage1_5
-rw-r--r--. 1 root root  11780 1月  20 01:42 ffs_stage1_5
-rw-------. 1 root root    747 1月  20 01:42 grub.conf
-rw-r--r--. 1 root root  11772 1月  20 01:42 iso9660_stage1_5
-rw-r--r--. 1 root root  13284 1月  20 01:42 jfs_stage1_5
lrwxrwxrwx. 1 root root     11 1月  20 01:42 menu.lst -> ./grub.conf
-rw-r--r--. 1 root root  11972 1月  20 01:42 minix_stage1_5
-rw-r--r--. 1 root root  14428 1月  20 01:42 reiserfs_stage1_5
-rw-r--r--. 1 root root   1341 5月   7 2010 splash.xpm.gz
-rw-r--r--. 1 root root    512 1月  20 01:42 stage1
-rw-r--r--. 1 root root 126116 1月  20 01:42 stage2
-rw-r--r--. 1 root root  12040 1月  20 01:42 ufs2_stage1_5
-rw-r--r--. 1 root root  11380 1月  20 01:42 vstafs_stage1_5
-rw-r--r--. 1 root root  13980 1月  20 01:42 xfs_stage1_5

哦我们可以看到有不少*_stage1_*的文件,这些其实就是各种文件系统的驱动文件,没错如fat、e2fs、ffs、vstafs、iso9660(光盘)

而其中有一个stage1的文件,它的大小正好是512字节,它是mgr的影子文件,也就是上面说的第一个步骤执行的文件;他会从上面文件系统的驱动文件中读取stage2并执行;

grub的配置,我们则通过修改/boot/grub/grub.conf来配置;

[root@Moni ~]# cat /boot/grub/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux 6 (2.6.32-504.el6.x86_64)
	root (hd0,0)
	kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=5d72c57e-391f-42cf-934b-59c627fecf16 rd_NO_LUKS rd_NO_MD  KEYTABLE=us crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
	initrd /initramfs-2.6.32-504.el6.x86_64.img

其中default=0的意思是默认从第一个title出启动,title从0开始计算,如上我们只有一个引导系统;

timeout=5意为系统引导后显示引导grub界面是停留5s的时间才会加载当前默认的title系统;

当然,在这5s内,我们可以按回车加快引导启动,我们也可以按esc或取消进入编辑模式,也可以上下键选择其他的title引导系统;

splashimage是指启动是的背景图像,如果系统使用的sata磁盘,则命名规则是sda、sdb、sdc依次;

磁盘的分区则是sda1、sda2、sda3依次下去;而上面的(HD0,0)则表示的是ide硬盘第一块第一分区

hiddenmenu意为启动时是否显示grub菜单;

title是系统引导时显示的名字,可以自定义修改;

下面的三行则是引导映像路径了,第一行指定了内核防止的分区root(hd0,0);

第二行kernel /vmlinuz-2.6、、、指定内核的路径,后面的ro 、、、是启动内核时传入的参数;

追后一样指定了initrd文件路径,boot loader initialized RAM disk ;用于初始化内存磁盘,系统启动时的临时文件系统,kernel通过读取initrd来获得各种可执行文件和设备驱动,从而挂载真实的文件系统,然后在卸载这个临时的文件系统,这个生产周期很短,系统启动后就没有了;

但是是不是所有的都是这样呢,显然不是,在一些嵌入式系统中,initrd是可以作为永久的文件系统直接使用的;

六、linux获得帮助  

①、使用man page

linux命令说起来还是很多的,随着软件库的不断丰富,命令只能回越来越多的,当然linux的核心命令也有两三千之多,每个命令参数各异,如果每个命令都需要我们去记住并精通它的使用,显示是很难的,及时记住也会有遗忘的时候;那么学会如何查看帮助则至关重要了;

是的,我们一定要养成喜欢查看帮助的习惯,下面先给大家介绍linux 最权威的帮助命令:man

man文件有很多种类:常见命令的说明、可调用的系统、函数库、设备文件、文件格式、游戏说明、杂项、系统管理员可用的命令、和内核相关的说明等;

有些命令会在好几个种类中存在,可以使用man -f来查询要找到的命令存在哪些man文件中;

[root@Moni ~]# man -f ls
ls                   (1)  - list directory contents
ls                   (1p)  - list directory contents

当然你也可以man 1 ls和man 1p ls来查看ls的man文件;具体命令使用后期会有汇总;

②、使用info page

info工具是一个基于菜单的超文本系统,包括一些linux shell 、工具、命令的说明文档;

[root@Moni ~]# info ls

File: coreutils.info,  Node: ls invocation,  Next: dir invocation,  Up: Directory listing

10.1 `ls': List directory contents
==================================

The `ls' program lists information about files (of any type, including
directories).  Options and file arguments can be intermixed
arbitrarily, as usual.

   For non-option 、、、、、、

可以按空格、pageup和pagedown上下翻页,q退出查询;

③、其他方式获取帮助

作为互联网的前卫,你不得不找我一个很牛逼的技能,从网络获取并筛选有用的信息和知识;

可以到redhat官网或论坛上,一些教程视频,一些文库文档,等等都是你的良药;

linux中,/usr/share/doc目录下,也有大量的帮助和说明文档,可以工日常使用查询参考哦!

 

(好了今天就到这里了,有疑问的地方欢迎大家留言哦。)

看了本篇文章的还道友还要看:linux系统命令和shell

Edit@bigmouth【原创博文】®【系统工程】


原创文章,转载请注明:转自于公牛博客

本文链接地址:【系统工程】linux操作系统简介与安装

3
祝福我们的祖国繁荣昌盛
  • 请尽情挥洒您的笔墨!

    欢迎来到公牛博客更多分享更多精彩记录美丽点亮生活

    公牛博客·统计碑运行:2855 D
    博文:213 P
    评论:1872 S