[---TOC---][---TOC Header:【系统工程】linux操作系统简介和安装及相关了解---]
(由于以下内容纯经手打,有些过于白话,且省事尽量无配图,不明之处敬请留言!)
哈哈哈,说到系统工程师,对linux操作系统,这绝对不陌生,没错这应该是必备技能;
当然大家对它也是很了解了,但博主为了让自己后人,还有真正的初学者多点慰藉,今天还是决定结合工作的需求,来简单的介绍一下linux操作系统的历史特点和它的安装;
一、linux的发展历史[---TOC Heading:一、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特性[---TOC Heading:二、linux特性---]
说到linux牛逼,那就不得不说它为啥牛,从1991年问世到现在,linux在服务器、桌面、行业定制等各级领域都获得了长足的发展;
尤其是在服务器领域,不要说了,几乎所有的大型网络服务集群,都是linux的宿主家园了,一致被业界认为前途无量啊;
而在嵌入式领域,也是牛逼的不行,linux具有优秀的移植性、丰富的代码资源、广泛对硬件的支持啊,其95%的C语言代码编辑,机器的高级语言啊,移植起来兼容性很强不是,很多硬件产品都是基于linux、unix开发;
另一方面,linux是完全免费开源的啊,我们说了redhat收费,但是人家那收了的是服务费用,收的是人情,收的的友谊,收的是优质的售后服务啊;
linux的模块化程度也是非常高,这从他的内核设计就可以看出,分为进程管理、内存管理、进程间通信、虚拟文件系统、网络五部分;这种模块化机制,也为针对用户不同需求从而定制;
linux的安全性就更不用说了,老话说,世界上最牛逼的防火墙就是linux的内核iptables-filter;可以牛逼无死角的封死进程间通信啊;
linux的多用户、多任务、多进程,充分利用资源、充分优化计算、充分的并行能力显的高大上有没有;
三、linux操作系统的安装[---TOC Heading:三、linux操作系统的安装---]
①、安装前准备[---TOC Heading:①、安装前准备---]
选择合适的发行版,常见的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操作系统举例,大同小异哦:
②、安装[---TOC Heading:②、安装---]
首先光盘引导启动,进入linux安装引导界面,按提示选择安装;
此界面为检测光盘,选择Skip跳过检测即可;
进入安装向导,点next下一步;
选择安装语言,默认为英语,这里选取择简体中文,点下一步;
选择键盘,默认,点下一步;
选择基本存储设备,点下一步;
选择重新初始化所有
设置主机名,根据服务器用途自行定义
选择时区为“亚洲/上海”
设置root密码
这里选择创建自定义布局
分区划分规划
首先/boot分区200M。如果物理内存小于8G,swap为物理内存的两倍;
如果物理内存大于等于8G,swap和物理内存相同大小。剩余所有容量分配给根分区。
格式化并将修改写入磁盘
这里选择基本服务器---高可用性-----现在定义------下一步
选择桌面(默认里面没有选)
选择开发,每项开发包都要点击,并点击“可选的软件包”
然后勾选下面所有的小项,所有小项都要安装
当然如果想研究集群,选择高可用性包扩里面各个小项也勾上
(好吧,之所以安装这么多包,是为了后期方便学习)
当然,如果你想后期自己打包,可以选择最小化安装
不过到这里我们的安装基本结束了,接下来就是十几分钟的等待吧
完事后,选择重新引导,到此系统算是安装完毕了
③、linux初始化配置[---TOC Heading:③、linux初始化配置---]
初始化配置一步一步下一步
创建用户并配置日期和时间(这里为个人用户可忽略创建)
使用root用户和最开始设置的密码,登录进入系统
四、linux登录连接及命令[---TOC Heading:四、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操作系统的启动过程[---TOC Heading:五、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[---TOC Heading:①、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的;
②、服务启动脚本[---TOC Heading:②、服务启动脚本---]
在上面我们看到吗,linux的启动过程中运行级别下,以K和S分别来控制脚本服务的关闭和启动,这是怎么做到的呢,这就不得不提到sehll了;
什么是shell?命令解析器,我们可以说是linux系统的壳,来区别于它的内核,就像windows的cmd;
这里就不详细说它了,linux是如何通过shell编程来控制服务自启动的开关,说下简单的过程,可以打开服务启动脚本自行研究一下,大致的情况就是:
脚本执行,我们知道rc*.d目录下面,实则都是/etc/init.d/下面的服务启动脚本,那么脚本本身自然会对这个由一定的判断,先确定是那个runlever,然后对应目录下面脚本链接的第九排属性K和S判断是否启动,如果是K,则系统会使用stop,如果是S,则系统会使用start启动服务,从而控制其是否启动;
③、grub介绍[---TOC Heading:③、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获得帮助[---TOC Heading:六、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