给ESXI 6.7直通Nvidia显卡并安装显卡驱动

新整了一台电脑,因为经常使用虚拟机工作,便直接安装了ESXI 6.7版本,不需要宿主系统了。
整理了一下将机器上nvidia显卡直通到虚拟机中使用碰到的一些问题以及解决方法:
1. 首先在ESXI管理界面中选择 主机=》管理=》硬件=>PCI设备 将要直通的显卡选上直通,然后重新启动ESXI提供使直通可以起作用
2. 新建虚拟机,添加直通设备 虚拟硬件=》添加其他设备 选择PCI设备,然后下拉选择在步骤1中直通的显卡设备
3. 在虚拟机的选项 虚拟机选项=>高级=》配置参数 编辑配置 按钮中添加一个配置 hypervisor.cpuid.v0=FALSE
4. 开始在新建的虚拟中安装系统
5. 对Win系统,安装好系统后,进入系统下载安装nvidia的驱动程序,重启后可以看到显卡是一个惊叹号,禁用掉esxi自带的svga,然后重启系统,显卡驱动正常。
但是使用 GPU-Z 检查,发现 CUDA 等功能没有,不知道如何解决
6. 对ubuntu 系统,安装好系统后,先将驱动下载下来
进入控制台 sudo vi /etc/modprobe.d/blacklist.conf
添加如下一行内容 blacklist nouveau
重新启动系统,使用命令 /sbin/lsmod | grep nouveau 应该看不到东西
使用 ctrl+alt+f1 进入控制台,sudo ./NVIDIA-Linux-x86_64-….run 进行安装,安装过程中不要选择安装 opengl 相关文件,否则重启后登录,会在登录界面死循环。 尚未找到解决方法
网上找到的一些其他使用 sudo apt install nvidia-384-dev nvidia-modprobe 等之类安装方式,安装重启后都会发生在登录界面死循环的问题,所以一定要下载官方的run安装文件进行安装
安装完成后可以使用 nvidia-smi 命令查看显卡状态

7. 安装完后发现不能像vmware那样方便拷贝一些文字,搜索后发现vmare官方认为拷贝剪切板内容是不安全的,默认给关闭了
打开方法,编辑虚拟机,虚拟机选项=>高级=》配置参数 编辑配置 按钮中添加两个配置
isolation.tools.paste.disable=FALSE
isolation.tools.copy.disable=FALSE
这样重启虚拟机后,就可以方便拷贝复制简短文本文字了
为了获取更多拷贝黏贴支持,还是使用rdp,vnc之类的远程桌面为好了。

Popularity: 1% [?]

Random Posts

cygwin下gcc编译碰到的两个编译出错问题解决

使用 cygwin 下gcc编译一个项目,出现如下问题:
1. 某个文件编译出错提示

/tmp/ccgeynfy.s: 致命错误:can’t write 1284 bytes to section .text of out/CSMgrBase.o because: ‘文件过大’

解决方法,给gcc编译命令添加参数 -Wa,-mbig-obj 解决问题

2. 前一个问题解决后,继续编译出现错误提示

…. string table overflow at offset 10000033

这里 找到解决方法, 给gcc编译命令添加 -O2 或 -O1 优化指令解决问题

Popularity: 2% [?]

Random Posts

给阿里云linux服务器安装php 5.6

1. 首先使用yum安装依赖包

  yum install -y bzip2 libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel gd-devel zlib-devel

2. 下载 mcrypt 库编译安装

wget https://jaist.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2
tar -xjvf libmcrypt-2.5.8.tar.bz2
cd libmcrypt-2.5.8
./configure
make && make install
cd ..

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar -xzvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install

3.下载php安装包,并编译安装


./configure --prefix=/usr/local/php5637 --with-config-file-path=/usr/local/php5637/etc \
  --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=www \
  --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
  --enable-opcache --enable-mbstring --enable-soap --enable-zip --enable-bcmath --with-openssl \
  --with-zlib --with-curl --with-gd --with-zlib-dir=/usr/lib --with-png-dir=/usr/lib --with-jpeg-dir=/usr/lib \
  --with-mhash --with-freetype-dir --with-mcrypt --enable-gd-native-ttf \
  --with-xmlrpc --with-iconv-dir=/usr/local/libiconv

3.添加运行需要的账号和组

groupadd www
useradd php-fpm -M -s /sbin/nologin -g www

4. 复制一个配置文件,默认php fcgi 端口为 9000, 可以修改php-fpm.conf设置为其他值

cp php.ini-production /usr/local/php5637/lib/php.ini
cd /usr/local/php5637/etc
cp php-fpm.conf.default php-fpm.conf

