Ubuntu搭建开发openchannelssd的qemu的虚拟机

**

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

**
QEMU Installation
QEMU support for Open-Channel SSDs is based on top of Keith Busch’s qemu-nvme branch, which implements an NVMe compatible device.
Clone the qemu source from

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

qemu-nvme的版本要用master分支的这个commit:fb8f9f2a7e260c3e8a0d993473d24

and configure the QEMU source with

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

then install by make and 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.img -cdrom ~/ubuntu.iso

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

 $ qemu-system-x86_64 -m 2048 -enable-kvm ubuntu.img

3.给虚拟机换内核

开发需要在带有lightnvm的支持的内核上进行
内核地址:https://github.com/OpenChannelSSD/linux.git
内核分支直接用pblk-lastest
下载后进去目录 编译安装 一般步骤:make menuconfig ;make bzImage ;make modules;make module_install; make install

4.ssh登入虚拟机

宿主机需要用ssh登入访问虚拟机,可以采取两种方式
一种是端口映射:把虚拟机的22端口映射到宿主机的其他还未使用的端口(ex:2223),方法就是在虚拟机启动命令中添加参数-:redir tcp:2223::22
这时宿主机通过ssh -p 2223 用户名@127.0.0.1 就可以ssh登入访问虚拟机了。

一种方式是建立网桥:

Ubuntu 的系统上,首先要安装含有建立虚拟网络设备 ( 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 dhcp #一种IP配置方法为通过DHCP配置
iface br0 inet static #在这里网桥我用的静态IP,使用静态的话,就需要把你宿主机的ip地址,当前网络的网关等信息设置到这个网桥上
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports  eth0  #然后让eth0网卡上的端口都通过这个桥。

保持后重启网络服务,或者重启宿主机。
/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

并且需要使用root用户执行chmod u+x 给以可执行权限。

然后在启动命令中添加参数 -net nic -net tap,script=/etc/qemu-ifup 启动虚拟机 这样启动的虚拟机就有一个和宿主机同一个网段的ip地址,直接访问就可以了。
出现错误可以参考http://www.361way.com/qemu-kvm-bridge-net/4760.html

5.建立宿主机和虚拟机间的共享文件夹

有挺多方式,这里采用的是Samba这种方式
5.1在宿主机上,Ubuntu samba的安装:

sudo apt-get insall samba  
sudo apt-get install cifs-utils

5.2 创建共享目录:

mkdir /home/raohui/share   #(这个目录自定义名字和路径)
sudo chmod 777 /home/raohui/share 

5.3 创建Ubuntu samba配置文件:
保存现有的配置文件

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

修改现配置文件

sudo gedit /etc/samba/smb.conf 

在smb.conf最后添加

[share]  
path = /home/raohui/share  
available = yes 
browseable = yes 
public = yes 
writable = yes 

5.4 创建Ubuntu samba帐户

sudo touch /etc/samba/smbpasswd  
sudo smbpasswd //我用默认的也就是当前用户

5.5虚拟机中使用如何命令mount宿主机中的共享文件夹

mkdir shareDir #创建挂在点
sudo mount -t cifs -o username=raohui,password=raohui  //192.168.1.199/share /root/shareDir/

可以参考这个链接把上面命令设置为开机运行
http://jackqdyulei.github.io/2016/03/06/linux-auto-script/

参考:

http://www.jianshu.com/p/110b60c14a8b
http://blog.chinaunix.net/uid-22166872-id-4213626.html
http://os.51cto.com/art/201002/183766.htm

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页