「记录」解决Ubuntu Server 18.04因Intel微码修复无法启动问题

最近在重建学院GPU云,使用原来实验室云的双层虚拟化架构。原来实验室云使用的是基于ubuntu16的GPU服务器,21年再使用16版本就有点老了,准备换成ubuntu18,但是遇到一个奇怪的问题,在此记录一下。

问题的表现形式如下:

环境:

实体机:曙光 天阔 W780-G20
操作系统: VMware ESXi, 6.7.0, 14320388
管理平台: VMware vCenter Server Appliance, 6.7.0, 15129973
虚拟机兼容性: ESXi 6.7 Update 2
虚拟机高级配置附加参数:
hypervisor.cpuid.v0 = FALSE
pciPassthru.use64bitMMIO = TRUE
虚拟机操作系统版本:Ubuntu Server 18.04.5 LTS
截止2021年1月20日,已更新所有最新包

当虚拟机CPU只给一个核心的时候,一切正常。当给2个或者更多核心的时候会出现无法启动的问题,显示如下:

虚拟机无法启动的控制台输出

经过排查发现问题触发的原因有两个:①虚拟机高级配置参数 hypervisor.cpuid.v0 = FALSE;②有2个或更多CPU核心

通过搜索找到两篇类似问题的文章:ESXi 6.7 ubuntu GPU直连踩坑记VMware ESXi 6.7.0 update2 使用 GPU Passthrough 模式的坑。第一篇文章是通过更新esxi解决的,但是第一篇文章里更新后的esxi版本与我现在使用的是同一版本,所以解决方法对我不适用。第二篇文章将问题的根源指向了intel的漏洞修补微码软件包“intel-microcode”。

通过测试发现,无法启动的核心问题就是由“intel-microcode”导致的,该软件包是intel为了修补幽灵、熔断漏洞的补丁,应该是在启动之前执行某种防护操作。我测试时首先尝试卸载该软件包,并同时卸载依赖包,结果导致部分核心包被卸载,无法启动。之后测试只卸载该软件包,不卸载依赖,结果问题解决,确定问题核心就是该软件包导致。

为了解决问题,我首先想到的是在安装vsphere过程中被提示可能受intel的漏洞影响,所以我考虑可能是虚拟化平台的宿主机没有进行漏洞修补,而ubuntu虚拟机进行了漏洞修补,出现兼容性问题。为此我查阅了vsphere的文档,确定默认状态下vsphere6.7确实是不启用漏洞修补程序的。同时,我也发现启动修补程序会导致严重的性能损失,不适合我现在的场景。

之后,我考虑既然虚拟化平台没有进行漏洞修补,那关掉ubuntu虚拟机的漏洞修补应该可以解决问题。于是我阅读了第二篇文章中提到的讨论:Intel-microcode package upgrade in ubuntu 18.04 leads to unbootable system。根据这个讨论,可以通过更改grub参数的方式禁用微码修补,但是尝试了讨论中的解决方案和关联的解决方案,发现并没有效果。最终,我决定按照讨论中的最终解决方案,更换旧版本的二进制软件包。

解决方案:

「记录」在Ubuntu Server 1604上部署SOCKS5服务器dante-server

因为某些原因,我需要部署一台代理服务器,之前配置了http缓存代理,但是有些网站访问异常,而且有些软件不支持http代理,所以萌生了部署SOCKS5服务。

1、安装 dante-server

2、配置
备份配置文件

查找以下关键行进行修改

创建日志文件夹,并重启服务

使用Virtualenv创建独立Python开发环境

在使用Python进行开发时,经常需要安装各种包,如果同时开发多个项目,就有可能出现开发环境冲突的问题。通过使用Virtualenv来创建多个独立的Python开发环境,可以很好的解决环境冲突问题,也可以避免主系统环境被污染的问题。

安装

创建虚拟环境

Windows 激活虚拟环境

Linux 激活虚拟环境