5.启动php

/usr/local/php5637/sbin/php-fpm

6.查看php-fpm运行情况

netstat -ltunp | grep 9000
#或者
lsof -i :9000
#或者
ps -fe |grep php-fpm

7. 将php-fpm 启动命令添加到 /etc/rc.local 中,开机就运行

Popularity: 2% [?]

Random Posts

一起Linux防火墙造成的服务端口不能访问小故障的解决方法

在Linux服务器上新开了一个tomcat服务,端口设置为 8081, 结果远程机器打开不了,在本机通过 curl 127.0.0.1:8081 可以正常输出页面内容。
检查机器防火墙没有开启,iptables没有开启,不知道是什么问题
最后执行如下命令解决(也就是将防火墙服务状态复位一下)
systemctl stop firewalld
systemctl start firewalld
systemctl stop firewalld

可能是系统的一个bug吧

Popularity: 3% [?]

Random Posts

Nvidia Jetson TX2 使用ubuntu 16.04刷Jetpack 3.2碰到的一些坑

刚入手了一块Nvidia Jetson TX2的开发套件,首先刷机到jetpack 3.2碰到的一些坑以及解决方法。
坑1: 机器缺少Hdmi的连接线
解决方法:网上新购一条,又等了几天才能接上开发板用

坑2:PC主机使用的是虚拟机安装的Ubuntu 16.04,磁盘预留空间不足,导致安装中途磁盘空间耗光,安装失败
解决方法:将虚拟机建在一个空闲空间大的的磁盘上,
不要信网上说的只要10G左右空间就好,那只是要安装到板子上的镜像大小,还需要下载的资源空间,以及虚拟机系统自身所要的空间。
最后总的虚拟机镜像需要35G不到一点。其中写到板子上的系统空间约11G,下载的cuda开发包等下载文件需要4G左右,PC端的程序安装了几个G
安装完成后,可以将安装目录下的板子镜像相关文件删除,可回收约10来G磁盘空间。

坑3:安装过程中,需要联网下载资源包,速度太慢,耗了一天没有下载完毕。
解决方法: 选择一个靠谱的源,开始相信阿里,选择阿里的源,结果不用说了,换了163的源,速度一下飞起

坑4:这个问题是坑3带来的,因为速度太慢,中间终止掉了安装进程,结果换源 apt-get update 命令时会报
“无法下载 http://mirrors.163.com/ubuntu/dists/xenial/multiverse/binary-arm64/Packages 404 Not Found [IP: 2001:67c:1560:8001::14 80]”
等错误,不应该的
解决方法:google搜索了一下,只需要两个命令即可解决
sudo apt-get remove .*:arm64
sudo dpkg –remove-architecture arm64
然后 sudo apt-get update 一下

坑5:向板子上写入系统前,选择的网络是第一个PC和板子公用路由的方式,结果因为虚拟机是NAT方式,给板子写入系统后,没有能找到板子的IP
解决方法:退出安装程序,重新运行安装命令,选择自定义安装,不要选将系统写入板子。
一路next,提示输入IP地址和账号时,在板子上用ifconfig 看下板子的IP,输入账号密码,继续安装即可

坑6:按照提示信息以恢复模式启动板子后,PC上lsusb没能看到有Nvidia Corp字样的行
解决方法:很简单,拔掉usb线,重新接一下,然后lsusb可以看到了,之前怀疑步骤错误,反复关电源重启好多次,都以为是板子坏了.

基本系统刷好,后面就可以安装Tensorflow, Caffe等框架了,有空再慢慢研究。
安装Caffe: https://blog.csdn.net/wyr_rise/article/details/79620903
安装Tensorflow: https://github.com/peterlee0127/tensorflow-nvJetson
使用别人编译好的whl直接安装,免去漫长的编译时间

Popularity: 3% [?]

Random Posts

网站部署https遇到的一些坑

由于被运营商时不时的劫持篡改页面内容导致客户投诉,下定决心部署https彻底解决数据被劫持问题,
部署https过程中刚碰到了如下一些坑,逐个解决
1. ssl证书问题,部署后部分浏览器打开会提示证书链不完整,请求不会发送到服务端
解决方法:证书商那里签发的有两张证书,一个是我们网站的证书,一个是他们的中间证书,需要将两个证书的内容拷贝合并到一起(自己的要放在前面)
2. 部分页面打开后,浏览器上还是http协议头, 但是在公司测试服务器上同样配置确没有这个问题
因为使用的阿里SLB将443端口反向到后端80端口上,在nginx服务器上有配置一些rewrite跳转,自动适配请求的 $schema, 需要强制设置为 https
3. 部分页面js/css资源地址还是引用的http地址
原因同2,部分代码中是使用请求来的协议决定输出http还是https的,修改强制地址https问题解决

