标签归档:opensuse

Mac下Virtualbox使用小结

作者: dplord, 访问量 2822





因为工作原因,使用Mac机器。但是以前一直用linux,熟悉上面的各种开发环境。Mac由于是Unix系列,挺多开发环境挺好的。但是还是蛮多库、项目、编译没有那么方便。自己在virtualbox下改了一个opensuse text mode虚拟机,并设置了share folders, 可以在mac下的IDE下编辑建立在mac跟virtualbox的linux虚拟机的share dir的项目,然后在terminal下进入linux虚拟机,命令行编译跟处理。这样可以一个机器,无缝使用多个环境。下面讲解下virtualbox的几个要设置的地方。

1、安装virtualbox以及准备几个需要用的文件

要下当前最新的同一版本、最新的软件。

我下载的为

  • VirtualBox-5.0.14-105127-OSX.dmg
  • Oracle_VM_VirtualBox_Extension_Pack-5.0.14-105127.vbox-extpack
  • VBoxGuestAdditions_5.0.14.iso

2、设置正确的网络链接方式

默认的网络连接方式是『网络地址转换(NAT)』, 我需要的是内部linux guest主机,需要既能连接外网,同时也可以在外部mac host机器上,ssh通过内网连接linux guest。默认网络如图

QQ20160310-0@2x内部网络如图

QQ20160310-1@2xip是nat出来的网址10.0.2.15, 跟我的mac host不在一个网段,无法ssh连接。

需要创建一个处于同一网段的网络,因此做了如下操作

① 在virtualbox偏好设置里面添加一个host-only网卡,名字为vboxnet0

② 给该linux host的第二网卡上,绑定刚创建的vboxnet0 的 host-only 网卡

③ 在linux-guest里面,ifconfig查看还是一个网卡,手动编辑

touch /etc/sysconfig/network/ifcfg-eth1

写入以下内容

BOOTPROTO='dhcp'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR=''
MTU=''
NAME=''
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
DHCLIENT_SET_DEFAULT_ROUTE='yes'

然后reboot,查看后就可以看到有eth1的网卡了, ip是192.168.56.101,可以在mac host用ssh连接。因为这个网络是dhcp分配的ip的,为了方便把vboxnet0网络,dhcp ip地址段设置为一个固定ip, 如图:

QQ20160310-4@2x以后在mac host, 每次ssh dengpan@192.168.56.101, 即可连接该机器。可以在bashrc做一个alias。

3、设置共享文件夹

① 挂载VBoxGuestAdditions_5.0.14.iso 到linux guest

② mount /dev/cdrom /mnt

③ cd /mnt  && ./VBoxLinuxAdditions.run –nox11 (因为我的是opensuse text mode,没有图形界面的)

④ 在virtualbox的设置界面设置share dir并设置自动挂载, 然后reboot, 就可以再/media 看到你的文件夹了。

4、virtualbox的备份、恢复

virtualbox比较好用的一点是,可以备份整个硬盘,然后把几十G的「虚拟硬盘.vdi 」拷贝到移动硬盘留着,在任何系统安装完了virtualbox挂载该「虚拟硬盘.vdi 」即可开始使用了。后面可以开virtualbox-linux, 开始无缝使用自己要用的工具了。在MAC下的IDE编辑项目,ssh连接到linux shell下编译、处理,网络都是共享的。使用比较便捷,而且不卡,符合我的预期。

 

岁月如歌,那些在华中大网络中心当协管的日子(部署篇)

作者: dplord, 访问量 3134





伴着夜晚的一点点凉意,在这熟悉的黑暗的夜色中,冷笔勾勒我在华中科大网络中心当协管的那些年月。想想突然离开学校也很久了,那个曾经承载我几年的欢声笑语、伴我在孤寒岁月中成长的学校以及渐渐远离我生命中了,不过那些曾经的烙在我生命中的印记,却是那么的强而有力,挥之不去。不过想想我过段时间要回学校办手续的,欣喜跃上心头。

记得最初的跟网络中心的打交道是,大一的时候刚连校园网的时候,我的windows下自动开了bluetooth调制解调器模式,跟校园网的拨号冲突导致死活无法上网,最后几通电话之后无果只能带电脑去网络中心解决了,想想大一进校的时候自己是多么的青涩,这也许是跟网络中心打交道的最早的起源了。

