Ubuntu搭建开发支持openchannelssd设备的qemu的虚拟机

1.安装带有NVMe支持的qemu.

1.1 $:git clone https://github.com/OpenChannelSSD/qemu-nvme.git

1.2 git下载完成后执行命令配置,编译,安装

$:cd qemu-nvme

$:./configure --enable-linux-aio --target-list=x86_64-softmmu --enable-kvm

$:make

$:make install


2.创建qemu虚拟机

2.1创建空白磁盘

$:qemu-img create -f raw ubuntu.raw 50G


(有空间就建大点,如何你想在虚拟机内部编译内核,磁盘一定要建大点);

2.2, 检查KVM是否可用

QEMU使用KVM来提升虚拟机性能,如果不启用KVM会导致性能损失。要使用KVM,首先要检查硬件是否有虚拟化支持:

$:grep -E 'vmx|svm' /proc/cpuinfo`

如果有输出则表示硬件有虚拟化支持。其次要检查kvm模块是否已经加载:

$:lsmod | grep kvm

kvm_intel 142999 0

kvm 444314 1 kvm_intel

如果kvm_intel/kvm_amd、kvm模块被显示出来,则kvm模块已经加载。最好要确保qemu在编译的时候使能了KVM,即在执行configure脚本的时候加入了--enable-kvm选项。

2.3装系统

启动虚拟机安装操作系统。

执行下面的命令启动带有cdrom的虚拟机:

$:qemu-system-x86_64 -m 2048 -enable-kvm ubuntu.raw -cdrom ~/ubuntu.iso  

-m 指定虚拟机内存大小,默认单位是MB, -enable-kvm使用KVM进行加速,-cdrom添加fedora的安装镜像。可在弹出的窗口中操作虚拟机,安装操作系统, ubuntu.raw为之前用qemu-img创建的的空白磁盘,安装完成后重起虚拟机便会从硬盘(ubuntu.raw)启动。之后再启动虚拟机只需要执行:

$:qemu-system-x86_64 -m 2048 -enable-kvm ubuntu.raw

3.给虚拟机换内核

开发需在上带有nvme的支持的内核,执行下列命令

$:git clone https://github.com/OpenChannelSSD/linux.git

$:cd linux

$:git checkout pblk-cnex

$:make menuconfig  //执行命令后,会出现图形界面的内核配置选项,需进入device drive中将nvme支持模块选项,并保存,可参考http://blog.csdn.net/trochiluses/article/details/9663743 编译内核

$:make bzImage 

$:make modules

$:make modules_install

$:make install


4.创建一个空白文件充当nvme设备

$:dd if=/dev/zero of=blknvme bs=1M count=1024


5.ssh登入虚拟机(非必须)

宿主机需要用ssh登入访问虚拟机,可以采取两种方式

5.1: 端口映射

把虚拟机的22端口映射到宿主机的其他还未使用的端口(ex:2223),方法就是在虚拟机启动命令中添加参数-redir tcp:2223::22

这时宿主机通过命令

$:ssh -p 2223 用户名@127.0.0.1

就可以ssh登入访问虚拟机了。

5.2:建立网桥:

首先在宿主机上执行下列命令,安装含有建立虚拟网络设备 ( TAP interfaces ) 的工具 uml-utilities 和桥接工具 bridge-utils:

$:sudo apt-get  install uml-utilities

$:sudo apt-get  install bridge-utils

$:lsmod | grep tun #查看是否加载tun模块

$:modprobe tun #加载tun模块

然后执行下列命令编辑 /etc/network/interfaces文件,(请先备份),建立一个名叫 "br0" 的桥:

$:sudo vim /etc/network/interfaces

#添加如下内容


auto br0

iface br0 inet static      #在这里网桥我用的静态IP,使用静态的话,就需要把你宿主机的ip地址,当前网络的网关等信息设置到这个网桥上

address 192.168.1.2   #ip地址需根据本机所在的网络修改设置

netmask 255.255.255.0  #ip地址需根据本机所在的网络修改设置

network 192.168.1.0  #ip地址需根据本机所在的网络修改设置

broadcast 192.168.1.255  #ip地址需根据本机所在的网络修改设置

gateway 192.168.1.1  #ip地址需根据本机所在的网络修改设置

bridge_ports  eth0  #然后让eth0网卡上的端口都通过这个桥。


保持后重启网络服务,或者重启宿主机。


重启后执行下列命令/etc/ 文件夹下新建一个qemu-ifup脚本

$:sudo vim /etc/qemu-ifup

内容如下:


#!/bin/bash

#This is a qemu-ifup script for bridging.

#You can use it when starting a KVM guest with bridge mode network.

#set your bridge name

switch=br0

if [ -n "$1" ]; then

#create a TAP interface; qemu will handle it automatically.

#tunctl -u $(whoami) -t $1

#start up the TAP interface

ip link set $1 up

sleep 1

#add TAP interface to the bridge

brctl addif ${switch} $1

exit 0

else

echo "Error: no interface specified"

exit 1

fi


并且执行下列命令给以可执行权限。

$:sudo chmod 777 /etc/qemu-ifup

然后在启动命令中添加参数  -net nic -net tap,script=/etc/qemu-ifup 启动虚拟机  这样启动的虚拟机就有一个和宿主机同一个网段的ip地址,直接访问就可以了。

出现错误可以参考http://www.361way.com/qemu-kvm-bridge-net/4760.html


配置好后就可以执行下列命令启动虚拟机.


$:sudo qemu-system-x86_64 -m 4096 -smp 4  -enable-kvm -hda ubuntu.raw  -drive file=blknvme,if=none,id=blknvme -device nvme,drive=./blknvme,serial=deadbeef,namespaces=1,lver=1,nlbaf=5,lba_index=3,mdts=10,lnum_lun=4,lnum_pln=1 -net nic,macaddr=54:52:d5:ab:83:10 -net tap,script=/etc/qemu-ifup


-m 指定虚拟机内存大小,默认单位是MB, -smp 是设置虚拟机的cpu核数, -enable-kvm 是使用KVM进行加速,-hda 是指定磁盘(用qemu-img创建的) -drive 设置设备(用dd创建的充当nvme设备的文件) -device 设置设备的属性 -net 设置mac地址 以及网卡启动脚本(/etc/qemu-ifup) 


6.建立宿主机和虚拟机间的共享文件夹(非必须)

采用的是Samba这种方式

6.1在宿主机上执行下列命令安装samba

$:sudo apt-get install samba

$:sudo apt-get install cifs-utils

6.2 在宿主机上执行下列命令创建共享目录

$:mkdir /home/raohui/share  (这个目录自定义名字和路径)

$:sudo chmod 777 /home/raohui/share

6.3 在宿主机上执行下列命令创建Ubuntu samba配置文件

(1)保存现有的配置文件

$:sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

(2)修改现配置文件

$:sudo gedit /etc/samba/smb.conf

(3)在smb.conf最后添加


[share]

path = /home/raohui/share  

available = yes

browsealbe = yes

public = yes

writable = yes


6.4 创建Ubuntu samba帐户

$:sudo touch /etc/samba/smbpasswd

$:sudo smbpasswd 用户名    (然后根据提示输入密码)

6.5虚拟机中执行下列命令,mount宿主机中的共享文件夹

$:mkdir shareDir #创建挂在点

$:sudo mount -t cifs -o username=用户名,password=密码  //宿主机IP地址/share  ./shareDir

可以参考这个链接把上面命令设置为开机运行

http://jackqdyulei.github.io/2016/03/06/linux-auto-script/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容