– 前面问题 2和3 都是配置 SLB 将443端口透传到后端80端口造成的,如果配置 443 到 443 则没有上面的问题

Popularity: 3% [?]

Random Posts

MySQL的JDBC驱动保存数据出现 java.lang.AbstractMethodError: Method .. is abstract的问题解决方法

软件使用JDBC连接数据库,因为使用MySQL数据库,于是将机器上以前安装其他软件备份的Mysql驱动拷贝了过去,没有想到在软件中保存数据时出现

Exception in thread “main” java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setCharacterStream(ILjava/io/InputStream;J)V is abstract
at com.mysql.jdbc.PreparedStatement.setBlob(PreparedStatement.java)

错误,折腾了软件的各项配置好久,一保存数据就出错。到软件官网上看了下也没有人提到这个问题,应该是我这边自己的问题。想着到MySQL官网上看看有无新版本的JDBC驱动程序,发现果然有,
下载后替换原有驱动,重新运行软件,可以正常保存。以后安装软件还是先检查一下是否有依赖的新版本,防止不必要的麻烦。

不是总是安装新的依赖包就是好的,有些软件安装了最新的依赖包,反而不能正常运行,如果软件有说明适配的依赖软件版本,最好还是按照软件说明中明确说明的依赖版本来,减少不必要的麻烦。

Popularity: 4% [?]

Random Posts

Tomcat配置SSL支持出现java.lang.IllegalArgumentException: None of the [protocols] specified are supported by the SSL engine : [[TLS]] 问题解决

一个Java的应用要配置TLS支持,按照软件的安装说明,给Tomcat的Server.xml中添加


重新启动Tomcat后,提示如下严重出错信息

严重 [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["https-jsse-nio2-9443"]
 java.lang.IllegalArgumentException: None of the [protocols] specified are supported by the SSL engine : [[TLS]]
        at org.apache.tomcat.util.net 

.SSLUtilBase.getEnabled(SSLUtilBase.java:90)

经过一番网上搜索和尝试,发现添加如下几行内容到端口8443的配置中,重启Tomcat后问题解决

 SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
 ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
 SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"

Popularity: 4% [?]

Random Posts

树莓派登陆密码忘记的处理方法

买来玩的树莓派长时间没有登陆,忘记登陆密码了,网上找了一些重置密码的方法多是是使用命令行要外接显示器的方式,对我ssh登陆的不适用。
想来因为树莓派是linux系统,直接修改shadow文件将pi账号的密码修改为一个已经知道的密码,再登陆后修改一下就好。
首先拆卸下树莓派上的SD卡,使用USB连接器接到电脑上,直接接的windows系统,看不到shadow文件,于是安装一个linux虚拟机,在虚拟机中挂载。
首先在Linux虚拟机中用root账号创建一个临时测试账号,对账号设置一下密码

  1. useradd test
  2. passwd test
  3. cat /etc/shadow

提示密码输入的时候输入 test 作为密码,可以看到如下一行

test:$6$AVQjiImu$S.cv1b2ZgI32ddDye6ehRYPCI/hpfPDofuZXUQHTXpBgUA3kFVLUYsOPXybaAX7EwZfrvkT0Udcw36Ye.6P140:17429:0:99999:7:::

test后面两个冒号之间的字符串,就是密码test对应的值
拷贝出来,修改树莓派中shadow的pi那行的值,得到

pi:$6$AVQjiImu$S.cv1b2ZgI32ddDye6ehRYPCI/hpfPDofuZXUQHTXpBgUA3kFVLUYsOPXybaAX7EwZfrvkT0Udcw36Ye.6P140:17429:0:99999:7:::

保存,将SD卡弹出插回到树莓派中,开机重连,使用密码 test 做为登陆密码,顺利进入。

Popularity: 4% [?]

Random Posts

cygwin下strptime函数找不到的解决方法

一段代码使用到了 strptime 这个函数,之前在cygwin下gcc 4.9.3 可以编译通过,重装cygwin后,新的gcc 6.3.0 编译不通过,strptime是不可识别的,
在cygwin的include目录下执行

 find . -name "*.h" |xargs grep strptime

发现定义在 /usr/include/time.h 中,需要先定义 __XSI_VISIBLE 才会有,查看了一下__XSI_VISBLE定义出现的地方
在Make文件中添加 -D_XOPEN_SOURCE=700 重新编译,问题解决

Popularity: 4% [?]

Random Posts

Next Page →