Linux系统下获取内核kernel版本号

本文将会讲述如何在linux 系统下获取内核kernel的版本号信息。本文主要针对linux初学者。

下面我们通过两种方法来在获取当前linux系统的内核版本号。

1# 查看/proc/version

$ cat /proc/version
Linux version 4.11.0-14-generic (buildd@lcy01-08) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017

从上面的输出里,我们可以看到当前linux系统的内核版本是4.11.0.-14.

2# 通过uname 命令来查看内核版本

$ uname  -r

$ uname -mrs

命令输出如下:

Linux 4.11.0-14-generic x86_64

Ubuntu 下安装最新稳定版Linux内核kernel

本文将会讲述如何在Ubuntu 16.04 LTS 系统下安装最新版的linux内核。 在安装最新版内核前,需要需要考虑系统宕机风险,所以通常情况下,我们最好安装最新的稳定版本。

下面我们通过两种方法来在ubuntu系统下安装最新版的linux内核。

方法一:通过apt安装最新linux版本内核

1# 查看当前系统的linux内核版本

执行下面的命令:

$uname -mrs

命令输出如下:

Linux 4.4.0-62-generic x86_64

2# 查看当前可用的最新版本的linux 内核

执行下面的命令:

$ apt-cache search linux-generic

命令输出如下:

linux-generic - Complete Generic Linux kernel and headers
 linux-generic-lts-utopic - Complete Generic Linux kernel and headers (dummy transitional package)
 linux-generic-lts-vivid - Complete Generic Linux kernel and headers (dummy transitional package)
 linux-generic-lts-wily - Complete Generic Linux kernel and headers (dummy transitional package)
 linux-generic-lts-xenial - Complete Generic Linux kernel and headers (dummy transitional package)
 linux-image-4.4.0-21-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-21-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-generic-hwe-16.04 - Complete Generic Linux kernel and headers
 linux-generic-hwe-16.04-edge - Complete Generic Linux kernel and headers
 linux-image-4.10.0-14-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-19-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-20-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-21-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-22-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-24-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-26-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-27-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-28-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-30-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-32-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.11.0-13-generic - Linux kernel image for version 4.11.0 on 64 bit x86 SMP
 linux-image-4.11.0-14-generic - Linux kernel image for version 4.11.0 on 64 bit x86 SMP
 linux-image-4.4.0-22-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-24-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-28-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-31-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-34-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-36-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-38-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-42-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-43-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-45-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-47-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-51-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-53-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-57-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-59-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-62-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-63-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-64-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-66-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-67-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-70-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-71-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-72-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-75-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-77-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-78-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-79-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-81-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-83-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-87-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-89-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-91-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-92-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.8.0-34-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-36-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-39-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-41-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-42-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-44-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-45-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-46-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-49-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-51-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-52-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-53-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-54-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-56-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-4.8.0-58-generic - Linux kernel image for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-14-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-19-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-20-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-21-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-22-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-24-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-26-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-27-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-28-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-30-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-32-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.11.0-13-generic - Linux kernel extra modules for version 4.11.0 on 64 bit x86 SMP
 linux-image-extra-4.11.0-14-generic - Linux kernel extra modules for version 4.11.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-22-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-24-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-28-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-31-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-34-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-36-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-38-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-42-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-43-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-45-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-47-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-51-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-53-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-57-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-59-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-62-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-63-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-64-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-66-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-67-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-70-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-71-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-72-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-75-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-77-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-78-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-79-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-81-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-83-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-87-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-89-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-91-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-92-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-34-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-36-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-39-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-41-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-42-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-44-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-45-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-46-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-49-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-51-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-52-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-53-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-54-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-56-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP
 linux-image-extra-4.8.0-58-generic - Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP

从上面的命令输出中我们可以看到,当前的最新版本号是4.11.0-14

3# 安装最新的linux内核 4.11.0-14

执行下面命令:

$ sudo apt-get install linux-image-4.11.0-14-generic

命令输出如下:

正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 下列软件包是自动安装的并且现在不需要了:
 gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libnvpair1linux libssl-dev libssl-doc libuutil1linux libuv1-dev
 libzfs2linux libzpool2linux python-pkg-resources zfs-doc zlib1g-dev
 使用'apt autoremove'来卸载它(它们)。
 建议安装:
 fdutils linux-tools linux-headers-4.11.0-14-generic
 下列【新】软件包将被安装:
 linux-image-4.11.0-14-generic
 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 5 个软件包未被升级。
 需要下载 20.4 MB 的归档。
 解压缩后会消耗 70.7 MB 的额外空间。
 获取:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-image-4.11.0-14-generic amd64 4.11.0-14.20~16.04.1 [20.4 MB]
 已下载 20.4 MB,耗时 22秒 (894 kB/s)
 正在选中未选择的软件包 linux-image-4.11.0-14-generic。
 (正在读取数据库 ... 系统当前共安装有 67751 个文件和目录。)
 正准备解包 .../linux-image-4.11.0-14-generic_4.11.0-14.20~16.04.1_amd64.deb  ...
 Done.
 正在解包 linux-image-4.11.0-14-generic (4.11.0-14.20~16.04.1) ...
 正在设置 linux-image-4.11.0-14-generic (4.11.0-14.20~16.04.1) ...
 Running depmod.
 update-initramfs: deferring update (hook will be called later)
 Examining /etc/kernel/postinst.d.
 run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 update-initramfs: Generating /boot/initrd.img-4.11.0-14-generic
 W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
 run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 run-parts: executing /etc/kernel/postinst.d/update-notifier 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 Generating grub configuration file ...
 Found linux image: /boot/vmlinuz-4.11.0-14-generic
 Found initrd image: /boot/initrd.img-4.11.0-14-generic
 Found linux image: /boot/vmlinuz-4.4.0-62-generic
 Found initrd image: /boot/initrd.img-4.4.0-62-generic
 done

