一、软件安装:源码与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:可执行文件类别
源码安装的优势:
1、可以自己定义源代码模块,选择适合自己的内容进行重新编译。
什么是函数库
多个功能函数放在一个位置就是函数库。
函数库位置:/usr/include
/lib
/usr/lib
首先需要了解一下的是linux由需要的功能模块组成,这些模块实际上就是一个函数,不如PAM用于身份验证的,如果程序员在设计一款软件的时候需要继续身份验证,就么有必要重新设计一个类似PAM的东西了,直接调用这个函数就可以了,那如果是程序员自己开发,或者系统本身没有的函数呢,那就需要先把函数放到系统里,在编译了,不然就会报错哦。
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(图形化安装界面)。
注意:这里使用的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程序,需要图形化界面。
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 ~]#
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文件丢失后,重启进入系统时的状态:
1.2此处输入root (hd,),然后按tab键,可以列出hd0磁盘的分区情况。
1.4如果root根分区没有正确指定,会有如下错误:
1.5正常记住及备份系统分区情况是很好的方法:
1.6完整的修复grub引导问题的步骤:
紧急救援参考文件: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/sysp_w_picpath/目录下。
2.1进入紧急救援模式,光盘引导-选择rescue installed system
2.2安全模式下,原有系统默认是挂载到/mnt/sysp_w_picpath/目录下
2.3查看紧急救援模式下分区挂载情况
2.4如何切换到系统(磁盘)根上去呢。
修复grub.cfg文件。
3、处理文件损坏的情况
3.1、进入紧急修复模式
3.2、挂载光盘,或者条件允许的话直接通过网络安装。
mount -r /dev/cdrom /media
rpm —ivy /media/packages/bash-4.1.2 --root /mnt/sysp_w_picpaths --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 p_w_picpaths ##补充用于其他引导方式的目录,不如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、制作的引导镜像文件由于没有安装文件,引导程序会提示从哪里寻找安装文件。
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