Centos 编译内核操作实践

§·编译内核:

※·程序包的编译安装:

./configure   make   make install

前提:开发环境(开发工具,开发库),头文件(/usr/include 

开源: 源代码开发—->可执行格式,(不同Linux的发行版以自己的理解,发行的软件不同)

发行版:以“通用”的目标,发行编译好的软件包。

由于发行版为了通用性,把软件的很多功能一同编译好发行。redhat公司后来有发行主包与分包 的可以解决部分用户对特定软件功能的需求,但是还是不够灵活。 

※·编译内核:(LinuxC语言开发的)

前提:

1)准备好开发环境;

2)获取目标主机上硬件设备的相关信息;

3)获取目标主机系统功能的相关信息,例如启用的文件系统;

4)获取内核源代码包: www.kenel.org 

※·准备开发环境:

Cenots 6 7

包组:

development tools   <开发工具>

server platform development  <服务器平台开发>

需要使用图形就安装 (桌面图形开发平台)

依赖有以下的包 ncurses包需要安装的

※·获取目标主机上硬件设备相关信息

1)获取目标主机上 CPU信息;

~]#cat  /proc/info

~]#lscpu

~]#x86info软件包可以显示详细信息

注意:不需要收集内存信息,只需要内存多大即可。

2PCI设备

~]#lspci 支持 v  -vv

[root@node1 ~]#  lspci  #显示PCI设备信息
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10)
00:0f.0 VGA compatible controller: VMware SVGA II Adapter  #显卡的设备型号
00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
#SISC的设备的型号
00:11.0 PCI bridge: VMware PCI bridge (rev 02)
.............................................................
00:18.7 PCI bridge: VMware PCI Express Root Port (rev 01)
02:00.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
#网卡
02:01.0 Multimedia audio controller: Ensoniq ES1371 / Creative Labs CT2518/ES1373 (rev 02)
#声卡
[root@node1 ~]#

 ※·内核源代码包:

获取内核源代码包: www.kenel.org 

※·内核编译过程:

◎·准备内核源码包

1.解压文件至 /usr/src/目录,内核编译时,由于如果新的硬件linux系统会自动到/usr/src/linux/下去查找驱动程序,所以我们需要创建一个连接文件 ln  -sv  linux-3.10.67  linux.

[root@node1 linux-2.6.32.61]# ls
arch   COPYING  crypto         drivers   fs       init  Kbuild  lib          Makefile  net     REPORTING-BUGS  scripts   sound  usr
block  CREDITS  Documentation  firmware  include  ipc   kernel  MAINTAINERS  mm        README  samples         security  tools  virt
[root@node1 linux-2.6.32.61]# pwd
/usr/src/linux_bianyi/linux-2.6.32.61
[root@node1 linux-2.6.32.61]# 
解释:
arch : 平台相关
block : 块设备相关内核级代码
crypto : 加密库,各种加密算法
Documentation :帮助文档
drivers : 设备驱动
firmware : 主板硬件设备固件驱动
fs : 各种文件系统
init : 如何启动init文件的
ipc : 进程间通信
mm : 内存管理的
lib : 库文件
include : 头文件
samples : 事例
tools :内核自带工具
virt : 虚拟化

◎·使用make命令编译内核

步骤:
~]# tar xf linux-3.10.67.tar.xz -C /usr/src 
~]#cd /usr/src
~]#ln linux-3.10.67 linux
~]#cd linux
 
~]#make menuconfig   #配置内核选项
~]#make  [-j #]   #编辑内核,可使用 -j 指定编译线程数量
~]#make modules_install   #安装内核模块
~]#make install     #安装内核
#内核文件路径:/usr/src/linux/arch/x86_64/boot,安装其实就是安装这个文件

make –help 查看帮助

make  menuconfig : 菜单式编译界面

make  xconfig  :  图像编辑界面

make  gconfig  :  图像编辑界面

 

重启系统,选择使用新内核

 

准备模板文件:

1. Centos 提供了一个模板配置文件: /boot/config-3.10.0-229.el7.x86_64  

拷贝模板文件:

cp  /boot/config-3.10.0-229.el7.x86_64   /usr/src/linux/.config

 

1)配置内核选项:

支持“更新”模式进行配置,可以在原有 ./config 模板上进行“修改”配置

amake config:基于命令行以遍历的方式去配置内核中可配置的每个选项;

bmake menuconfig : 基于cureses的文本配置窗口

cmake gconfig :基于GTK开发环境的窗口界面,包组 “桌面平台开发”

dmake xconfig : 基于QT开发环境的窗口界面;

支持“全新配置”模式进行配置:

amake defconfig :基于内核为目标平台的“默认”配置为模板进行配置;

bmake allnoconfig : 所有选项均为:no

2)编译

a)多线程编译: make  -j #】  CPU多线程编译;

b)编译内核中的一部分代码:

1)只编译某子目录中的相关代码:

~]#cd  /usr/src/linux

~]#make  path/to/dir

2)只编译一个模块:

编译好的一个模块,只能手动的复制到对应的目录下 /lib/modules

~]#cd  /usr/src/linux

~]#make path/to/dir/fike.ko (默认是没有ko结尾的文件的,原名应该是.c文件)

3)如何交叉编译:

目标平台与当前编译操作所在的平台不同:

#make ARCH=arch_name

要获取特定目标平台的使用帮助:

#make ARCH=arch_name help

如何在执行过编译操作的内核源码树上做从新编译:

事先清理操作:

~]# make clean :清理编译生成的绝大多数文件,但会保留config,及编译外部模块所需要的文件;

~]#make mrproper : 清理编译生成的所有文件,包括配置生成的config文件及其某些备份文件;

~]#make distclean : 相关于 mrproper,额外清理各种pathes及编辑器备份文件。 

◎·内核编译指令详解

1.解压文件至 /usr/src/目录,内核编译时,由于如果新的硬件linux系统会自动到/usr/src/linux/下去查找驱动程序,所以我们需要创建一个连接文件 :ln  -sv  linux-3.10.67  linux.

 

#解压出来的源代码基本上都是 什么  *.c  *.s   *.h 文件,没有什么中间文件 .o的文件

[root@centos68 src]# tar -Jxvf linux-2.6.34.14.tar.xz 
linux-2.6.34.14/tools/perf/util/sigchain.h
linux-2.6.34.14/tools/perf/util/sort.c
linux-2.6.34.14/tools/perf/util/sort.h
linux-2.6.34.14/tools/perf/util/strbuf.c
linux-2.6.34.14/tools/perf/util/strbuf.h
linux-2.6.34.14/tools/perf/util/string.c
linux-2.6.34.14/tools/perf/util/string.h
linux-2.6.34.14/tools/perf/util/strlist.c
linux-2.6.34.14/tools/perf/util/strlist.h
linux-2.6.34.14/tools/perf/util/svghelper.c
linux-2.6.34.14/tools/perf/util/svghelper.h
linux-2.6.34.14/tools/perf/util/symbol.c
linux-2.6.34.14/tools/perf/util/symbol.h
linux-2.6.34.14/tools/perf/util/thread.c
linux-2.6.34.14/tools/perf/util/thread.h
linux-2.6.34.14/tools/perf/util/trace-event-info.c
linux-2.6.34.14/tools/perf/util/trace-event-parse.c
linux-2.6.34.14/tools/perf/util/trace-event-read.c
linux-2.6.34.14/tools/perf/util/trace-event-scripting.c
linux-2.6.34.14/tools/perf/util/trace-event.h
linux-2.6.34.14/tools/perf/util/types.h
linux-2.6.34.14/tools/perf/util/usage.c
linux-2.6.34.14/tools/perf/util/util.c
linux-2.6.34.14/tools/perf/util/util.h
linux-2.6.34.14/tools/perf/util/values.c
linux-2.6.34.14/tools/perf/util/values.h
linux-2.6.34.14/tools/perf/util/wrapper.c
linux-2.6.34.14/usr/
linux-2.6.34.14/usr/.gitignore
linux-2.6.34.14/usr/Kconfig
linux-2.6.34.14/usr/Makefile
linux-2.6.34.14/usr/gen_init_cpio.c
linux-2.6.34.14/usr/initramfs_data.S
linux-2.6.34.14/usr/initramfs_data.bz2.S
linux-2.6.34.14/usr/initramfs_data.gz.S
linux-2.6.34.14/usr/initramfs_data.lzma.S
linux-2.6.34.14/virt/
linux-2.6.34.14/virt/kvm/
linux-2.6.34.14/virt/kvm/Kconfig
linux-2.6.34.14/virt/kvm/assigned-dev.c
linux-2.6.34.14/virt/kvm/coalesced_mmio.c
linux-2.6.34.14/virt/kvm/coalesced_mmio.h
linux-2.6.34.14/virt/kvm/eventfd.c
linux-2.6.34.14/virt/kvm/ioapic.c
linux-2.6.34.14/virt/kvm/ioapic.h
linux-2.6.34.14/virt/kvm/iodev.h
linux-2.6.34.14/virt/kvm/iommu.c
linux-2.6.34.14/virt/kvm/irq_comm.c
linux-2.6.34.14/virt/kvm/kvm_main.c
[root@centos68 src]#

#解压内核源代码的文件大小为 443M

[root@centos68 linux-2.6.34.14]# du -h  --max-depth=1
16M ./Documentation
2.1M ./scripts
140K ./init
19M ./include
18M ./net
4.3M ./kernel
496K ./block
1.6M ./crypto
52K ./usr
20M ./sound
108K ./samples
1.4M ./lib
1.4M ./security
116M ./arch
1.6M ./tools
31M ./fs
216K ./ipc
2.0M ./mm
5.7M ./firmware
156K ./virt
205M ./drivers
443M .
[root@centos68 linux-2.6.34.14]#

#相关文件的目录的说明

[root@node1 linux-2.6.32.61]# pwd
/usr/src/linux_bianyi/linux-2.6.32.61
[root@node1 linux-2.6.32.61]# 
解释:
arch : 平台相关
block : 块设备相关内核级代码
crypto : 加密库,各种加密算法
Documentation :帮助文档
drivers : 设备驱动
firmware : 主板硬件设备固件驱动
fs : 各种文件系统
init : 如何启动init文件的
ipc : 进程间通信
mm : 内存管理的
lib : 库文件
include : 头文件
samples : 事例
tools :内核自带工具
virt : 虚拟化

步骤:

~]# tar xf linux-3.10.67.tar.xz -C /usr/src   #解压内核源代码到目录
~]#cd /usr/src    #进入到该目录
~]#ln linux-3.10.67 linux  #创建Linux连接
~]#cd linux    #进入到链接文件目录

◎·保存干净的源代码

make mrproper  此前没有编译过,将会清除所有生成的文件,包括配置文件.config

make clear :  仅会删除类似目标文件之类的编译过程产生的中间文件,而不会删除配置文件

了解了硬件相关的数据后,我们还得要处理一下核心原始码底下的残留文件才行!假设我们是第一次编译, 但是我们不清楚到底下载下来的原始码当中有没有保留目标文件 (*.o) 以及相关的配置文件存在, 此时我们可以透过底下的方式来处理掉这些『编译过程的目标文件以及配置文件』:

#能不能认为正常的源代码中是没有 .o文件的,也就是说,如果编译后,有生成的文件大部分为配置文件和.o文件. 

C程序的源代码文件为 .c 结尾的文件,通常情况下 .o文件为gcc编译过程中生成的临时文件。

◎·make menuconfig

· 『左右箭头键』:可以移动最底下的 <Select>, <Exit>, <Help>项目;

· 『上下箭头键』:可以移动上面大框框部分的反白光柱,若该行有箭头 (—>) 则表示该行内部还有其他细项

需要来设定的意思;

· 选定项目:以『上下键』选择好想要设定的项目之后,并以『左右键』选择 <Select> 之后, 按下『 Enter

就可以进入该项目去作更进一步的细部设定啰;

· 可挑选之功能:在细部项目的设定当中,如果前面有 [ ] < > 符号时,该项目才可以选择, 而选择可以

使用『空格键』来选择;

· 若为 [*] <*> 则表示编译进核心;若为 <M> 则表示编译成模块! 尽量在不知道该项目为何时,且有模块

可以选,那么就可以直接选择为模块啰!

· 当在细项目选择 <Exit> 后,并按下 Enter ,那么就可以离开该细部项目啰!