4# 重启ubuntu 系统

$ sudo reboot

5# 查看当前系统的最新linux内核版本

$ uname -mrs

方法二:通过下载最新内核deb包安装内核

1# 首先访问kernel.org 官方网站确定当前最新的稳定版本号
2# 从ubuntu kernel官方下载该版本kernel http://kernel.ubuntu.com/~kernel-ppa/mainline/
使用wget命令来下载内核deb包:

$wget  http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.12.8/linux-image-4.12.8-041208-generic_4.12.8-041208.201708161815_amd64.deb
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.12.8/linux-headers-4.12.8-041208_4.12.8-041208.201708161815_all.deb

3# 安装下载的.deb包

$ sudo dpkg -i *.db

4# 重启系统

$ sudo reboot

 

 

 

Ubuntu 16.4 系统基于bond(bond0)接口的网桥(br0)配置教程

本文将会讲述如何在Ubuntu 16.04 LTS 系统下基于现有的以太网接口配置Linux bond 网络,并基于bond设备配置网桥网络
Bond 配置需要安装ifensalve工具包, 网桥配置需要安装bridge-utils工具包。

1# ubuntu下安装ifenslave

执行下面的apt-get命令:

$ sudo apt-get install ifenslave

2# 安装bridge-utils

执行下面的apt-get 命令:

$ sudo apt-get install bridge-utils

命令输出如下:

正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 下列软件包是自动安装的并且现在不需要了:
 gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libnvpair1linux libssl-dev libssl-doc libuutil1linux libuv1-dev
 libzfs2linux libzpool2linux python-pkg-resources zfs-doc zlib1g-dev
 使用'apt autoremove'来卸载它(它们)。
 下列【新】软件包将被安装:
 bridge-utils
 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 5 个软件包未被升级。
 需要下载 28.6 kB 的归档。
 解压缩后会消耗 102 kB 的额外空间。
 获取:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 bridge-utils amd64 1.5-9ubuntu1 [28.6 kB]
 已下载 28.6 kB,耗时 0秒 (39.9 kB/s)
 正在选中未选择的软件包 bridge-utils。
 (正在读取数据库 ... 系统当前共安装有 67725 个文件和目录。)
 正准备解包 .../bridge-utils_1.5-9ubuntu1_amd64.deb  ...
 正在解包 bridge-utils (1.5-9ubuntu1) ...
 正在处理用于 man-db (2.7.5-1) 的触发器 ...
 正在设置 bridge-utils (1.5-9ubuntu1) ...

3# 编辑网络配置文件增加bond配置信息和网桥接口信息

首先有备份现有的网络接口配置文件/etc/network/interface, 执行命令:

$ cp /etc/network/interface /etc/network/interface.bak

编辑/etc/network/interface文件:

Vi /etc/network/interface

首先要基于两个以太网接口eth0 和eth1 创建bond0 接口,加入下面的配置内容:

auto bond0
 iface bond0 inet manual
 bond-lacp-rate 1
 post-up ifenslave bond0 eth0 eth1
 pre-down ifenslave -d bond0 eth0 eth1
 bond-slaves none
 bond-mode 4
 bond-lacp-rate fast
 bond-miimon 100
 bond-downdelay 0
 bond-updelay 0
 bond-xmit_hash_policy 1

然后编辑eth0 和eth1的配置,参照如下内容:

auto eth0
 iface eth0 inet manual
 bond-master bond0

auto eth2
 iface eth2 inet manual
 bond-master bond0

最后我们开始基于bond0 创建网桥br0,参照下面内容:

auto br0
 iface br0 inet static
 address 192.168.1.58
 network 255.255.255.248
 netmask 255.255.255.0
 gateway 192.168.1.1
 bridge_ports bond0
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0

保存退出。
如果是通过DHCP获取ip地址,则可以参照下面的配置:

auto br0
 iface br0 inet dhcp
 bridge_ports bond0
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0

4# 重启网络服务

执行下面命令:

$ sudo /etc/init.d/network restart

$ sudo  systemctl restart network

5# 查看bond状态信息

$ more /proc/net/bonding/bond0

更多阅读:
1. Ubuntu 16.04 系统下网桥(br0,br1)配置教程

Ubuntu 16.04 系统下网桥(br0,br1)配置教程

本文将会讲述如何在Ubuntu 16.04 LTS 系统下基于现有的以太网接口配置Linux网桥. 当我们在创建虚拟化环境(比如说LXC,KVM,Xen等)的时候,都需要配置网桥,让宿主机里的虚拟机通过配好的网桥接口和外部通信。

1# 安装bridge-utils

执行下面的apt-get 命令:

$ sudo apt-get install bridge-utils