开始切入正题了,我是从大二暑假开始跟网路中心有些业务、项目上的交道的。从我做的cs.hust.edu.cn为例开始,从网络中心申请了1个测试机器,开始开发项目。最后等项目上线后,自然作为cs.hust.edu.cn的作者跟维护者,自然成了网络中心的协管了,其实就是在网络中心看管3台服务器,保证安全与服务可靠,当然作为作者,我是一度那么想优化ta的性能,以前也不断的做了各种折腾,以前年轻真是好,永远那么有精力,为了心中一点点的想法而通宵达旦地验证, 追求那么丁点的问心无愧跟坦坦荡荡把。

cs.hust.edu.cn的技术结构跟开发过程,这里以前写在了本博客的另一篇文章中,这里不做赘述。一言以蔽之,cs.hust.edu.cn是目前上线的部署代码在1万4千2百行大概的php站点,(运维的、php library的没算,中间修改的、废弃的代码没算)。其中我管理有3台机器,但是真实情况下cs.hust.edu.cn是部署在一个新的单独的机器上。机器的配置跟我用的核心软件如下表:

CPU 2 physical cpu, 24 processor
内存 48G内存
硬盘 4T机械硬盘(做了raid5)
网络状况 教育网,华中科技大学网络中心托管
operating system Centos 6.3(Final), 64bit
linux kernel 2.6
web server nginx 1.7.4(compile from source)
database server mysql 5.6.21(compile from source)
php php 5.5.9(compile from source)
hhvm HipHop VM 3.5.0-dev+2014.12.11 (rel)
Compiler: heads/master-0-g546087bf1b0560c4a9e254fcad46a9212e42ccc2
Repo schema: cf1780b3cc3857e091e924935ae6267e9794de9c
Extension API: 20140829
其他软件 ruby 2.2.1、rust 1.1.0、erlang、fail2ban

maybe someone will feel strange about why I use Centos 6.3 which is so old, 我当时准备好了给ta去装个opensuse text mode 12.3的(我当时是opensuse铁粉, 12.3是当时的最新版的opensuse)了,为了试验opensuse text mode的操作(当时仅仅是opensuse桌面版很熟悉,opensuse的很多配置网络、防火墙有的跟debian、ubuntu、centos等等不同,要单独学习, 还有在纯粹的命令行下配置网络连接啊等等、专门抱了一个台式机过来装opensuse text mode学习试试), 我把一个台式机装了opensuse text mode用了一段时间, 感觉挺好的。都已经做好了准备等新服务器到达的时候,去网络中心亲自给ta装上opensuse text mode 12.3,都跟学院说好了,他们也同意了。结果等机器来的那天,是上午10点对来的, 我当时在上大三上学期的《软件工程》的最后一节课,不能不去,不去上最后这节课老师大概的意思是说就直接这门课不给过,结果没有亲自装机,网络中心的老师就随便装了个centos 6.3, 算了也不吐槽网络中心给装的这么旧的发行版了,因为上一个我管理的机器是readhat5的,估计还很多人没见过redhat5把,那古老的东西,放图大家感受下。

6

7

部署工作

当初cs.hust.edu.cn开发的时候是用的测试机器在自申请的一个网络中心的测试机器上,开发进行,对外服务,当初是用ip直接访问的。测试机器性能记得很渣,大概是1GHz CPU + 2G内存+50G机械硬盘的样子,还是在一个windows server上装vmvare虚拟出来的一个vm。测试机器系统是centos6.4,用的apache + mysql + php提供服务。项目部署需要web server提供rewrite支持,其他的也没什么很特殊的。就是centos6.3上面的所有东西太老了于是很自然就开始了我的编译nginx+mysql+php+hhvm之旅。

1编译nginx

nginx编译很简单,没什么依赖,编译参数如下。

./configure \
--prefix=/home/dengpan/opt/nginx-1.7.3 \
--sbin-path=/home/dengpan/opt/nginx-1.7.3/sbin/nginx \
--conf-path=/home/dengpan/opt/nginx-1.7.3/conf/nginx.conf \
--error-log-path=/home/dengpan/opt/nginx-1.7.3/var/log/error.log \
--http-log-path=/home/dengpan/opt/nginx-1.7.3/var/log/access.log \
--pid-path=/home/dengpan/opt/nginx-1.7.3/var/run/nginx.pid \
--lock-path=/home/dengpan/opt/nginx-1.7.3/var/run/nginx.lock \
--http-client-body-temp-path=/home/dengpan/opt/nginx-1.7.3/var/cache/client_temp \
--http-proxy-temp-path=/home/dengpan/opt/nginx-1.7.3/var/cache/proxy_temp \
--http-fastcgi-temp-path=/home/dengpan/opt/nginx-1.7.3/var/cache/fastcgi_temp \
--http-uwsgi-temp-path=/home/dengpan/opt/nginx-1.7.3/var/cache/uwsgi_temp \
--http-scgi-temp-path=/home/dengpan/opt/nginx-1.7.3/var/cache/scgi_temp \
--user=www \
--group=www \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--add-module=../mod_strip