Ubuntu 1604 安装nginx+php7+mysql+phpmyadmin环境

1. 安装 nginx 最新版本,使用以下命令:

2. 安装 php7 :(不要尝试直接apt-get install php7,这样会默认安装apache,ubuntu 16默认不能安装php5)

3. 安装 MySQL 数据库:

4. nginx管理操作

大括弧里是可选的操作,选一个,外面不需要加大括弧

5. 配置nginx

配置文件样本:

重启nginx:

6. 安装phpMyAdmin

「记录」树莓派raspbian-stretch系统安装LNMP环境 & 解决无法安装php5-mysql的问题

为了能让实验室的路由器一直保持登陆状态,但又不想使用非官方固件,因为非官方固件都不够稳定,所以买了一个树莓派 zero-w。
本着新硬件就要用新系统的想法,刷了官方才出了不到一个月的系统:2017-09-07-raspbian-stretch,然后在安装LNMP环境的过程中遇到很多奇怪的问题,在这里记录一下。

先插一个zero-w的网络配置过程,虽然不是什么大问题,但是着实坑了我很久。
正常刷好系统后,用电脑在/boot分区的根目录创建名为“wpa_supplicant.conf”的文本文件,内容为:

注意:WiFi名称不能包含“_”,就是下划线,因为有些情况下下划线和空格会混淆。WiFi加密模式只能为“WPA-PSK [TKIP]”,因为wpa不支持AES加密。
然后在/boot分区的根目录创建名为“ssh”的空目录,这样就会自动打开ssh服务。

配置好网络后,开始换源。

阿里云
Raspbian http://mirrors.aliyun.com/raspbian/raspbian/

清华大学
Raspbian http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

文件内容如下:

保存

配置LNMP环境

先上干货:

如果直接按照通常步骤直接安装php5-mysql,会提示如下错误:

为了解决这个问题,我参考了「libmysqlclient18 has no installation candidate」。
尝试手动下载并安装packages.debian.org提供的libmysqlclient18包,libmysqlclient18_5.5.57-0+deb8u1_armhf.deb,文件sha1:16237a52a6c3b945c30a8fdf401816277d7f2436。
手动安装libmysqlclient18后,可以成功安装php5-mysql。但是apt-get在安装完,重启php5-fpm的时候会出现以下错误:

尝试多次后,我发现之前参考的讨论里有人说使用archive.raspbian.org官方的libmysqlclient18包,于是进行尝试,并获得成功。
包下载地址:libmysqlclient18,sha1:a5f6877e856a58efbf9046f8db752646895b137b。

「记录」解决Ubuntu 16.04无法安装php5的问题

在Ubuntu 16.04 中默认无法安装php5,只能安装php7,直接用如下命令

会提示

按照这个文章中给出的解决方法,执行以下指令

通过基于ipv6的shadowsocks服务绕过校内ip网络限速

之前校内网一直没有限速,搭配千兆内网用着超级爽,下载就算跑不满千兆也能有20-30Mbps的水平。

但是因为最近校内无线网硬件升级,流量暴增,学校对校内网的每一个ip做了总入口流量限制,限速5Mbps!也就意味着每一个校内ip,只要是校外获取的流量,就会被限速。虽然没有限制校内流量的网速,但是校内的ftp资源站因为一些技术原因暂时不能用,而且校内ftp资源站也没有什么我喜欢的资源。因此,这个新的限速机制让经常需要下载美剧和电影的我十分恼火。

为了能随时有最新的剧看,也为了加速校内下载速度,就在自己的下载机安装了磁力分流软件。使用过程中我希望限制分流软件ipv4的上传速度,只对接入教育v6的用户做分流,在寻找限速软件的过程中,我意外的发现了这个文章「使用shadowsocks,搭建ipv6 VPN,让ipv4上ipv6,下载速度提升到100M」,于是欣喜的进行了配置,并成功绕过了限速!