命令输出如下:

正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 下列软件包是自动安装的并且现在不需要了:
 gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libnvpair1linux libssl-dev libssl-doc libuutil1linux libuv1-dev
 libzfs2linux libzpool2linux python-pkg-resources zfs-doc zlib1g-dev
 使用'apt autoremove'来卸载它(它们)。
 下列【新】软件包将被安装:
 bridge-utils
 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 5 个软件包未被升级。
 需要下载 28.6 kB 的归档。
 解压缩后会消耗 102 kB 的额外空间。
 获取:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 bridge-utils amd64 1.5-9ubuntu1 [28.6 kB]
 已下载 28.6 kB,耗时 0秒 (39.9 kB/s)
 正在选中未选择的软件包 bridge-utils。
 (正在读取数据库 ... 系统当前共安装有 67725 个文件和目录。)
 正准备解包 .../bridge-utils_1.5-9ubuntu1_amd64.deb  ...
 正在解包 bridge-utils (1.5-9ubuntu1) ...
 正在处理用于 man-db (2.7.5-1) 的触发器 ...
 正在设置 bridge-utils (1.5-9ubuntu1) ...

2# 编辑网络配置文件增加网桥接口

首先有备份现有的网络接口配置文件/etc/network/interface, 执行命令:

$ cp /etc/network/interface /etc/network/interface.bak

编辑/etc/network/interface文件

Vi /etc/network/interface

删除或注释掉跟eth0 相关的行,参照下面的配置:

auto br0
 iface br0 inet static
 address 192.168.1.58
 network 255.255.255.248
 netmask 255.255.255.0
 gateway 192.168.1.1
 bridge_ports eth0
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0

保存退出。

如果是通过DHCP获取ip地址,则可以参照下面的配置:

auto br0
 iface br0 inet dhcp
 bridge_ports eth0
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0

3# 重启网络服务

执行下面命令:

$ sudo /etc/init.d/network restart

$ sudo  systemctl restart network

如果需要临时创建网桥也可以使用brctl 命令,通过该命令创建的网桥,会在系统重启后消失。

查看brctl命令的选项:

$ brctl
root@ubuntutest:~# brctl
 Usage: brctl [commands]
 commands:
 addbr           <bridge>                add bridge
 delbr           <bridge>                delete bridge
 addif           <bridge> <device>       add interface to bridge
 delif           <bridge> <device>       delete interface from bridge
 hairpin         <bridge> <port> {on|off}        turn hairpin on/off
 setageing       <bridge> <time>         set ageing time
 setbridgeprio   <bridge> <prio>         set bridge priority
 setfd           <bridge> <time>         set bridge forward delay
 sethello        <bridge> <time>         set hello time
 setmaxage       <bridge> <time>         set max message age
 setpathcost     <bridge> <port> <cost>  set path cost
 setportprio     <bridge> <port> <prio>  set port priority
 show            [ <bridge> ]            show a list of bridges
 showmacs        <bridge>                show a list of mac addrs
 showstp         <bridge>                show bridge stp info
 stp             <bridge> {on|off}       turn stp on/off

查看网桥状态

$ sudo brctl show

更多阅读:
1. Ubuntu 16.4 系统基于bond(bond0)接口的网桥(br0)配置教程

搞定!

Ubuntu 16.04 系统下安装ZFS文件系统

本文将会讲述如何在Ubuntu 16.04 LTS 系统里安装并使用ZFS文件系统

ZFS 是由 Sun Microsystems(在 Jeff Bonwick 下)设计和开发的,在 2004 年首次公布,并在 2005 年集成到 Sun Solaris 中)。虽然将最流行的开放式操作系统与谈论最多的、功能最丰富的文件系统配对在一起是最理想的匹配,但是许可证问题限制了集成。Linux 受 GNU 公共许可证(General Public License,GPL)保护,而 ZFS 是遵循由 Sun 的通用开发和发布许可证(Common Development and Distribution License,CDDL)的。这些许可证协议的目标不同,各自的限制会有些冲突。所幸,这并不意味着您作为 Linux 用户不能享受 ZFS 及其供的功能。- 摘自IBM developerworks

ZFS 文件系统作为一种高级的文件系统以及逻辑卷管理工具,可以应用在大多数的Unix或类Unix系统上,如:Solaris, FreeBSD, Linux系统等。
ZFS文件系统的优势可以提供数据保护,数据压缩,卷管理,snapshot, 数据一致性以及对大容量的支持等。

1# Ubuntu16.04 上安装ZFS

执行下面的apt-get命令:

$ sudo apt-get install zfs

或者

$ sudo apt-get install zfsutils-linux

命令输出如下:

