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)
上一篇 2016-09-13 11:17
下一篇 2016-09-13 12:29

相关推荐

  • 快速搭建SVN服务器

    一、背景介绍 svn服务器是一款上传代码的工具(貌似这么说不怎么严谨,但是在日常工作中基本上是这么用的),今天一个小伙伴折腾了一天也没有搭建好这个svn服务器。各种问题,其实搭建SVN服务器最重要的就是三个配置文件(svnserver.conf、 passwd 、authz)。出了问题的话十有八九是这三个配置文件的问题。最后,我自己搭建了一个,测试成功。于是…

    Linux干货 2016-12-11
  • 马哥教育网络班21期+第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 方法1: [root@zabbix ~]# who |awk '{print $1}'|sort -n|uniq monitor root 方法2: [root@zabbix ~]#…

    Linux干货 2016-07-22
  • 那些年我们一起追过的缓存写法(二)

    原文出处: 蘑菇先生   上次主要讨论缓存读写这块各种代码实现。本篇是就上次的问题接着来,继续看那些年我们各种缓存用法。 一:缓存预热 上次有同学问过。在第一次加载时,我们的缓存都为空,怎么进行预热。 单机Web情况下,一般我们使用RunTimeCache。相对于这种情况下: 1:我们可以在启动事件里面刷新 1 2 3 4 vo…

    Linux干货 2015-03-04
  • 第一周作业-02

    Linux的命令格式 命令的语法通用格式:    ~]# COMMAND OPTIONS ARGUMENTS        COMMAND: 发起一命令:请求内核将某个二进制程序运行为一个进程;            程序 –&…

    Linux干货 2016-09-19
  • 网络概念简述和Linux网络管理命令

    网络概念简述和Linux网络管理命令 1. 网络分类 我们通常接触到的网络通常是广域网、局域网 局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。 广域网(Wide Area Network,WAN):网络跨越国界、洲界,甚至全球范围。  因特网(Internet)是世界范围内最大的广域网。 2. …

    Linux干货 2016-04-19
  • 用户及用户组管理使用的练习

    用户及用户组管理使用的练习 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 先使用who得出登陆用户,通过uniq去重。 [root@mail ~]# who | grep -E -o “^[[:alnum:]]+” | uniq root 2、取出最后登录到当前系统的用户的相关信息。 思路:首先使用who取得最后…

    Linux干货 2018-03-18