基本按照官方编译参数(http://nginx.org/en/docs/configure.html)来的,只是加了mod_strip这个非官方模块,当时是想把所有页面压缩成一行的html, 节省下行传输带宽,提高速度。后面发现这点点html相比图片(我把首页的大图已经内页的logo图换成了webp格式,browser支持webp就显示webp格式,不支持就用jpeg格式)简直不值一提,其实也是因为这个mod_strip压缩html处理有bug, 处理有些页面有问题,标签会闭合到一起去,无法正常展示。

2编译php

php编译比较麻烦,一堆的依赖,第一次编译的时候,我编译了2天时间。后面编译就容易多了。在我的archlinux(i5 cpu, 机械硬盘)编译php 5.5.9大概需要8min。服务器make -j24大概需要10min。编译参数如下:

./configure \
--prefix=/home/dengpan/opt/php-5.5.9 \
--with-config-file-path=/home/dengpan/opt/php-5.5.9/etc \
--with-config-file-scan-dir=/home/dengpan/opt/php-5.5.9/etc/php.d\
--with-libdir=lib64 \
--with-curl \
--with-freetype-dir=/home/dengpan/opt/freetype-2.4.2/  \
--with-gd \
--with-gettext \
--with-iconv-dir=/home/dengpan/opt/libiconv-1.14   \
--with-jpeg-dir  \
--with-kerberos \
--with-ldap \
--with-ldap-sasl \
--with-libxml-dir  \
--with-mcrypt=/home/dengpan/opt/libmcrypt-2.5.7 \
--with-mhash \
--with-mysql=mysqlnd  \
--with-mysqli=mysqlnd  \
--with-openssl \
--with-pcre-regex \
--with-pdo-mysql=mysqlnd \
--with-pdo-sqlite=shared \
--with-pear \
--with-png-dir \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-gd-native-ttf \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--disable-rpath

其中编译的时候缺少很多lib请自行用yum安装, 但是centos6.3上编译php,其中的libmcrypt、libiconv、freetype2需要自己编译安装,有些bug, 时间久了我也没记下来,记得编译的时候一堆问题,其中libiconv还需要手动修改一些代码之类的,具体的若有人碰到了,请自行stackoverflow一下。

3编译mysql

mysql编译比较容易,没太多依赖。编译参数如下:

cmake \
-DCMAKE_INSTALL_PREFIX=/home/dengpan/opt/mysql-5.6.21 \
-DMYSQL_DATADIR=/home/dengpan/opt/mysql-5.6.21/data \
-DSYSCONFDIR=/home/dengpan/opt/mysql-5.6.21/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/home/dengpan/opt/mysql-5.6.21/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

编译完了之后mysql需要初始化用户名用户组与mysql目录。

  1.  检查mysql用户组
    cat /etc/passwd|grep mysql
    cat /etc/group|grep mysql

    没有就添加

    1 groupadd mysql
    2 useradd -g mysql mysql
    
  2. 给mysql目录设置权限
    chown -R mysql:mysql /home/dengpan/opt/mysql-5.6.21
    
  3. 初始化数据库
    scripts/mysql_install_db --basedir=/home/dengpan/opt/mysql-5.6.21 --datadir=/home/dengpan/opt/mysql-5.6.21/data --user=mysql
    
  4. 直接启动数据库
    /home/dengpan/opt/mysql-5.6.21/support-files/mysql.server start
    

4编译hhvm

hhvm,可能大家用的少,这里简介一下,hhvm是facebook开发的一个php jit解释器,在hhvm + nginx部署网站中,hhvm此时等同于php-fpm的角色,作用就是监听端口(一般是9000端口)或者本地unix sock,然后nginx通过fastcgi建立socket与之通信。centos 6.3编译hhvm有点麻烦,内核卡在那里,glibc上不去,一堆编译错误。编译过程按照github hhvm的官方wiki(Building and installing HHVM on CentOS 6.3)编译的,我在我的opensuse 12.3跟13.1跟后来的archlinux都编译成功了, 在centos6.3编译了3天没有成功只好安装了 facebook提供的prebuilt package 。hhvm有一点点不稳定,但是性能根据我当时的使用情况,的确惊人。

由于此篇文章可能太长, 太多感悟与踩坑经历要写,因而拆分几篇来写, 本篇是部署篇。

岁月如歌,那些在华中大网络中心当协管的日子(部署篇)

岁月如歌,那些在华中大网络中心当协管的日子(运维工作篇)

岁月如歌,那些在华中大网络中心当协管的日子(其他总结篇)

linux编译ATI显卡驱动

作者: dplord, 访问量 1488





事情起于今天班上一个女生zcm问我她要做毕设, 老师让装linux, 自己装ubuntu12.04 32bit 有问题, 让我帮看看, 作为linux死忠又是大学同班同学我就答应帮她把ubuntu12.04 32bit搞好(难得有女生有兴趣学习linux啊, 确实是比较少见的)。

我拿过来一看, 她的电脑是Acer的, 当时按照她的描述:

自己在学校镜像站下载了ubuntu12.04镜像, 安装完了就进去系统, 然后update了一下, 装了 build-essential 跟  xorg-dev 、多媒体开发库SDL 、ffmpeg等要用工具后,重启就进不去了, 表现为在ubuntu logo页面一半天进不去

我拿过来一看, 当时报了一个错误如下:

[drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset the VCPU!!!
[drm:evergreen_startup] *ERROR* radeon: error initializing UVD (-1).

看到radeon 就是AMD显卡问题。

zcm电脑较新是Acer的, 显卡信息如下

2015-01-07 23:47:38的屏幕截图

集显是APU上附带的 Radeon  HD 6520G, 其实这个集显(其实APU上的不叫集显, 不过作用可类比intel CPU上的集显) 还是很强的, 比intel i3集显强多了, 比intel i5的集显只强不弱, 相当于一个入门独显的级别。

独显是  AMD Radeon HD 6400M Series 。

关于AMD 显卡驱动,  其实Askubuntu 已经有人发问了, http://askubuntu.com/questions/434521/drmr600-uvd-init-error-uvd-not-responding-trying-to-reset-the-vcpu

这里我打算给她重做一个ubuntu12.04 32bit的, 下载好刻U盘后, 安装的时候诡异的时候到了, 一直卡在安装页面不动

后面没办法, 在安装的时候需要进入文本模式, F6选择  nomodeset 模式, 再安装, 但是这样安装好了。

安装好之后, 默认进入页面之后, 卡在登陆页面不动根本无法键盘输入。后面在grub启动时,按E在grub引导菜单,  找到 quiet splash 字样,在后面添加 nomodeset , 这样会引导进去一个1024*768 的低分辨率的页面, 有这么强集显跟独显的只能用渣画质的 1024*768 的,简直不能忍, 我决定多费点时间帮她编译一个A卡驱动。之前我大一给我家台式机(HP-GT2070CX , 显卡ATI Radeon HD 4550 也是A卡), 安装过一次A卡驱动, 一下子在我的家庭21寸台式机上有了 1440*900  的分辨率, 配合Opensuse的字体渲染, 写代码水论坛看视频超爽。

其实关于显卡的linux支持现状, 其实目前已经很好了。显卡主要分A卡(AMD APU附带的显卡, ATI显卡) 跟 Nvidia 显卡 以及 Intel集显, 这3类。Intel集显不用说, 英特尔对Linux的支持力度相当大, linux内核提交代码的前几就有intel, 一般的笔记本电脑都是Intel i3、i5、i7 系列CPU, 都自带一个Intel集显, 这些电脑安装上linux基本没任何问题的, 默认就是全分辨率很方便的。Nvidia系列的显卡, 其实性能更出众, 游戏玩家必追啊, nvidia 由于要大力发展跑在android的GPU以及nvidia推出的CUDA GPU并行计算, 对linux 系列支持也是特别好, 对应型号都有相应驱动, 性能相当不错。Ps: 各大网格计算、云计算平台都广泛部署了对CUDA并行计算库的支持,我上次去我们学校东5楼闲逛, 看到了各大网格计算中心的部署工具中CUDA计算库简直标配, 附图如下:

这是ChinaGrid 教育网内, 几个一级节点跟二级节点分布。

打大红点的是一级主干节点,一共7个全国一级节点, 我们学校是华中地区的国家一级主干节点。

1-1

每个节点配备的软件都大致类似 ,GPU计算资源就是其中一个重要指标, 大规模用到了CUDA

1

以西北地区主干节点西安交大为例, 打红框的是该节点配备的资源大小与种类,有兴趣可以自己去玩玩这些软件。

扯歪了, 说完N卡的支持已经相当好了。再看A卡的支持, 其实AMD对linux近些年支持很不错, 各种 “AMD Linux催化剂驱动” 连续不断的紧急释出, 但是貌似由于时间、稳定性、协议之类的, 通用linux发行版没有把这些驱动给包含进去,需要自己手动编译。

去, AMD官网下载一个  amd-catalyst-omega-14.12-linux-run-installers.zip  的文件,

这个文件不能在vps上快速下载, 原因是限制了  Referer 跟  header

想命令行下下载amd驱动的, 可以写一个shell, 如下:

curl \
-H "Referer: http://support.amd.com/zh-cn/download/desktop?os=Linux+x86"  \
-H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: text/css,*/*;q=0.1" \
-H "Cookie: c_sccva=1420636121000%2CNA; s_fid=76ECADB0C01BD313-32D52C9175E1EF0A; s_cc=true; s_vi=[CS]v1|2A5697F3051D3FA3-4000010300002A71[CE]; fsr.s=%7B%22v2%22%3A-2%2C%22v1%22%3A-2%2C%22rid%22%3A%22d036702-53157432-4508-58ac-e4bc8%22%2C%22to%22%3A3%2C%22c%22%3A%22http%3A%2F%2Fsupport.amd.com%2Fzh-cn%2Fdownload%2Fdesktop%22%2C%22pv%22%3A1%2C%22lc%22%3A%7B%22d0%22%3A%7B%22v%22%3A1%2C%22s%22%3Afalse%7D%7D%2C%22cd%22%3A0%2C%22f%22%3A1420636735766%7D; com.silverpop.iMAWebCookie=1e589c02-c5a6-5556-d505-ac20ee930564; com.silverpop.iMA.session=8cc12ac6-6482-e51b-848a-c6a1bed35029; com.silverpop.iMA.page_visit=-1534868343,"  \
http://www2.ati.com/drivers/linux/amd-catalyst-omega-14.12-linux-run-installers.zip -o 1.zip 

执行这个shell即可下载了。

下载完了, 其实最好在 grub 添加参数进入 nomoset模式下安装, 以免现在的驱动影响新驱动的安装导致不成功。

这点A卡做的很好 , A卡可以在图形模式下安装, N 卡驱动只能关闭kdm 或者 gdm 在文本模式下安装, 而且安装N卡驱动需要你编译一次自己的内核, 这样才能把驱动模块安装到对应内核去, 更新内核的话, N卡驱动要重新安装的。

进入 nomodeset开始安装

1 先装依赖库

sudo apt-get install build-essential cdbs dh-make dkms execstack dh-modaliases fakeroot libqtgui4 debhelper debconf libstdc++6 dkms libqtgui4 libelfg0 linux-headers-generic

2 卸载可能存在的旧的A卡驱动

sudo apt-get remove --purge fglrx*

 

 3 解压缩执行下载的 amd-catalyst-omega-14.12-linux-run-installers.zip 的.run 安装文件

chmod a+x amd-driver-installer-14.501.1003-x86.x86_64.run 
./amd-driver-installer-14.501.1003-x86.x86_64.run  --buildpkg Ubuntu/precise  

其中:Ubuntu/precise 是 ubuntu12.04 代号, 这里代号要小写,每个版本的代号可以用  lsb_release -a 查询的。

此步编译deb过程也可以在图形化进行, 看个人喜好。

4 安装编译好的deb文件

sudo dpkg -i fglrx*.deb

 5 安装完,  还有一步初始化操作

sudo aticonfig --initial

重启后就好了, 部分电脑也许调整的Xorg.conf 参数不对, 需要自己手动去改一下。

这次的 amd-driver-installer-14.501.1003-x86.x86_64.run  驱动比以前稳定好多, 运行良好, 以前我给我家台式机(HP-G2070CX)装A卡驱动的时候, 当时版本还是一个beta版本, 不是很稳定, 每运行几个小时甚至30分钟就会崩一次, 现在进步太大了, 期待A 卡、N卡一如既往的给力啊。