正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 注意,选中 'zfsutils-linux' 而非 'zfs'
 下列软件包是自动安装的并且现在不需要了:
 gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libssl-dev libssl-doc libuv1-dev python-pkg-resources zlib1g-dev
 使用'sudo apt autoremove'来卸载它(它们)。
 将会同时安装下列软件:
 libnvpair1linux libuutil1linux libzfs2linux libzpool2linux zfs-doc zfs-zed
 建议安装:
 default-mta | mail-transport-agent samba-common-bin nfs-kernel-server zfs-initramfs
 下列【新】软件包将被安装:
 libnvpair1linux libuutil1linux libzfs2linux libzpool2linux zfs-doc zfs-zed zfsutils-linux
 升级了 0 个软件包,新安装了 7 个软件包,要卸载 0 个软件包,有 5 个软件包未被升级。
 需要下载 897 kB 的归档。
 解压缩后会消耗 2,902 kB 的额外空间。
 您希望继续执行吗? [Y/n] y
 获取:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 zfs-doc all 0.6.5.6-0ubuntu17 [50.1 kB]
 获取:2 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libuutil1linux amd64 0.6.5.6-0ubuntu17 [27.4 kB]
 获取:3 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libnvpair1linux amd64 0.6.5.6-0ubuntu17 [23.5 kB]
 获取:4 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libzpool2linux amd64 0.6.5.6-0ubuntu17 [384 kB]
 获取:5 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libzfs2linux amd64 0.6.5.6-0ubuntu17 [107 kB]
 获取:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 zfsutils-linux amd64 0.6.5.6-0ubuntu17 [276 kB]
 获取:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 zfs-zed amd64 0.6.5.6-0ubuntu17 [29.7 kB]
 已下载 897 kB,耗时 4秒 (220 kB/s)
 正在选中未选择的软件包 zfs-doc。
 (正在读取数据库 ... 系统当前共安装有 67612 个文件和目录。)
 正准备解包 .../zfs-doc_0.6.5.6-0ubuntu17_all.deb  ...
 正在解包 zfs-doc (0.6.5.6-0ubuntu17) ...
 正在选中未选择的软件包 libuutil1linux。
 正准备解包 .../libuutil1linux_0.6.5.6-0ubuntu17_amd64.deb  ...
 正在解包 libuutil1linux (0.6.5.6-0ubuntu17) ...
 正在选中未选择的软件包 libnvpair1linux。
 正准备解包 .../libnvpair1linux_0.6.5.6-0ubuntu17_amd64.deb  ...
 正在解包 libnvpair1linux (0.6.5.6-0ubuntu17) ...
 正在选中未选择的软件包 libzpool2linux。
 正准备解包 .../libzpool2linux_0.6.5.6-0ubuntu17_amd64.deb  ...
 正在解包 libzpool2linux (0.6.5.6-0ubuntu17) ...
 正在选中未选择的软件包 libzfs2linux。
 正准备解包 .../libzfs2linux_0.6.5.6-0ubuntu17_amd64.deb  ...
 正在解包 libzfs2linux (0.6.5.6-0ubuntu17) ...
 正在选中未选择的软件包 zfsutils-linux。
 正准备解包 .../zfsutils-linux_0.6.5.6-0ubuntu17_amd64.deb  ...
 正在解包 zfsutils-linux (0.6.5.6-0ubuntu17) ...
 正在选中未选择的软件包 zfs-zed。
 正准备解包 .../zfs-zed_0.6.5.6-0ubuntu17_amd64.deb  ...
 正在解包 zfs-zed (0.6.5.6-0ubuntu17) ...
 正在处理用于 libc-bin (2.23-0ubuntu9) 的触发器 ...
 正在处理用于 initramfs-tools (0.122ubuntu8.8) 的触发器 ...
 update-initramfs: Generating /boot/initrd.img-4.4.0-62-generic
 W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
 正在处理用于 systemd (229-4ubuntu19) 的触发器 ...
 正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
 正在处理用于 man-db (2.7.5-1) 的触发器 ...
 正在设置 zfs-doc (0.6.5.6-0ubuntu17) ...
 正在设置 libuutil1linux (0.6.5.6-0ubuntu17) ...
 正在设置 libnvpair1linux (0.6.5.6-0ubuntu17) ...
 正在设置 libzpool2linux (0.6.5.6-0ubuntu17) ...
 正在设置 libzfs2linux (0.6.5.6-0ubuntu17) ...
 正在设置 zfsutils-linux (0.6.5.6-0ubuntu17) ...
 zfs-import-cache.service is a disabled or a static unit, not starting it.
 zfs-import-scan.service is a disabled or a static unit, not starting it.
 zfs-mount.service is a disabled or a static unit, not starting it.
 正在处理用于 initramfs-tools (0.122ubuntu8.8) 的触发器 ...
 update-initramfs: Generating /boot/initrd.img-4.4.0-62-generic
 W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
 正在设置 zfs-zed (0.6.5.6-0ubuntu17) ...
 zed.service is a disabled or a static unit, not starting it.
 正在处理用于 libc-bin (2.23-0ubuntu9) 的触发器 ...
 正在处理用于 systemd (229-4ubuntu19) 的触发器 ...
 正在处理用于 ureadahead (0.100.0-19) 的触发器 ...

2# 创建ZFS 磁盘映像文件

输入下面的命令:

$ sudo mkdir zfsdev
 $ cd zfsdev
 $ dd if=/dev/zero of=disk1.img bs=1M count=100
 $ dd if=/dev/zero of=disk2.img bs=1M count=100

命令输出如下:

root@ubuntutest:~# mkdir zfsdev
 root@ubuntutest:~# cd zfsdev/
 root@ubuntutest:~/zfsdev# ls
 root@ubuntutest:~/zfsdev# dd if=/dev/zero of=disk1.img bs=1M count=10
 10+0 records in
 10+0 records out
 10485760 bytes (10 MB, 10 MiB) copied, 0.017591 s, 596 MB/s
 root@ubuntutest:~/zfsdev# dd if=/dev/zero of=disk2.img bs=1M count=10
 10+0 records in
 10+0 records out
 10485760 bytes (10 MB, 10 MiB) copied, 0.01482 s, 708 MB/s
 root@ubuntutest:~/zfsdev# ls
 disk1.img  disk2.img

3# 创建ZFS存储池

创建zfs存储池可以使用物理磁盘,分区,或者我们上面创建的磁盘映像文件。
命令格式如下:

Zpool create 存储池名 mirror 磁盘名1 磁盘名2 ...

安装ZFS-FUSE

如果使用磁盘映像文件来构建ZFS存储池,还需要安装ZFS-FUSE 软件包,其可以实现在没有内核代码的情况下实现在用户空间中创建文件系统,是用户和文件系统实现从内核文件系统个接口到用户空间的桥梁。
输入下面的命令安装ZFS-FUSE:

$ Sudo apt-get install zfs-fuse

命令输出如下:

正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 下列软件包是自动安装的并且现在不需要了:
 gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libnvpair1linux libssl-dev libssl-doc libuutil1linux libuv1-dev
 libzfs2linux libzpool2linux python-pkg-resources zfs-doc zlib1g-dev
 使用'apt autoremove'来卸载它(它们)。
 建议安装:
 nfs-kernel-server kpartx
 下列软件包将被【卸载】:
 zfs-zed zfsutils-linux
 下列【新】软件包将被安装:
 zfs-fuse
 升级了 0 个软件包,新安装了 1 个软件包,要卸载 2 个软件包,有 5 个软件包未被升级。
 需要下载 725 kB 的归档。
 解压缩后会消耗 2,422 kB 的额外空间。
 您希望继续执行吗? [Y/n] y
 获取:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 zfs-fuse amd64 0.7.0-12ubuntu1 [725 kB]
 已下载 725 kB,耗时 1秒 (377 kB/s)
 (正在读取数据库 ... 系统当前共安装有 67760 个文件和目录。)
 正在卸载 zfs-zed (0.6.5.6-0ubuntu17) ...
 正在卸载 zfsutils-linux (0.6.5.6-0ubuntu17) ...
 正在处理用于 man-db (2.7.5-1) 的触发器 ...
 正在处理用于 initramfs-tools (0.122ubuntu8.8) 的触发器 ...
 update-initramfs: Generating /boot/initrd.img-4.4.0-62-generic
 W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
 正在选中未选择的软件包 zfs-fuse。
 (正在读取数据库 ... 系统当前共安装有 67695 个文件和目录。)
 正准备解包 .../zfs-fuse_0.7.0-12ubuntu1_amd64.deb  ...
 正在解包 zfs-fuse (0.7.0-12ubuntu1) ...
 正在处理用于 man-db (2.7.5-1) 的触发器 ...
 正在处理用于 systemd (229-4ubuntu19) 的触发器 ...
 正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
 正在设置 zfs-fuse (0.7.0-12ubuntu1) ...
 update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
 正在处理用于 systemd (229-4ubuntu19) 的触发器 ...
 正在处理用于 ureadahead (0.100.0-19) 的触发器 ...

启动zfs-fuse 服务

$ sudo systemctl start zfs-fuse

关联磁盘映像文件和环路loop设备

$ sudo losetup /dev/loop0 /root/zfsdev/disk1.img
 $ sudo losetup /dev/loop1 /root/zfsdev/disk2.img

创建ZFS存储池myzfspool

基于上面创建的磁盘映像文件disk1.img 和disk2.img 创建存储池, 执行下面命令:

$ sudo zpool create myzfspool mirror disk1.img disk2.img

查看ZFS存储池状态

$ sudo zfs status
 $ sudo zfs list

命令输出如下:

root@ubuntutest:~# zpool status
 pool: myzfspool
 state: ONLINE
 scrub: none requested
 config:

NAME        STATE     READ WRITE CKSUM
 myzfspool   ONLINE       0     0     0
 mirror-0  ONLINE       0     0     0
 loop0   ONLINE       0     0     0
 loop1   ONLINE       0     0     0

errors: No known data errors
 root@ubuntutest:~# zfs list
 NAME        USED  AVAIL  REFER  MOUNTPOINT
 myzfspool    75K  63.4M    21K  /myzfspool

查看存储池的I/O 状态

$ sudo zpool iostat

输出如下:

root@ubuntutest:~# zpool  iostat
 capacity     operations    bandwidth
 pool        alloc   free   read  write   read  write
 ----------  -----  -----  -----  -----  -----  -----
 myzfspool   79.5K  95.4M      0      0     14    375

4# 创建ZFS 文件系统

现在我们在myzfspool存储池上创建名为zfsdir 的ZFS文件系统, 执行下面的命令:

$ sudo zfs create myzfspool

查看文件系统状态

$ sudo zfs list

$ mount | grep myzfspool

命令输出:

root@ubuntutest:/myzfspool# zfs list
 NAME               USED  AVAIL  REFER  MOUNTPOINT
 myzfspool          108K  63.4M    24K  /myzfspool
 myzfspool/zfsdir    21K  63.4M    21K  /myzfspool/zfsdir

root@ubuntutest:/myzfspool# mount | grep myzfspool
 myzfspool on /myzfspool type fuse.zfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
 myzfspool/zfsdir on /myzfspool/zfsdir type fuse.zfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)

5# 删除ZFS存储池

$ sudo zpool destroy 存储池名
 $ sudo zpool destroy myzfspool

Ubuntu 16.04系统下使用apt-fast取代apt-get来加速apt

本文将会讲述如何在Ubuntu 16.04 LTS 系统里安装并使用apt-fast 来取代apt-get 工具加速apt 下载并安装软件包。
Apt-fast会通过axel的多线程连接来下载软件包,这样会比ap-get 下载速度提高很多。

1# 为了使用PPA 个人软件包集,需要先安装software-properties-common包

执行下面的命令:

$ sudo apt-get install software-properties-common

命令输出如下:

正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 software-properties-common 已经是最新版 (0.96.20.7)。
 下列软件包是自动安装的并且现在不需要了:
 gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libssl-dev libssl-doc libuv1-dev python-pkg-resources zlib1g-dev
 使用'sudo apt autoremove'来卸载它(它们)。
 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 3 个软件包未被升级。

2# 安装apt-fast 工具

在ubunt 11.04到13.10 版本上,执行下面的命令:

$ sudo apt-get install axel aria2
 $ sudo apt-add-repository ppa:apt-fast/stable
 $ sudo apt-get update
 $ sudo apt-get install apt-fast

对于ubuntu 14.04 到16.04 版本上,执行下面的命令:

sudo add-apt-repository ppa:saiarcot895/myppa
 sudo apt-get update
 sudo apt-get -y install apt-fast

3# 使用apt-fast 安装软件包

$ sudo apt-fast install 软件包名

例如:

$ sudo apt-fast install vim

4# 使用apt-fast 删除软件包

$ sudo apt-fast remove 软件包
 $ sudo apt-fast remove vim

使用apt-fast 下载源码包

$ sudo apt-fast source 软件包名

使用apt-fast 下载二进制软件包

$ sudo apt-fast download 软件报名
 $ sudo apt-fast download firefox

更多关于apt-fast的信息可以访问其官方网站:https://github.com/ilikenwf/apt-fast/

Ubuntu 16.04 系统下安装并配置denyhosts预防SSH暴力攻击

本文将会通过如何在Ubuntu 16.4 LTS Linux系统下安装并配置denyhosts 工具来预防远程SSH暴力攻击。

DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。
– 摘自百度百科

1# 安装denyhosts

执行下面的apt-get 命令:

$ sudo apt-get install denyhosts

命令输出:

正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 下列软件包是自动安装的并且现在不需要了:
 gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libssl-dev libssl-doc libuv1-dev python-pkg-resources zlib1g-dev
 使用'apt autoremove'来卸载它(它们)。
 下列【新】软件包将被安装:
 denyhosts
 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 3 个软件包未被升级。
 需要下载 56.5 kB 的归档。
 解压缩后会消耗 294 kB 的额外空间。
 获取:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 denyhosts all 2.10-2 [56.5 kB]
 已下载 56.5 kB,耗时 1秒 (50.2 kB/s)
 正在选中未选择的软件包 denyhosts。
 (正在读取数据库 ... 系统当前共安装有 67566 个文件和目录。)
 正准备解包 .../denyhosts_2.10-2_all.deb  ...
 正在解包 denyhosts (2.10-2) ...
 正在处理用于 man-db (2.7.5-1) 的触发器 ...
 正在处理用于 systemd (229-4ubuntu19) 的触发器 ...
 正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
 正在设置 denyhosts (2.10-2) ...
 正在处理用于 systemd (229-4ubuntu19) 的触发器 ...
 正在处理用于 ureadahead (0.100.0-19) 的触发器 ...

2# 将你自己的ip地址加入到白名单里

这里我们需要将你的客户端主机ip地址加入到运行ssh连接的白名单配置文件里,编辑”/etc/hosts.allow” 文件,加入下面的行:

Sshd: 白名单ip1, 白名单ip2...

例如:

 Sshd: 192.168.1.2, 192.168.1.3

保存并退出文件。

3# 编辑denyhosts工具配置文件”/etc/denyhosts.conf”

$ sudo vim /etc/denyhosts.conf

查看配置文件中的设置是否和下面一致,如不一致,更改:

SECURE_LOG = /var/log/auth.log
 HOSTS_DENY = /etc/hosts.deny
 BLOCK_SERVICE  = sshd
 DENY_THRESHOLD_INVALID = 5
 DENY_THRESHOLD_VALID = 10
 DENY_THRESHOLD_ROOT = 1D
 IPTABLES = /sbin/iptables
 ENY_THRESHOLD_RESTRICTED = 1

保存并退出文件。

4# 重启denyhosts 服务

在ubuntu 16.04 LTS 系统上执行下面的命令:

$ sudo systemctl restart denyhosts.service

5# 查看denyhosts的日志文件

执行下面的命令:

$ sudo tail -f /var/log/denyhosts

命令输出如下:

root@ubuntutest:~# tail -f /var/log/denyhosts
 2017-08-17 10:19:01,553 - denyhosts   : INFO     Creating new firewall rule /sbin/iptables -I INPUT -s 192.168.1.20 -j DROP
 2017-08-17 10:19:01,579 - denyhosts   : INFO     new denied hosts: ['192.168.1.20']
 2017-08-17 10:19:01,581 - denyhosts   : INFO     launching DenyHosts daemon (version 2.10)...
 2017-08-17 10:19:01,589 - denyhosts   : INFO     DenyHost daemon is now running, pid: 8027
 2017-08-17 10:19:01,590 - denyhosts   : INFO     send daemon process a TERM signal to terminate cleanly
 2017-08-17 10:19:01,590 - denyhosts   : INFO       eg.  kill -TERM 8027
 2017-08-17 10:19:01,590 - denyhosts   : INFO     monitoring log: /var/log/auth.log
 2017-08-17 10:19:01,591 - denyhosts   : INFO     sync_time: 3600
 2017-08-17 10:19:01,592 - denyhosts   : INFO     purging of /etc/hosts.deny is disabled
 2017-08-17 10:19:01,592 - denyhosts   : INFO     denyhost synchronization disabled

6# 查看被阻止ssh连接的IP黑名单列表

执行下面的命令:

$ sudo  cat /etc/hosts.deny |grep sshd

命令输出如下:

root@ubuntutest:~# cat /etc/hosts.deny  | grep sshd
 sshd: 192.168.1.20

更多关于denyhosts 工具的信息,可以访问其官方站点:http://denyhosts.sourceforge.net/

Ubuntu 16.04 系统下安装node.js

本文将会通过两种方法来讲述如何在Ubuntu 16.4 LTS Linux系统下安装node.js
Node.js是一种运行在服务器端的JavaScript运行环境。

方法1: 通过apt-get 命令来安装Ubuntu 发行方repo里的版本

执行下面的apt-get 命令:

$ sudo apt-get install nodejs npm

命令输出如下:

root@ubuntutest:~# apt-get install nodejs npm
 正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 将会同时安装下列软件:
 ......
 建议安装:
 ......

下列【新】软件包将被安装:
 ......
 下列软件包将被升级:
 libc6 libssl1.0.0 zlib1g
 升级了 3 个软件包,新安装了 104 个软件包,要卸载 0 个软件包,有 123 个软件包未被升级。
 需要下载 54.6 MB 的归档。
 解压缩后会消耗 201 MB 的额外空间。
 您希望继续执行吗? [Y/n]Y

查看Node.js 版本

执行下面的命令:
 $ nodejs --version
 v4.2.6

方法2: 安装最新版本的Node.js 6.x (稳定版本)或 7.x

首先要安装Node.js 6.x 的repo,执行下面的命令:

$ curl -sL https://deb.nodesource.com/setup_t.x | sudo -E bash -

安装node.js 6.x 版本,执行命令:

$ sudo apt-get install nodejs build-essential

安装node.js 7.x 最新版本,执行下面的命令:

$ curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
 $ sudo apt-get install -y nodejs build-essential

更多关于node.js 的信息可以查看其官方网站 https://nodejs.org/en/

Ubuntu 16.04 系统下安装 MySQL Server 5.7详细教程

本文将会讲述如何在Ubuntu 16.4 LTS Linux系统(Xenial Xerus)下安装,配置并且管理MySQL Server 5.7. 该版本是现在最新的MySQL 数据库发布版本。

1# 更新当前ubuntu16.04 系统

执行下面的命令:

 $ sudo apt update
 $ sudo apt upgrade

命令输出如下:

root@ubuntutest:~# apt update
 命中:1 http://archive.ubuntu.com/ubuntu xenial InRelease
 获取:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
 获取:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]
 获取:4 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB]
 获取:5 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [344 kB]
 获取:6 http://security.ubuntu.com/ubuntu xenial-security/main i386 Packages [322 kB]
 获取:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [619 kB]
 获取:8 http://security.ubuntu.com/ubuntu xenial-security/main Translation-en [145 kB]
 获取:9 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [156 kB]
 获取:10 http://archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages [595 kB]
 获取:11 http://security.ubuntu.com/ubuntu xenial-security/universe i386 Packages [137 kB]
 获取:12 http://security.ubuntu.com/ubuntu xenial-security/universe Translation-en [79.8 kB]
 获取:13 http://archive.ubuntu.com/ubuntu xenial-updates/main Translation-en [250 kB]
 获取:14 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [517 kB]
 获取:15 http://archive.ubuntu.com/ubuntu xenial-updates/universe i386 Packages [497 kB]
 获取:16 http://archive.ubuntu.com/ubuntu xenial-updates/universe Translation-en [202 kB]
 已下载 4,169 kB,耗时 5秒 (771 kB/s)
 正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 有 126 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
root@ubuntutest:~# sudo apt upgrade
 正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 正在计算更新... 完成
 下列【新】软件包将被安装:
 linux-headers-4.4.0-92 linux-headers-4.4.0-92-generic linux-image-4.4.0-92-generic linux-image-extra-4.4.0-92-generic
 下列软件包将被升级:
 ......
 uuid-runtime vlan wget zlib1g
 升级了 126 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
 需要下载 165 MB 的归档。
 解压缩后会消耗 317 MB 的额外空间。
 您希望继续执行吗? [Y/n] Y

2# 在Ubuntu 16.04 LTS 系统上安装MySQL 5.7

执行下面的命令:

$ sudo apt-get install mysql-server mysql-client

命令输出如下:

root@ubuntutest:~# apt-get install mysql-server mysql-client
 正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 将会同时安装下列软件:
 libaio1 libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.0-5 libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
 libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libtimedate-perl liburi-perl mysql-client-5.7
 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
 建议安装:
 libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx tinyca
 下列【新】软件包将被安装:
 libaio1 libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.0-5 libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
 libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libtimedate-perl liburi-perl mysql-client
 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server mysql-server-5.7 mysql-server-core-5.7
 升级了 0 个软件包,新安装了 22 个软件包,要卸载 0 个软件包,有 126 个软件包未被升级。
 需要下载 18.5 MB 的归档。
 解压缩后会消耗 163 MB 的额外空间。
 您希望继续执行吗? [Y/n] Y

安装过程中会弹出MySQL root 用户密码输入窗口:

ubuntu 1604 mysql 5.7 root user password

3# 运行mysql_secure_installation 命令来设置MySQL 的安全配置

执行命令:

$ sudo mysql_secure_installation

命令输出如下:

root@ubuntutest:~# sudo mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD PLUGIN can be used to test passwords
 and improve security. It checks the strength of password
 and allows the users to set only those passwords which are
 secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW    Length >= 8
 MEDIUM Length >= 8, numeric, mixed case, and special characters
 STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
 Using existing password for root.

Estimated strength of the password: 50
 Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

... skipping.
 By default, a MySQL installation has an anonymous user,
 allowing anyone to log into MySQL without having to have
 a user account created for them. This is intended only for
 testing, and to make the installation go a bit smoother.
 You should remove them before moving into a production
 environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
 Success.

Normally, root should only be allowed to connect from
 'localhost'. This ensures that someone cannot guess at
 the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
 Success.

By default, MySQL comes with a database named 'test' that
 anyone can access. This is also intended only for testing,
 and should be removed before moving into a production
 environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
 Success.

- Removing privileges on test database...
 Success.

Reloading the privilege tables will ensure that all changes
 made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
 Success.

All done!
 root@ubuntutest:~#

该命令将会修改root用户密码,禁用或者删除匿名用户,禁止MySQL root 用户远程登录,删除测试数据库等操作,进而可以确保MySQL 数据库的安全。

4# 连接MySQL Server

执行下面的命令来登录到MySQL server:

$ sudo mysql -u root -p

此时需要输入mysql root 用户的密码。

命令输出如下:

root@ubuntutest:~# mysql -u root -p
 Enter password:
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 7
 Server version: 5.7.19-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

5# 创建数据库

执行下面的命令:
Create database 数据库名;

比如创建一个名为myosetcdb的数据库:

mysql> create database myosetcdb;
 Query OK, 1 row affected (0.00 sec)

mysql> show databases;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | myosetcdb          |
 | mysql              |
 | performance_schema |
 | sys                |
 +--------------------+
 5 rows in set (0.00 sec)

可以使用”show databases” 命令来查看当前server的数据库列表。

启动MySQL 服务

$ sudo systemctl start mysql.service

停止MySQL 服务

$ sudo systemctl stop mysql.service

重启MysQL 服务

$ sudo systemctl restart mysql.service

查看MySQL 服务的运行状态

$ sudo systemctl status mysql.service

命令输出如下:

● mysql.service - MySQL Community Server
 Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
 Active: active (running) since 三 2017-08-16 14:28:46 CST; 15min ago
 Main PID: 6195 (mysqld)
 CGroup: /system.slice/mysql.service
 └─6195 /usr/sbin/mysqld

8月 16 14:28:45 ubuntutest systemd[1]: Starting MySQL Community Server...
 8月 16 14:28:46 ubuntutest systemd[1]: Started MySQL Community Server.

重置mysql root 用户的密码

执行下面的命令来更改MySQL root 用户的密码:

$ sudo dpkt-reconfigure mysql-server-5.7

更多详情请参考另一篇文章 ”重置mysql root 用户的密码

重置MySQL root 账户密码

本文将会讲述如何重置MySQL 里的root用户密码。 如果你忘记了mysql的root密码,那么我们可以通过下面的方法来实现重新设置mysql root 密码。

1# 关闭MySQL 服务

输入下面的命令:

# /etc/init.d/mysql stop

命令输出如下:

Stopping MySQL database server: mysqld

 

2# 通过mysql_safe 启动MySQL 服务
输入下面命令:

# mysql_safe --skip-grant-tables &

命令输出如下:

Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[2211]: started

 

3# 使用MySQL 客户端程序连接MysQL 服务器
输入命令:

# mysql -uroot

输出如下:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version:

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

 

4# 设置行的MySQL root用户密码
执行下面的sql命令:

mysql> use mysql;
mysql> update user set password=PASSWORD("新密码") where User='root';
mysql> flush privileges;
mysql> quit

 

5# 关闭MySQL 服务

# /etc/init.d/mysql stop

 

6# 重启MySQL 服务并用root 密码连接到MySQL 里
输入下面命令重启MySQL 服务:

# /etc/init.d/mysql start

执行下面命令连接到MySQL 上:

# mysql -u root -p

此时会要求你输入root用户密码,也就是我们刚才重新设置的新密码。