九、Linux系统安装和常见故障排除

简介:

一、软件安装:源码与tarball

什么是开发源码

可以随意修改的经由文本编辑器编辑的纯文本文件就是开发源代码。

可执行文件通常为二进制文件。

查看文件类型:file

[root@dns kernels]# file /bin/rm

/bin/rm: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

 ELF 32-bit LSB executable:可执行文件类别

405778786C1C4006A5615C485A6E2047

源码安装的优势:

1、可以自己定义源代码模块,选择适合自己的内容进行重新编译。

什么是函数库

多个功能函数放在一个位置就是函数库。

函数库位置:/usr/include

                    /lib

                    /usr/lib

首先需要了解一下的是linux由需要的功能模块组成,这些模块实际上就是一个函数,不如PAM用于身份验证的,如果程序员在设计一款软件的时候需要继续身份验证,就么有必要重新设计一个类似PAM的东西了,直接调用这个函数就可以了,那如果是程序员自己开发,或者系统本身没有的函数呢,那就需要先把函数放到系统里,在编译了,不然就会报错哦。

1D88A513B82548599821C10311D9AC45

tarball:对源代码文件进行压缩打包的软件。

文件类型:*.tar.gz/*.tgz/*.tar.bz2。

包含内容:

源代码程序

检测程序文件,configure或者config

readme文档。

安装开发环境依赖的软件包组:

依赖于c语言开发的程序:Development Tools

Server Platform Development

Desktop Platform Development


安装编译源代码过程:

1、取得源代码,解压缩tarball文件到/usr/local/src目录中。

2、进入目录查看readme文档

3、建立makefile文件,通过configure来完成。 

            --prefix=:用来指定安装到什么目录下。

4、清理历史编译make clean

5、编译,make

6、安装、make install。

二、企业级安装linux系统

(关键字:网络安装、kickstart、远程安装、)

1、简述:

annaconda是linux系统安装管理软件(光盘安装过程中的图形化安装界面就是annaconda啦!),并且在系统安装完毕后生成一个anaconda-ks.cfg文件,这个文件就是kickstart文件,但并不是很完整,此文件默认存在于root的家目录。所以可以使用system-config-kickstart.noarch包来安装配置kickstart的图形化工具。

2、启动顺序:

POST-MBR(CDROM,GRUB.CONF)-isolinux.bin(isolinux.cfg,光盘引导文件)-vmlinuz(initrd)-anaconda(图形化安装界面)。

0B3015E98CB1456F9FDE5436B56ED540

注意:这里使用的use free space 是指没有分区的磁盘空间,而不是已经分完区而没有使用的分区。

3、kickstart文件组成:

命令段:用于配置系统

install

firewall

软件包段:选择用于安装的软件包及组

lftp

ssh

脚本段:

%pre:安装过程开始之前执行的脚本。所能够执行的操作较少,因为是简洁版的shell环境。

%post:所有软件包安装完成后执行的脚本。是完整意义上的shell环境。

参考文档:http://blog.csdn.net/woods2001/article/details/7297195

  https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html

       使用Kickstart方法安装的过程包括创建一个kickstart文件、创建有kickstart文件的引导介质或者使这个文件在网络上可用、筹备一个安装树、开始ks安装(anconda自身启动 -->选取ks安装模式--> 从ks文件读取配置 --> 最后安装)。创建kickstart配置文件可以使用任何文本编辑器,也可以使用图形化配置工具system-config-kickstat(需要安装system-config-kickstart.noarch包)。注意配置文件生成后,推荐使用ksvalidator命令检查配置文件语法及完整性错误,例如:

1、安装kickstart软件包

[root@localhost ~]# yum install system-config-kickstart

已加载插件:fastestmirror, refresh-packagekit, security

设置安装进程

Loading mirror speeds from cached hostfile


2、运行kickstart程序,需要图形化界面。

718644.png


kickstart的安装应用

1、检查kickstart语法问题

[root@localhost ~]# ksvalidator anaconda-ks.cfg 

[root@localhost ~]# 


2、通常将kickstart编辑的配置文件放到网络服务器上,方便远程下载使用。

方法一、制作引导光盘

[root@localhost ~]# mkisofs -R -J -T -v emul-boot -boot-load-size 4 -boot-info-table -V "gongbing testing linux" -b ./isolinux/isolinux.bin -c ./isolinux/boot.cat -o ../boot.iso


方法二、将kickstart文件放在服务器上

[root@localhost ~]# yum install vsftpd^C

[root@localhost ~]# service vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@localhost ~]# 

511649.png

511838.png

ftp公共目录位置

[root@localhost ~]# ll /var/ftp/pub/

总用量 0


将annaconda.cfg复制到pub目录。

[root@localhost ~]# cp ./anaconda-ks.cfg /var/ftp/pub/

[root@localhost ~]# ll /var/ftp/pub/

总用量 4

-rw-------. 1 root root 1394 6月  15 11:02 anaconda-ks.cfg

光盘启动,进入boot模式(两次esc键),执行以下命令:

[root@localhost pub]# linux ip=10.40.0.56 netmask=255.255.255.0 gateway=10.40.0.200 ks=ftp://10.40.0.5/pub/anaconda-ks.cfg


注意:

1、anaconda文件中的repo仓库需要确定安装源的位置,否者会造成安装源错误的情况,cannot find a vrial baseurl repo。

2、在开机进入isolinux.bin引导菜单时,“linux ip=”需要注意ip地址不要冲突,与安装源可以通信。

3、注意ftp目录权限、安装源必须是目录而不能是iso镜像文件。

红帽官网关于radhat系统的安装部署指南:https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/index.html


Kickstart文件的语法及参数含义可参考http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html


红帽官网关于kickstart的安装指南:https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html

三、紧急救援模式

1、处理grub引导文件损坏的情况(需要知道根分区位置)

1.1grub文件丢失后,重启进入系统时的状态:

482510.tmp

1.2此处输入root (hd,),然后按tab键,可以列出hd0磁盘的分区情况。

443653.tmp

1.4如果root根分区没有正确指定,会有如下错误:

317198.tmp

1.5正常记住及备份系统分区情况是很好的方法:

699270.tmp

1.6完整的修复grub引导问题的步骤:

275883.tmp

紧急救援参考文件:http://www.cnblogs.com/wangxiaoqiangs/p/5630349.html

1.7进入grub模式后使用技巧:

        a、使用find命令查找grub的引导分区。

            find (hd0,0)/找到内核文件所在的设备

            root (hd0,0)假设/dev/sda1是你的/boot所在的分区

            kernel /vmlinuxz-2.6.32-    ro  root=/dev/sda2 假设sda2是你的/所在的分区

            initrd /initramfs-2.6.32

            boot

2、进入紧急救援模式

    通过光盘启动加载光盘上的linux内核,用于修复磁盘上的linux系统。

    默认情况紧急启动模式会将原始的根分区挂载到/mnt/sysimage/目录下。

2.1进入紧急救援模式,光盘引导-选择rescue installed system

464721.tmp

2.2安全模式下,原有系统默认是挂载到/mnt/sysimage/目录下

586642.tmp

2.3查看紧急救援模式下分区挂载情况

142046.tmp

2.4如何切换到系统(磁盘)根上去呢。

911086.tmp

修复grub.cfg文件。

3、处理文件损坏的情况


3.1、进入紧急修复模式

3.2、挂载光盘,或者条件允许的话直接通过网络安装。

mount -r /dev/cdrom /media     

rpm —ivy /media/packages/bash-4.1.2  --root         /mnt/sysimages       --replacepkgs                                   

四、安装和引导介质

引导介质种类:

1、光盘,CDROM

2、USB

3、network:网卡,dhcp,tftp server , 引导文件(isolinux.bin,isolinux.cfg)

光盘目录说明:

-r--r--r-- 1 root root    14 8月   5 2015 CentOS_BuildTag

dr-xr-xr-x 3 root root  2048 8月   5 2015 EFI

-r--r--r-- 1 root root   212 11月 27 2013 EULA

-r--r--r-- 1 root root 18009 11月 27 2013 GPL

dr-xr-xr-x 3 root root  2048 8月   5 2015 images ##补充用于其他引导方式的目录,不如usb、network。

├── efiboot.img

├── efidisk.img

├── install.img

├── pxeboot

│   ├── initrd.img ##用于实现基于网络安装的引导文件

│   ├── TRANS.TBL

│   └── vmlinuz

├── TRANS.TBL

└── updates.img

dr-xr-xr-x 2 root root  2048 8月   5 2015 isolinux ##光盘安装linux需要的引导程序及安装界面

├── boot.cat

├── boot.msg

├── grub.conf

├── initrd.img

├── isolinux.bin

├── isolinux.cfg

├── memtest

├── splash.jpg

├── TRANS.TBL

├── vesamenu.c32

└── vmlinuz


dr-xr-xr-x 2 root root 40960 8月   5 2015 Packages ##linux需要的rpm软件包

├── acl-2.2.49-6.el6.x86_64.rpm

├── aic94xx-firmware-30-2.el6.noarch.rpm

├── atmel-firmware-1.3-7.el6.noarch.rpm

├── attr-2.4.44-7.el6.x86_64.rpm

├── audit-2.3.7-5.el6.x86_64.rpm

├── audit-libs-2.3.7-5.el6.x86_64.rpm

-r--r--r-- 1 root root  1354 7月  25 2015 RELEASE-NOTES-en-US.html

dr-xr-xr-x 2 root root  4096 8月   5 2015 repodata

-r--r--r-- 1 root root  1706 11月 27 2013 RPM-GPG-KEY-CentOS-6

-r--r--r-- 1 root root  1730 11月 27 2013 RPM-GPG-KEY-CentOS-Debug-6

-r--r--r-- 1 root root  1730 11月 27 2013 RPM-GPG-KEY-CentOS-Security-6

-r--r--r-- 1 root root  1734 11月 27 2013 RPM-GPG-KEY-CentOS-Testing-6

-r--r--r-- 1 root root  3380 8月   5 2015 TRANS.TBL


理解光盘启动安装系统的加载顺序:

POST——CDROMD———ISOLINUX———isolinux.bin———isolinux.cfg———vmlinuz+initrd———anaconda.cfg

制作镜像文件包的方法:

1、拷贝光盘或其他镜像文件中的isolinux目录,并赋值root可写。


[root@37-test ~]# mkdir /root/iso && cp /var/ftp/pub/centos6.7/isolinux /root/iso

[root@37-test ~]# chmod u+w isolinux/ -R


2、制作进行文件

[root@37-test ~]# mkisofs -R -J  -v -no-emul-boot -boot-load-size 4 -boot-info-table -V "gongbing's linux ISO" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/linux-gb.iso iso/


3、制作的引导镜像文件由于没有安装文件,引导程序会提示从哪里寻找安装文件。

138570.tmp

483354.tmp

4、全自动化方法,需要添加anaconda文件到镜像文件中,并指定anaconda文件中的url和repo,修改isolinux.cfg文件,并重新生成iso镜像文件即可。

iso/anaconda.cfg

url --url="http://10.40.0.37/var/pub/"

repo --name="CentOS" --baseurl=ftp://10.40.0.37/pub/centos6.7  --cost=100


iso/isolinux/isolinux.cfg

label linux

  menu label ^Install or upgrade an existing system

  menu default

  kernel vmlinuz

  append initrd=initrd.img ks=cdrom:/anaconda-ks.cfg


5、同样可以依据linux.log文件将需要安装的rpm包拷贝到Packets目录中,即可实现自定义的安装光盘了。

五、Bash脚本回顾

1、 for 变量 in 列表;

do

循环体

done

2、 while条件;

do

循环体

done

3、 until 条件;

do

循环体

done

4、跳出循环的制定方法

continue:设置条件,结束本轮循环,并进入下一轮循环。

实例:

#!/bin/bash

#

#

declare -i Sum=0 #声明一个整数型变量,并赋初值为0

for i in {1..100};do

        if [ $[$i%2] -eq 1 ]; ##除以2取余数

         then

                continue

        fi

String+=" $i "

let Sum+=$i

echo $i

echo $String

sleep 1

done


echo "$Sum"


declare :用来声明一个变量,并设置变量属性。

-i:声明一个整数型变量

-a:声明一个数组变量 

-f:声明一个函数

-r:声明一个只读变量

break:设置条件,符合条件后结束整个循环。

实例:

#!/bin/bash

declare -i Sum=0

declare -i Count=0

while true ; #“死循环”:

do

        if [ $Count -gt 100 ];

        then

        break

        fi

let Sum+=$Count

let Count+=2

done


echo $Sum



本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1895568,如需转载请自行联系原作者

相关文章
|
4天前
|
NoSQL Linux 网络安全
Linux安装Redis(详细教程)
Linux安装Redis(详细教程)
26 2
|
4天前
|
IDE Linux 开发工具
Linux 系统上安装
在Linux和Mac上安装Lua 5.3.0只需下载源码,解压,编译和安装。Windows用户可选择SciTE IDE或通过LuaForWindows在Github或Google Code下载安装。创建 HelloWorld.lua,使用`lua HelloWorld.lua`运行显示"Hello World!"。另可参考LuaDist官方推荐方式安装。
|
4天前
|
弹性计算 分布式计算 Hadoop
Linux(阿里云)安装Hadoop(详细教程+避坑)
Linux(阿里云)安装Hadoop(详细教程+避坑)
25 3
|
4天前
|
监控 JavaScript 网络协议
Linux系统之安装uptime-kuma服务器监控面板
【5月更文挑战第12天】Linux系统之安装uptime-kuma服务器监控面板
15 0
|
4天前
|
Ubuntu Linux Shell
minio服务端以Linux服务形式安装
minio服务端以Linux服务形式安装
76 6
|
4天前
|
关系型数据库 MySQL Linux
Linux下安装MySQL
Linux下安装MySQL
20 0
|
4天前
|
安全 Linux 网络安全
【操作系统】实验一 Linux操作系统安装
【操作系统】实验一 Linux操作系统安装
9 3
|
4天前
|
Oracle 关系型数据库 Linux
SuSE linux server 11通过SAP来安装oracle11g
SuSE linux server 11通过SAP来安装oracle11g
|
4天前
|
Linux C语言
suse linux 11 安装GCC开发环境
suse linux 11 安装GCC开发环境
|
4天前
|
关系型数据库 MySQL Linux
在Linux系统上实现高效安装与部署环境的全方位指南
在Linux系统上实现高效安装与部署环境的全方位指南