把配置过程整理一下,分享出来。

首先我已经有了带公网ipv6地址的DO服务器,且这个服务器已经配置过基于ipv4的shadowsocks服务,我的这篇博文有介绍过「在ubuntu server上安装配置shadowsocks服务」,就不再重复了。

1、测试ipv6网络环境,在本地ping服务器的ipv6地址,保证本地到服务器的ipv6网络通畅。

2、更改服务器shadowsocks配置文件”/etc/shadowsocks.json”,内容为:

重点是这行

改成这样服务器的shadowsocks服务就同时支持ipv4和ipv6了,改好后重启shadowsocks服务。

3、更改本地shadowsocks客户端的服务器配置,在ip栏填入服务器的ipv6地址,测试连接是否正常。

迅雷加速:

保证shadowsocks客户端的本地端口正常

在迅雷的“系统设置-高级设置-代理设置”中添加本地代理

代理名称随便填,服务器填写127.0.0.1,端口填写shadowsocks客户端本地端口,类型选择Socks5;然后点击测试,测试成功点击确定。

我的DO服务器是新加坡节点的,实测把迅雷全部流量都走代理一切正常,效果如下。

K9C)9}4W$QSRV%`YW0}ZRGV

在ubuntu server上安装配置shadowsocks服务

新建配置文件/etc/shadowsocks.json,内容为:

server, server_port, password 需要自行根据自己的实际情况修改。

把这条命令放到这个文件下:/etc/rc.local,这样就能开机自动运行了。

「记录」使用ettercap进行基于ARP欺骗的中间人监听

首先,安装ettercap

然后,运行ettercap图形界面

v67e3bk9dc00ha8fex

Sniff -> Unified sniffing…

qq%e5%9b%be%e7%89%8720170108100825

选择想要使用的网卡,并确定

qq%e5%9b%be%e7%89%8720170108101028

Host -> Host list

qq%e5%9b%be%e7%89%8720170108101159

Host -> Scan for hosts

qq%e5%9b%be%e7%89%8720170108101509

找到想要监听的设备,添加target1

flj1te8nnuo8a9

对路由器添加target2

c8s0nkvk%d4aodx4b41hs

Mitm -> ARP poisoning…

xq3fitupuwxm9y0

qq%e5%9b%be%e7%89%8720170108102535

Start -> Start sniffing

g77dgsjyqlb7pcq8o0t

View -> Connections

4hub01rpa27rjh_4

确认已经成功监听后,就可以用其他工具抓包、攻击···

「记录」ubuntu搭建python开发环境

Ubuntu 14.04 换阿里云源

阿里云源列表

Ubuntu Server使用命令行版VPN客户端

为了能在外网玩上内网的MC服,朱总和我在腾讯云的学生优惠服务器上部署了一个VPN,想通过让内网MC服务器和客户端同时登录一个外网VPN的方式,曲线实现MC服务器和客户端处在同一局域网。

这样就涉及到让ubuntu server连接VPN的问题。

需要连接VPN的服务器是一台Ubuntu 14.04.3 LTS,使用pptp-linux软件连接VPN。

首先是安装软件包

确认已经安装好后,根据帮助使用pptpsetup建立VPN连接。

例如:

看到如下提示,表明连接成功。

 

ubuntu 1404 下安装 nginx+php5+mysql+phpmyadmin

1. 使用官方PPA安装 Nginx 最新版本,使用以下命令:

2. 安装 PHP:(不要尝试直接apt-get install php5,这样会默认安装apache)

3. 安装 MySQL 数据库:

4. nginx管理操作

5. 配置nginx

配置文件样本:

重启nginx:

6. 安装phpMyAdmin

参考资料:https://idefs.com/record-under-ubuntu-nginx-php5-mysql.html

Linux下批量替换文件名中的部分字段

从网上下载了一批旧的影视剧资源,命名倒是挺规范,但是不和我的胃口,想要重新命名。

但是不能用简单的批量重命名,因为原文件名里包含一个集名的字段,这个字段一定是不同的。如果用批量重命名,会导致这个字段消失,然而我想保留它,于是想批量替换掉我不想要的字段。

Mac上用brew安装了rename,默认安装的是Perl 语言版本。

命令格式:rename ‘s/原字符串/新字符串/’ 文件名

字符串支持正则,要注意字符元的使用和转义。

同时,原字符串只会在一个文件名中匹配一次,例如:

[舌尖上的中国][01][高清版][HR-HDTV].mp4

执行:rename ‘s/\]\[/./’

[舌尖上的中国.01][高清版][HR-HDTV].mp4

 

SSH攻击的检测与预防

经朋友提醒,意识到自己的服务器可能被SSH攻击,于是赶紧查了日志。

结果是:

10409 91.234.184.21
  3412 Failed
  1771 43.229.53.67
  1125 182.100.67.59
    270 218.87.109.253
    250 158.85.76.188
    233 27.191.209.88
    153 120.26.71.98
    148 218.65.30.92
    107 115.238.81.90
      70 222.186.21.100
      31 202.38.193.142
      27 218.98.39.43
      20 121.40.158.23
      18 218.5.9.226
      17 218.28.152.162
      15 222.186.21.71
      14 123.59.55.83
      13 119.167.156.38
      12 27.254.67.157
      12 103.6.223.61
      11 201.166.63.25
      11 119.163.120.202
      10 193.189.117.120
      10 107.150.19.184
        9 210.107.37.81
        9 202.99.207.123
        8 203.94.70.125
        8 180.210.201.106
        6 31.184.195.111
        6 187.62.210.26

这是要死的节奏啊,果然被试密码,仔细检查了日志,好在还没被破解,但是这样的事情很让人心烦!于是决定做一些预防措施。

换端口号,并禁止root登陆

测试不会冲突后修改

找到

Port 22

修改为自己想要的端口,找到

PermitRootLogin yes

改为 no 。

WordPress无法发送邮件问题的解决过程

前两天忘记了wordpress的后台密码,找回的过程中给出如下提示:

无法发送电子邮件。

可能原因:您的主机禁用了mail()函数。

后来发现注册的时候密码邮件发送也是不成功的,就寻思找个时间解决这个问题。

国庆假期刚好抽空研究,结果让我很惊讶,于是记录下来。

 

首先是wp提示禁用了mail()函数,但是之前在配置wecenter的时候已经把邮件发送调通了,一切正常。

但是毕竟提示了,那就测试一下吧。网上搜索,用个探针进行测试。

测试完全没有问题。然后又研究半天还是没找到头绪,决定彻底测试一下,确认不是mail()函数的问题,于是用了第二个探针。

这次发现个问题,网页显示发送完成,但是邮箱却收不到,看来是mail()函数运行中出了问题。

于是去找日志,结果发现根本没有日志,既找不到日志文件,又无法在系统日志中找到。不会是没装邮件程序吧,不应该啊,毕竟wecenter邮件好好的啊!还是检查下比较好。

返回

果然是没装!!!

So,直接安装好了。

 

树莓派更换软件源

1. 对原sources.list文件做备份

2. 修改sources.list

3. 更新软件列表

在R6300v2上安装Tomato固件并配置python环境

安装Optware
初始化JFFS分区:
192.168.1.1 > 系统管理 > JFFS > 启用 > 格式化
挂载/opt:

设定开机自动挂载
运行安装脚本:

安装软件包

终端不支持xterm-256color

在R6300v2的Tomato固件中使用nano和screen时出现不支持xterm-256color的情况,错误提示如下:
nano error: Error opening terminal: xterm-256color
screen error: Cannot find termcap entry for ‘xterm-256color’.
解决方案:
Quick fix: run TERM=xterm screen instead of screen.
参考资料: