Linux CentOS 7 多网卡配置bond模式 bond1 bond5 bond6

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Network_Bonding_Using_the_Command_Line_Interface.html

Linux CentOS 7 多网卡配置bond模式 bond1 bond5 bond6

网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6
常用的有四种
mode=0:(balance-rr) Round-robin policy(平衡抡循环策略)平衡负载模式,有自动备援,但需要”Switch”支援及设定。
mode=1,(active-backup) Active-backup policy(主-备份策略)只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的。
mode=5,(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)不需要任何特别的switch(交换机)支持的通道bonding。
mode=6,(balance-alb) Adaptive load balancing(适配器适应性负载均衡)该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的

mode=1,(active-backup) Active-backup policy(主-备份策略)

在Centos 7中,我们可以使用modinfo bonding 命令查看bonding模块的信息,默认情况下bonding模块没有被加载

以root用户登录,输入如下的命令进行开启加载bonding模块
modprobe --first-time bonding //--first-time Fail if module already inserted or removed

cat /etc/sysconfig/network-scripts/ifcfg-bond1
DEVICE=bond1
BONDING_OPTS="resend_igmp=1 updelay=0 use_carrier=1 miimon=100 downdelay=0 xmit_hash_policy=0 primary_reselect=0 fail_over_mac=0 arp_validate=0 mode=active-backup primary=eno16777736 arp_interval=0 ad_select=0"
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
IPADDR=192.168.199.235
PREFIX=24
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME="Bond connection 1"
UUID=e110d205-848e-4527-8cb1-2b3ac76cfb9b
ONBOOT=yes

cat /etc/sysconfig/network-scripts/ifcfg-eno33554960
HWADDR=00:0C:29:1B:57:14
TYPE=Ethernet
BOOTPROTO=none 修改
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno33554960
UUID=ef35e777-0bc3-4afa-ad54-490e1543242a
ONBOOT=yes 修改

[root@www.zhangfangzhou.cn ~]# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eno16777736 (primary_reselect always)
Currently Active Slave: eno16777736
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eno16777736
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:1b:57:0a
Slave queue ID: 0

Slave Interface: eno33554960
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:1b:57:14
Slave queue ID: 0

Slave Interface: eno50332184
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:1b:57:1e
Slave queue ID: 0