启动一个图形界面,方便我们选择相应的模块

◎·make [  -j  #]

[root@study linux-3.10.89]# make  vmlinux <==未经压缩的核心
[root@study linux-3.10.89]# make   modules <==仅核心模块
[root@study linux-3.10.89]# make  bzImage <==经压缩过的核心(预设)
[root@study linux-3.10.89]# make  all <==进行上述的三个动作
 
[root@study linux-3.10.89]# make  -j  4  clean <==先清除暂存档
[root@study linux-3.10.89]# make  -j  4  bzImage <==先编译核心
[root@study linux-3.10.89]# make  -j  4  modules <==再编译模块
[root@study linux-3.10.89]# make  -j  4  clean bzImage modules <==连续动作!

开始编译核心 核心模块:编译核心和核心模块就是在 make menuconfig中自己选择的功能或编译进核心,把部分功能做成模块,把某个功能从核心中取出掉等等。

#编译好当前目录的文件大小

[root@centos68 linux]# du -h  --max-depth=1
18M ./Documentation
3.4M ./scripts
3.6M ./init
24M ./include
510M ./net
86M ./kernel
13M ./block
33M ./crypto
4.5M ./usr
243M ./sound
108K ./samples
6.6M ./.tmp_versions
19M ./lib
16M ./security
271M ./arch
1.6M ./tools
346M ./fs
5.3M ./ipc
37M ./mm
7.5M ./firmware
2.1M ./virt
2.6G ./drivers
4.9G .
[root@centos68 linux]#

◎·make modules_install (安装编译好的模块)

编译生成的模块路径文:执行编译安装的目录下

使用的 install 命令 根据 makefile文件的内容执行复制内核模块到指定的目录下。

安装模块前有个地方得要特别强调喔!我们知道模块是放置到 /lib/modules/$(uname -r) 目录下的,那

如果同一个版本的模块被反复编译后来安装时,那如何解决内核版本一直的问题呢?

1.把旧版本的目录  /lib/modules/$(uname -r)  改名,再使用 make modules_install 安装新的模块;

2.编译的时候选择 General setup 内的 Local version 修改成新的名称,生成的模块目录就与原来的不一样

 #没有编译之前,解压源文件后查看 /usr/src/linux-2.6.34.14/drivers/xen

该目录没有任何的 .0文件 

[root@centos68 xen]# pwd
/usr/src/linux-2.6.34.14/drivers/xen
[root@centos68 xen]# ll
total 120
-rw-rw-r--. 1 root root 14919 Jan 17  2013 balloon.c
-rw-rw-r--. 1 root root  2069 Jan 17  2013 cpu_hotplug.c
-rw-rw-r--. 1 root root 21911 Jan 17  2013 events.c
-rw-rw-r--. 1 root root 12140 Jan 17  2013 evtchn.c
-rw-rw-r--. 1 root root   762 Jan 17  2013 features.c
-rw-rw-r--. 1 root root 14562 Jan 17  2013 grant-table.c
-rw-rw-r--. 1 root root  2088 Jan 17  2013 Kconfig
-rw-rw-r--. 1 root root   403 Jan 17  2013 Makefile
-rw-rw-r--. 1 root root  5723 Jan 17  2013 manage.c
-rw-rw-r--. 1 root root  9352 Jan 17  2013 sys-hypervisor.c
drwxrwxr-x. 2 root root  4096 Jan 17  2013 xenbus
-rw-rw-r--. 1 root root  5560 Jan 17  2013 xencomm.c
drwxrwxr-x. 2 root root  4096 Jan 17  2013 xenfs

 #在编译以后,再来查看相同目录下的文件夹

[root@centos68 xen]# pwd
/usr/src/kernels/linux/drivers/xen
[root@centos68 xen]# ll
total 3208
-rw-rw-r--. 1 root root   14919 Jan 17  2013 balloon.c
-rw-r--r--. 1 root root  206680 Sep 11 14:09 balloon.o
-rw-r--r--. 1 root root 1622944 Sep 11 14:09 built-in.o
-rw-rw-r--. 1 root root    2069 Jan 17  2013 cpu_hotplug.c
-rw-r--r--. 1 root root   55128 Sep 11 14:09 cpu_hotplug.o
-rw-rw-r--. 1 root root   21911 Jan 17  2013 events.c
-rw-r--r--. 1 root root  238679 Sep 11 14:09 events.o
-rw-rw-r--. 1 root root   12140 Jan 17  2013 evtchn.c
-rw-r--r--. 1 root root  254203 Sep 11 14:12 evtchn.ko
-rw-r--r--. 1 root root    1920 Sep 11 14:10 evtchn.mod.c
-rw-r--r--. 1 root root   54680 Sep 11 14:11 evtchn.mod.o
-rw-r--r--. 1 root root  201229 Sep 11 14:09 evtchn.o
-rw-rw-r--. 1 root root     762 Jan 17  2013 features.c
-rw-r--r--. 1 root root   64834 Sep 11 14:09 features.o
-rw-rw-r--. 1 root root   14562 Jan 17  2013 grant-table.c
-rw-r--r--. 1 root root  183576 Sep 11 14:09 grant-table.o
-rw-rw-r--. 1 root root    2088 Jan 17  2013 Kconfig
-rw-rw-r--. 1 root root     403 Jan 17  2013 Makefile
-rw-rw-r--. 1 root root    5723 Jan 17  2013 manage.c
-rw-r--r--. 1 root root  113824 Sep 11 14:09 manage.o
-rw-r--r--. 1 root root       0 Sep 11 14:09 modules.builtin
-rw-r--r--. 1 root root      63 Sep 11 14:09 modules.order
-rw-rw-r--. 1 root root    9352 Jan 17  2013 sys-hypervisor.c
-rw-r--r--. 1 root root  132528 Sep 11 14:09 sys-hypervisor.o
drwxrwxr-x. 2 root root    4096 Sep 11 14:09 xenbus
-rw-rw-r--. 1 root root    5560 Jan 17  2013 xencomm.c
drwxrwxr-x. 2 root root    4096 Sep 11 14:12 xenfs

 

#使用modules_install 命令后,install 拷贝的文件和原来编译目录中的文件类型和名称还不一样

[root@centos68 linux]# make modules_install > testmake.log
[root@centos68 linux]# less testmake.log 
[root@centos68 linux]# less testmake.log  | grep xen
  INSTALL drivers/block/xen-blkfront.ko
  INSTALL drivers/net/netxen/netxen_nic.ko
  INSTALL drivers/net/xen-netfront.ko
  INSTALL drivers/xen/evtchn.ko
  INSTALL drivers/xen/xenfs/xenfs.ko
[root@centos68 linux]#

小结: make modules_install 的作用还不是简单的复制生成的各个目录下的文件,还是通过一种机制生成最终文件 *.ko

◎·make install (安装编译好的内核文件)

#内核文件路径:/usr/src/linux/arch/x86_64/boot,安装其实就是安装这个文件进当前系统

[root@centos68 linux]#  make  install  #安装内核文件
sh /usr/src/kernels/linux-2.6.34.14/arch/x86/boot/install.sh   2.6.34.141.0-linux arch/x86/boot/bzImage \
System.map  "/boot"
#使用的脚本文件安装,
ERROR: modinfo: could not find module bnx2fc
ERROR: modinfo: could not find module 8021q
ERROR: modinfo: could not find module garp
ERROR: modinfo: could not find module ip6t_REJECT
ERROR: modinfo: could not find module nf_conntrack_ipv6
ERROR: modinfo: could not find module nf_defrag_ipv6
ERROR: modinfo: could not find module ip6table_filter
ERROR: modinfo: could not find module ip6_tables
ERROR: modinfo: could not find module ipv6
ERROR: modinfo: could not find module vsock
ERROR: modinfo: could not find module vmci
ERROR: modinfo: could not find module ext4
ERROR: modinfo: could not find module jbd2
ERROR: modinfo: could not find module mbcache
ERROR: modinfo: could not find module dm_mirror
ERROR: modinfo: could not find module dm_region_hash
ERROR: modinfo: could not find module dm_log
ERROR: modinfo: could not find module dm_mod
#由于删除了很多额模块的导致报错,测试一下看看系统能不能正常的启动
[root@centos68 linux]#

 #在/boot目录下生产的文件:

[root@centos68 boot]# ll
total 44056
-rw-r--r--. 1 root root   108103 May 11 01:32 config-2.6.32-642.el6.x86_64
drwxr-xr-x. 3 root root     1024 Jul 19 18:19 efi
drwxr-xr-x. 2 root root     1024 Sep 11 15:26 grub
-rw-------. 1 root root 25724517 Sep  7 23:34 initramfs-2.6.32-642.el6.x86_64.img
-rw-------. 1 root root  6286176 Sep 11 15:26 initramfs-2.6.34.141.0-linux.img
drwx------. 2 root root    12288 Jul 19 18:05 lost+found
-rw-r--r--. 1 root root   215559 May 11 01:32 symvers-2.6.32-642.el6.x86_64.gz
lrwxrwxrwx. 1 root root       35 Sep 11 15:25 System.map -> /boot/System.map-2.6.34.141.0-linux
-rw-r--r--. 1 root root  2615003 May 11 01:32 System.map-2.6.32-642.el6.x86_64
-rw-r--r--. 1 root root  2135308 Sep 11 15:25 System.map-2.6.34.141.0-linux
lrwxrwxrwx. 1 root root       32 Sep 11 15:25 vmlinuz -> /boot/vmlinuz-2.6.34.141.0-linux
-rwxr-xr-x. 1 root root  4264528 May 11 01:32 vmlinuz-2.6.32-642.el6.x86_64
-rw-r--r--. 1 root root  3732640 Sep 11 15:25 vmlinuz-2.6.34.141.0-linux
[root@centos68 boot]#

#查看/boot/grub/grub.conf文件内容

[root@centos68 boot]# cat 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/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.34.141.0-linux)
root (hd0,0)
kernel /vmlinuz-2.6.34.141.0-linux ro root=UUID=ca4c44c8-1c65-4896-a295-d55e5d5e5c5e rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.34.141.0-linux.img
title CentOS 6 (2.6.32-642.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=ca4c44c8-1c65-4896-a295-d55e5d5e5c5e rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-642.el6.x86_64.img
[root@centos68 boot]#

小结:由于编译的内核删除了很多的东西,导致系统无法正常的进入系统,不过以上的大概流程有一个比较清晰的思路了,对学习Linux还是有一定的帮助的!

原创文章,作者:linux_root,如若转载,请注明出处:http://www.178linux.com/45459

(0)
linux_rootlinux_root
上一篇 2016-09-13
下一篇 2016-09-13

相关推荐

  • 马哥教育网络21期+第十一周练习博客(上)

    马哥教育网络21期+第十一周练习博客(上) 1、详细描述一次加密通讯的过程,结合图示最佳。 加密同性过程中使用到最重要的就是openssl     安全加密传输过程中要确保如下几个环节:     保密性:数据保密性,隐私性     完整性:…

    Linux干货 2016-09-26
  • 系统基础之shell脚本编程详解3(函数)

    shell脚本编程详解3:    在前两节我们分别介绍了shell脚本编程的基础和循环,判断的知识,今天我们分享脚本的另一种用法,函数. 概论:     函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程。    它与shell…

    Linux干货 2016-08-22
  • 回溯法 -数据结构与算法

    1.回溯法算法思想: 定义:         回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 1、回溯法适用:有许多问题,当需要找出它的解集(…

    Linux干货 2015-04-07
  • 马哥教育网络班21期+第2周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。     cp复制,mv移动,rm删除     1、cp:             1,用法: cp [OPTIO…

    Linux干货 2016-07-12
  • http协议简介

        http:Hyper Text Transfer Protocol,超文本传输协议。是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hyp…

    Linux干货 2015-11-18
  • xen虚拟机实时迁移

    前言:  xen虚拟机提供了一种类似于heartbeat高可用方案,在保证也不中断的业务情况下实现虚拟机迁移技术。在保证虚拟机上的服务正常的情况下将运行中的Domain迁移到其他机器上,实现xen虚拟机的高可用。 一、实验准备:  (1)各个测试机之间时间要同步  (2)node3提供iscsi网络共享存储  (4)n…

    Linux干货 2015-08-27