Slave Interface: eno67109408
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:1b:57:28
Slave queue ID: 0
------------------------------------------------------------------------------------------------------------------------
CentOS7手动配置bond6(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

1、在Centos 7中,我们可以使用modinfo bonding 命令查看bonding模块的信息,默认情况下bonding模块没有被加载

以root用户登录,输入如下的命令进行开启加载bonding模块
modprobe --first-time bonding //--first-time Fail if module already inserted or removed

2、创建bond0配置文件,创建/etc/sysconfig/network-scripts/ifcfg-bond0文件,加入如下内容
cat /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="bond0"
IPADDR=192.168.199.223
PREFIX=24
ONBOOT=yes
BONDING_OPTS="resend_igmp=1 updelay=0 use_carrier=1 miimon=100 downdelay=0 xmit_hash_policy=0 primary_reselect=0 fail_over_mac=0 arp_validate=0 mode=balance-alb arp_interval=0 ad_select=0"
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

其中BONDING_OPTS指定bonding的模式,其中10.101.230.30/27将作为bond0的ip地址

3、配置e网卡配置文件,文件位于/etc/sysconfig/network-scripts/目录

vi ifcfg-eno16777736

TYPE=Ethernet
BOOTPROTO=none 修改
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno1
UUID=26ea0bd1-0837-4b1a-9039-f147abd19632
DEVICE=eno16777736
ONBOOT=yes 修改
#以下两项为新增配置选项
MASTER=bond0
SLAVE=yes

systemctl restart network.service //重启网络服务

[root@www.zhangfangzhou.cn~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: eno33554960
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eno16777736
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:1b:57:0a
Slave queue ID: 0

Slave Interface: eno33554960
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:1b:57:14
Slave queue ID: 0

Slave Interface: eno50332184
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:1b:57:1e
Slave queue ID: 0

Slave Interface: eno67109408
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:1b:57:28
Slave queue ID: 0

------------------------------------------------------------
nutui配置bond6 (balance-alb) Adaptive load balancing(适配器适应性负载均衡)
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Configure_Bonding_Using_the_Text_User_Interface_nmtui.html

[root@www.zhangfangzhou.cn network-scripts]# cat ifcfg-Bond_connection_1
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="Bond connection 1"
UUID=5aa07976-3cc3-4db2-b9a8-af598906d263
ONBOOT=yes
BONDING_OPTS="resend_igmp=1 updelay=0 use_carrier=1 miimon=100 downdelay=0 xmit_hash_policy=0 primary_reselect=0 fail_over_mac=0 arp_validate=0 mode=balance-alb arp_interval=0 ad_select=0"
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

[root@www.zhangfangzhou.cn network-scripts]# cat ifcfg-eno16777736
HWADDR=00:0C:29:00:50:D4
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=600f243a-ef20-4b91-8e5c-02a21b49cfb3
ONBOOT=no

[root@www.zhangfangzhou.cn network-scripts]# cat ifcfg-Ethernet_connection_1
TYPE=Ethernet
NAME="Ethernet connection 1"
UUID=a7f3051a-0aac-45fd-a019-75b9db495736
DEVICE=eno16777736
ONBOOT=yes
MASTER=5aa07976-3cc3-4db2-b9a8-af598906d263
SLAVE=yes

------------------------------------------------------------------------------------------------------------------------
配置mode=5,(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
cat /etc/sysconfig/network-scripts/ifcfg-bond5

bond5
DEVICE=bond5
TYPE=Bond
NAME=bond5
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.216.13.3
NETMASK=255.255.255.0
BONDING_OPTS="resend_igmp=1 updelay=0 use_carrier=1 miimon=100 downdelay=0 xmit_hash_policy=0 primary_reselect=0 fail_over_mac=0 arp_validate=0 mode=balance-tlb arp_interval=0 ad_select=0"

Linux CentOS6 挂载使用 Windows Server 2012 R2 的 WebDAV

Linux CentOS6 挂载使用 Windows Server 2012 R2 的 WebDAV
CentOS6 挂载使用 Windows Server 2012 R2 的 WebDAV
Windows Server 2012 R2 安装 WebDAV
http://www.ibm.com/support/knowledgecenter/SSEP7J_10.2.1/com.ibm.swg.ba.cognos.c8pp_inst.10.2.1.doc/t_enablewebdavoniis.html
https://www.iis.net/configreference/system.webserver/webdav
https://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-webdav-on-iis


yum -y install gcc gcc-c++ wget openssl-devel
wget -c http://www.webdav.org/neon/neon-0.30.2.tar.gz #neon is an HTTP and WebDAV client library, with a C interface. Features:
tar zxf neon-0.30.2.tar.gz
cd neon-0.30.2
./configure --with-ssl
make && make install
wget -c http://download.savannah.gnu.org/releases/davfs2/davfs2-1.5.0.tar.gz
#http://download-mirror.savannah.gnu.org/releases/davfs2/davfs2-1.5.4.tar.gz 更高的版本需要gcc4.9
tar zxf davfs2-1.5.0.tar.gz
cd davfs2-1.5.0
./configure
make && make install
useradd davfs2

yum -y install davfs2
mkdir /root/www.zhangfangzhou.cn
mount.davfs 122.114.250.255 /root/www.zhangfangzhou.cn

可以调整一下参数做系统自动挂载,免去每次手动操作。
第一步:使用sed命令修改系统设置
sed -i 's/# use_locks 1/use_locks 0/g' /etc/davfs2/davfs2.conf

第二步:将WebDAV发布地址以及账号密码写入配置文件
echo "122.114.250.255 账户 密码" > /etc/davfs2/secrets

第三步:加入系统自动启动
echo "mount.davfs 122.114.250.255 /root/www.zhangfangzhou.cn" >> /etc/rc.local
最后reboot系统测试一下吧。

CentOS 7安装GNOME桌面 和 配置 VNC 服务器

CentOS 7安装GNOME桌面 和 配置 VNC 服务器
这是一个关于怎样在你的 CentOS 7 上安装GNOME桌面 和 配置 VNC 服务器的教程。当然这个教程也适合 RHEL 7 安装GNOME桌面 和 配置 VNC 服务器。

1、安装桌面
yum check-update
yum groupinstall "X Window System" "GNOME Desktop" -y

2、设置默认启动图形界面
unlink /etc/systemd/system/default.target
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

3、安装 VNC 服务器
yum install tigervnc-server -y

然后,我们需要在 /etc/systemd/system/ 目录里创建一个配置文件。我们可以将 /lib/systemd/sytem/vncserver@.service 拷贝一份配置文件范例过来。

cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

4、配置VNC服务器
vi /etc/systemd/system/vncserver@:1.service
然后打开这个配置文件/etc/systemd/system/vncserver@:1.service替换掉默认用户名
找到这一行
ExecStart=/sbin/runuser -l -c "/usr/bin/vncserver %i"
PIDFile=/home//.vnc/%H%i.pid
这里我直接用root 用户登录,所以我替换成
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid

5、重加载 systemd
# systemctl daemon-reload

6、VNC设密码
# vncpasswd

7、配置防火墙iptables或者firewalld
vim /etc/sysconfig/iptables
在合适位置加上
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5903 -j ACCEPT
重启iptable
service iptables restart

如果是用Centos 7 默认防火墙的可能需要
# firewall-cmd --permanent --add-service vnc-server
# systemctl restart firewalld.service

8、设默认启动并开启VNC
# systemctl enable vncserver@:1.service
# systemctl start vncserver@:1.service

9、重新启动服务器
reboot

CentOS6和CentOS7 一键更换内核,一键安装锐速[lotServer]

CentOS6和CentOS7 一键更换内核,一键安装锐速[lotServer][serverSpeeder ]

CentOS6和CentOS7 一键更换内核,完成后会重启
wget --no-check-certificate https://www.zhangfangzhou.cn/sh/ruisu.sh
bash ruisu.sh


手动更换内核
CentOS6更换内核
rpm -ivh http://file.asuhu.com/kernel/kernel-firmware-2.6.32-504.3.3.el6.noarch.rpm
rpm -ivh http://file.asuhu.com/kernel/kernel-2.6.32-504.3.3.el6.x86_64.rpm --force

查看内核版本
cat /boot/grub/grub.conf | awk '$1=="title" {print i++ " : " $NF}'
0 : (2.6.32-504.3.3.el6.x86_64)
1 : (2.6.32-642.13.1.el6.x86_64)

确认内核版本
cat /boot/grub/grub.conf | awk '$1=="title" {print i++ " : " $NF}'|grep '2.6.32-504'|awk '{print $1}'

设置启动的内核
vi /boot/grub/grub.conf
default=0

重启
reboot

确认内核版本
uname -r
2.6.32-504.3.3.el6.x86_64


CentOS7更换内核
rpm -ivh http://file.asuhu.com/kernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm --force

查看内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux 7 Rescue 1f0eb10f866e4eeea5ec2c016d383869 (3.10.0-229.1.2.el7.x86_64)
1 : CentOS Linux (3.10.0-229.1.2.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-98f15324ee1542fdaf9b60c933ff0e2c) 7 (Core)

设置启动的内核
grub2-set-default `awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg | grep '(3.10.0-229.1.2.el7.x86_64) 7 (Core)'|awk '{print $1}'`
grub2-editenv list #查看确认
reboot 重启


CentOS6和7 更换内核完成一键安装锐速[lotServer]

wget --no-check-certificate -O appex.sh https://raw.githubusercontent.com/0oVicero0/serverSpeeder_Install/master/appex.sh && chmod +x appex.sh && bash appex.sh install

安装完成后检测是否启用
lsmod |grep appex

卸载
wget --no-check-certificate -O appex.sh https://raw.githubusercontent.com/0oVicero0/serverSpeeder_Install/master/appex.sh && chmod +x appex.sh && bash appex.sh uninstall

使用此脚本安装时如遇许可证错误,可尝试使用此命令更新许可证
bash /appex/bin/serverSpeeder.sh renewLic


VPS推荐
搬瓦工/bandwagonhost – $18/年 KVM 1核 512M 10G 500G 1Gbps 六机房
https://blog.asuhu.com/bandwagonhost.aspx

在 Ubuntu Debian Fedora 上安装 Wine 2.0

在 Ubuntu Debian Fedora 上安装 Wine 2.0
Wine 2.0 修改和改善了大量的 Direct3D 10/11 的功能,包括更多的着色指令、 sRGB 读写支持、矩阵纹理等等,此外还调整了 DirectX 支持。在音频方面,有 GStreamer 1.0 支持、DirectSound 下混为立体声等。
Wine不是像虚拟机或者模拟器一样模仿内部的Windows逻辑,而是將Windows API调用翻译成为动态的POSIX调用,免除了性能和其他一些行为的内存占用。

Ubuntu 16.04 16.10 15.04 15.10 14.04 14.10
If your system is 64 bit, enable 32 bit architecture (if you haven't already):
sudo dpkg --add-architecture i386

Add the repository:
sudo add-apt-repository ppa:wine/wine-builds

Update packages:
sudo apt-get update

Then install one of the following packages:

Development branch
sudo apt-get install --install-recommends winehq-devel

Staging branch
sudo apt-get install --install-recommends winehq-staging
wine --version
wine-2.0

Debian 8.0 Jessie
Debian 7.0 Wheezy
https://wiki.winehq.org/Debian
First, enable 32 bit packages:
sudo dpkg --add-architecture i386

Then install key which was used to sign packages:
wget https://dl.winehq.org/wine-builds/Release.key

sudo apt-get install apt-transport-https

sudo apt-key add Release.key
vi /etc/apt/sources.list

deb https://dl.winehq.org/wine-builds/debian/ jessie main
或者
deb https://dl.winehq.org/wine-builds/debian/ wheezy main
或者
deb http://ftp.de.debian.org/debian/ oldstable main

Update packages:
sudo apt-get update

Then install one of the following packages:

Development branch
sudo apt-get install --install-recommends winehq-devel

Staging branch
sudo apt-get install --install-recommends winehq-staging

https://wiki.winehq.org/Fedora

安装 node.js使用Google WebFont Downloader 解决谷歌字体无法访问

node-js
使用Google WebFont Downloader 解决谷歌字体无法访问
本地化Google字体

1、安装 Google WebFont Downloader 工具
CentOS 6 安装 node.js

NodeJS 7.x

NOTE: If you are using RHEL 6 or CentOS 6, you might want to read about running Node.js >= 4.x on older distros.
curl -sL https://rpm.nodesource.com/setup_7.x | bash -

NodeJS 6.x

NOTE: If you are using RHEL 6 or CentOS 6, you might want to read about running Node.js >= 4.x on older distros.
curl -sL https://rpm.nodesource.com/setup_6.x | bash -

其他版本https://github.com/nodesource/distributions

yum install nodejs -y
npm install -g goog-webfont-dl

2、下载字体

例如 "http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,900"

goog-webfont-dl -a -f 'Source Sans Pro' -y '300,400,600,900'

这样字体就已经下载完成了,不仅生成了一个 Source Sans Pro 的目录,所有字体文件都在里面(包括 ttf eot woff woff2 svg),而且还在外面生成了一个 Source Sans Pro.css 文件。
不过 CSS 中的路径需要根据自己的需要修改一下。

3、使用字体
将字体文件复制到自己想要的目录,然后修改一下 CSS 文件将字体路径设置正确,就可以使用本地的字体。

4、修改使用字体的地方
WordPress主要是修改这两个地方
wp-content/themes/patus/functions.php
wp-includes/script-loader.php

向Windows Server 2016系统添加virtio驱动教程

Virtio 是 KVM 虚拟环境下针对 I/O 虚拟化的最主要的一个通用框架。
向Windows Server 2016系统添加virtio(Virtio)驱动,集成virtio驱动的Windows Server 2016的ISO镜像,在Vultr测试通过。
dism
向Windows Server 2016添加VirtIO驱动教程 集成virtio驱动的Windows Server 2016
步骤
1、安装软碟通(UltraISO)和Haozip, Haozip附带的虚拟光驱也要装上
2、安装ADK部署工具 https://developer.microsoft.com/en-us/windows/hardware/windows-assessment-deployment-kit
3、加载系统镜像cn_windows_server_2016_x64_dvd_9327743.iso到虚拟光驱
4、将boot.wim和install.wim发送到C盘
5、在C盘创建文件夹mount,将驱动解压到C盘virtio

6、以管理员权限运行”Windows PowerShell”或”Command”进入WAIK目录使用DISM (部署映像服务和管理)
C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools

查看wim文件包含的版本个数
dism /get-wiminfo /wimfile:C:/boot.wim 2
dism /get-wiminfo /wimfile:C:/install.wim 4

PS C:\Program Files\Windows AIK\Tools\PETools> dism /get-wiminfo /wimfile:C:/install.wim
索引: 1
名称: Windows Server 2016 Standard
描述: 此选项(推荐使用)仅安装运行大多数服务器角色和应用程序所需的内容,从而减少了
管理和维护工作量。它不包括 GUI,但你可以使用 Windows PowerShell 或其他工具通过本
地或远程方式完全管理服务器。有关更多详细信息,请参阅“Windows Server 安装选项”

大小: 9,615,846,310 个字节

索引: 2
名称: Windows Server 2016 Standard (桌面体验)
描述: 当需要 GUI 时,此选项很有用(例如,为无法在服务器核心安装上运行的应用程序提
供向后兼容性)。支持所有服务器角色和功能。有关更多详细信息,请参阅“Windows Serve
r 安装选项”。
大小: 15,599,232,154 个字节

索引: 3
名称: Windows Server 2016 Datacenter
描述: 此选项(推荐使用)仅安装运行大多数服务器角色和应用程序所需的内容,从而减少了
管理和维护工作量。它不包括 GUI,但你可以使用 Windows PowerShell 或其他工具通过本
地或远程方式完全管理服务器。有关更多详细信息,请参阅“Windows Server 安装选项”

大小: 9,617,008,508 个字节

索引: 4
名称: Windows Server 2016 Datacenter (桌面体验)
描述: 当需要 GUI 时,此选项很有用(例如,为无法在服务器核心安装上运行的应用程序提
供向后兼容性)。支持所有服务器角色和功能。有关更多详细信息,请参阅“Windows Serve
r 安装选项”。
大小: 15,595,966,258 个字节

7、添加virtio驱动到install.wim
dism /mount-wim /wimfile:C:/install.wim /index:1 /mountdir:C:/mount 挂载install.wim映像第一个索引
添加驱动
dism /mount-wim /wimfile:C:/install.wim /index:1 /mountdir:C:/mount
dism /image:C:\mount /add-driver /driver:C:\virtio\NetKVM\2k16\amd64\netkvm.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\vioscsi\2k16\amd64\vioscsi.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\viostor\2k16\amd64\viostor.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\viorng\2k16\amd64\viorng.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\vioserial\2k16\amd64\vioser.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\Balloon\2k16\amd64\balloon.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\qxldod\2k16\amd64\qxldod.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\pvpanic\2k16\amd64\pvpanic.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\qemupciserial\2k16\amd64\qemupciserial.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\qemufwcfg\2k16\amd64\qemufwcfg.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\vioinput\2k16\amd64\vioinput.inf
Dism /Image:C:\mount /Add-Package /PackagePath:E:\HOTFIX #添加补丁文件
dism /image:C:\mount /get-drivers #获取添加的驱动信息
dism /unmount-wim /mountdir:C:/mount /commit #卸载

添加virtio驱动后查看一下安装信息,查看是否添加到映像里面。如果驱动没经过微软认证的话,记得在添加驱动那一步结尾加上”/forceunsigned”参数
dism /image:C:\mount /get-drivers

dism /unmount-wim /mountdir:C:/mount /commit 卸载映像

第二个索引
dism /mount-wim /wimfile:C:/install.wim /index:2 /mountdir:C:/mount 挂载install.wim映像第二个索引
....
....
第三个索引
dism /mount-wim /wimfile:C:/install.wim /index:3 /mountdir:C:/mount 挂载install.wim映像第三个索引
....
....
第四个索引
dism /mount-wim /wimfile:C:/install.wim /index:4 /mountdir:C:/mount 挂载install.wim映像第四个索引
....
....
7、添加virtio驱动到boot.wim
dism /get-wiminfo /wimfile:C:/boot.wim
部署映像服务和管理工具
版本: 10.0.14393.0

映像的详细信息: C:/boot.wim

索引: 1
名称: Microsoft Windows PE (x64)
描述: Microsoft Windows PE (x64)
大小: 1,745,492,664 个字节

索引: 2
名称: Microsoft Windows Setup (x64)
描述: Microsoft Windows Setup (x64)
大小: 1,863,239,432 个字节

dism /mount-wim /wimfile:C:/boot.wim /index:1-2 /mountdir:C:/mount
dism /image:C:\mount /add-driver /driver:C:\virtio\NetKVM\2k16\amd64\netkvm.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\vioscsi\2k16\amd64\vioscsi.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\viostor\2k16\amd64\viostor.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\viorng\2k16\amd64\viorng.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\vioserial\2k16\amd64\vioser.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\Balloon\2k16\amd64\balloon.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\qxldod\2k16\amd64\qxldod.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\pvpanic\2k16\amd64\pvpanic.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\qemupciserial\2k16\amd64\qemupciserial.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\qemufwcfg\2k16\amd64\qemufwcfg.inf
dism /image:C:\mount /add-driver /driver:C:\virtio\vioinput\2k16\amd64\vioinput.inf
Dism /Image:C:\mount /Add-Package /PackagePath:E:\HOTFIX #添加补丁文件
dism /image:C:\mount /get-drivers #获取添加的驱动信息
dism /unmount-wim /mountdir:C:/mount /commit #卸载
----------------------------------------
NetKVM/: Virtio Network driver
viostor/: Virtio Block driver
vioscsi/: Virtio SCSI driver
viorng/: Virtio RNG driver
vioser/: Virtio serial driver
Balloon/: Virtio Memory Balloon driver
qxl/: QXL graphics driver for Windows 7 and earlier. (build virtio-win-0.1.103-1 and later)
qxldod/: QXL graphics driver for Windows 8 and later. (build virtio-win-0.1.103-2 and later)
pvpanic/: QEMU pvpanic device driver (build virtio-win-0.1.103-2 and later)
guest-agent/: QEMU Guest Agent 32bit and 64bit MSI installers
qemupciserial/: QEMU PCI serial device driver
*.vfd: VFD floppy images for using during install of Windows XP
-----------------------------------------------------------------------------------
添加virtio驱动脚本(未测试)

@echo off
set bootvar=0
set /p bootwimpath=请输入wim文件完整路径例如(D:\boot.wim):
set /p installlwimpath=请输入wim文件完整路径例如(D:\install.wim):
set /p temppath=请输入临时目录完整路径确保文件夹为空(例如:D:\temp):
set /p driverpath=请输入要加入的驱动路径(例如:D:\win2008r2):
dism /get-wiminfo /wimfile:%bootwimpath%
set /p bootcount=请输入当前boot.wim文件所包含的版本个数:
dism /get-wiminfo /wimfile:%installlwimpath%
set /p installcount=请输入当前install.wim文件所包含的版本个数:
rem ************循环开始了
:bootcontinue
set /a bootvar+=1
echo boot.wim第%bootvar%次循环 >>dism.log
echo ====================================================================================== >>dism.log
echo 为boot.wim加载驱动 >> dism.log
dism /mount-wim /wimfile:%bootwimpath% /index:%bootvar% /mountdir:%temppath% >>dism.log
dism /image:%temppath% /add-driver /driver:%driverpath% /recurse /forceunsigned >>dism.log
dism /unmount-wim /mountdir:%temppath% /commit >>dism.log
echo 等待5s准备导入下一版本,如需取消请立即按Ctrl+C >>dism.log
rem 等待10秒 ping本机10次不使用默认的次数,nul是不显示ping信息:
@ping -n 5 127.1>nul
if %bootvar% lss %bootcount% goto bootcontinue
rem ************循环结束了
echo boot.wim循环执行完毕 >>dism.log

set varinstall=0
rem ************循环开始了
:installcontinue
set /a varinstall+=1
echo install.wim第%varinstall%次循环 >>dism.log
echo ====================================================================================== >>dism.log
dism /mount-wim /wimfile:%installlwimpath% /index:%varinstall% /mountdir:%temppath% >>dism.log
dism /image:%temppath% /add-driver /driver:%driverpath% /recurse /forceunsigned >>dism.log
dism /unmount-wim /mountdir:%temppath% /commit >>dism.log
echo 等待5s准备导入下一版本,如需取消请立即按Ctrl+C >>dism.log
rem 等待10秒 ping本机10次不使用默认的次数,nul是不显示ping信息:
@ping -n 5 127.1>nul
if %varinstall% lss %installcount% goto installcontinue
rem ************循环结束了
echo install.wim循环执行完毕 >>dism.log
pause
在D:根目录创建一个test.bat文件,将上面脚本拷入文件中,执行脚本,输入所需路径参数 ,boot.wim版本数为2
-----------------------------------------------------------------------------------

8、封装处理
使用UltraISO, 打开cn_windows_server_2016_x64_dvd_9327743.iso将镜像里的boot.wim和install.wim删除(路径:/sources),
再将刚开始从镜像里提取到c盘的boot.wim和install.wim添加进去,然后保存即可。

Haozip http://haozip.com/
Windows 10 (Windows Server 2016) ADK https://developer.microsoft.com/en-us/windows/hardware/windows-assessment-deployment-kit
virtio驱动下载地址 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
virtio驱动相关说明 http://pve.proxmox.com/wiki/Windows_VirtIO_Drivers
DISM – 部署映像服务和管理 (DISM) 技术参考 http://technet.microsoft.com/zh-cn/library/hh824821.aspx

集成virtio驱动的Windows Server 2016的ISO镜像 http://arv.asuhu.com/cn_windows_server_2016_vl_x64_dvd_11636695_vitio_20180415.iso
集成virtio驱动的Windows 10 的ISO镜像 http://arv.asuhu.com/cn_windows_10_multi-edition_vl_version_1709_updated_dec_2017_x64_dvd_100406208_virtio_20180202.iso

CentOS6安装devtoolset(使用高版本gcc)GCC 4.8 GCC 4.9 GCC 5.2

CentOS6安装devtoolset(使用高版本gcc)GCC 4.8 GCC 4.9 GCC 5.2
Aria2要求gcc 4.8以上的版本才能编译,然而CentOS6源里的gcc版本才4.4

gcc_logo

GCC 4.8

wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo

yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ -y

临时编译前使用
export CC=/opt/rh/devtoolset-2/root/usr/bin/gcc
export CPP=/opt/rh/devtoolset-2/root/usr/bin/cpp
export CXX=/opt/rh/devtoolset-2/root/usr/bin/c++

以下为替换系统GCC,不建议这样操作
ln -s /opt/rh/devtoolset-2/root/usr/bin/* /usr/local/bin/
hash -r
gcc --version


GCC 4.9
wget https://copr.fedoraproject.org/coprs/rhscl/devtoolset-3/repo/epel-6/rhscl-devtoolset-3-epel-6.repo -O /etc/yum.repos.d/devtools-3.repo
yum install devtoolset-3-gcc devtoolset-3-binutils devtoolset-3-gcc-c++ -y

临时编译前使用
export CC=/opt/rh/devtoolset-3/root/usr/bin/gcc
export CPP=/opt/rh/devtoolset-3/root/usr/bin/cpp
export CXX=/opt/rh/devtoolset-3/root/usr/bin/c++


GCC 5.2
wget https://copr.fedoraproject.org/coprs/hhorak/devtoolset-4-rebuild-bootstrap/repo/epel-6/hhorak-devtoolset-4-rebuild-bootstrap-epel-6.repo -O /etc/yum.repos.d/devtools-4.repo
yum install devtoolset-4-gcc devtoolset-4-binutils devtoolset-4-gcc-c++ -y

临时编译前使用
export CC=/opt/rh/devtoolset-4/root/usr/bin/gcc
export CPP=/opt/rh/devtoolset-4/root/usr/bin/cpp
export CXX=/opt/rh/devtoolset-4/root/usr/bin/c++