qemu启动vm后,如何host上使用ssh连接?
qemu启动vm后,如何从host ssh连接vm?
qemu启动参数
启动命令:
${cmd_qemu_system} --enable-kvm \
-machine type=q35,accel=kvm,kernel-irqchip=on -cpu host -smp 4 -m 16384 \
-serial mon:stdio -nographic -s \
-kernel $bzImage_name \
-device virtio-net-pci,netdev=unet,mac=52:54:00:f1:26:a6 \
-netdev user,id=unet,hostfwd=tcp::50959-:22 \
-initrd $rootfs_cpio_path \
-append "earlyprintk=ttyS0 console=ttyS0 debug" \
-hda $DISK_NAME
kenrel
linux 的.config 需要支持CONFIG_VIRTIO_NET=y:
[root@xxx /data/sandbox/open_linux/linux]
#cat .config | grep CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_NET=y
buildroot
实际上,我们知道,buildroot的目的就是要生成一个:rootfs.cpio.xz,然后,通过qemu命令启动一个vm的时候,执行参数-initrd 指定rootfs.cpio.xz 路径,就可以启动一个vm;
ssh:
我们需要预先在 buildroot 下载好 sshd, 这里,你会执行 make menuconfig 来给这个buildroot 指定sshd包要下载,之后,就会生成一个最新的.config文件,这个.config文件,应该包含:
[root@xxx /data/sandbox/open_linux/buildroot]
#cat .config |grep BR2_PACKAGE_OPENSSH
BR2_PACKAGE_OPENSSH=y
在buildroot中 将sshd配置文件修改正确,然后重新编译buildroot生成最新的:rootfs.cpio.xz
#vi ./output/target/etc/ssh/sshd_config
PermitRootLogin yes
PermitEmptyPasswords yes #这是是允许登录为空密码
通过这个rootfs.cpio.xz, 启动的vm 的sshd 配置:
# vi /etc/ssh/sshd_config
PermitRootLogin yes
PermitEmptyPasswords yes #这是是允许登录为空密码
network:
需要,现在buildroot中,增加配置eth0 :
#cd buildroot/
#vim output/target/etc/network/interfaces
auto eth0
iface eth0 inet static
address 10.0.2.15
netmask 255.0.0.0
或者,进入vm后:
ifconfig eth0 10.0.2.15
ifconfig eth0 up
如何使用虚拟bios?
git clone https://github.com/coreboot/seabios seabios
make menuconfig
make clean && make -j 8
在qemu启动中,增加bios:
In the command to start guest, you can specify the BIOS:
-bios seabios/out/bios.bin
start_vm(){
DISK_NAME="${muahao_tools_dir}/vm/disk02.raw"
if [[ ! -e $DISK_NAME ]];then
creat_image_01 "$DISK_NAME"
fi
${cmd_qemu_system} --enable-kvm \
-machine type=q35,accel=kvm,kernel-irqchip=on -cpu host -smp 4 -m 16384 \
-serial mon:stdio -nographic -s \
-kernel $bzImage_name \
-device virtio-net-pci,netdev=unet,mac=52:54:00:f1:26:a6 \
-netdev user,id=unet,hostfwd=tcp::2222-:22 \
-initrd $rootfs_cpio_path \
-append "earlyprintk=ttyS0 console=ttyS0 debug" \
-hda $DISK_NAME\
-bios ./open_linux/seabios/out/bios.bin
}
A debug test:
#vim src/boot.c
static void
boot_rom(u32 vector)
{
printf("Booting from ROM...\n");
struct segoff_s so;
so.segoff = vector;
call_boot_entry(so, 0);
}
如何给vm增加虚拟盘?
首先,你需要在host上创建一个image,然后,在使用qemu启动vm的时候,给qemu一个参数,挂载上这个image,启动guest后,可以在guest上 使用这个虚拟的硬盘;
首先,在host上创建一个image:
#qemu-img create -f raw /data/sandbox/images/vm_guest.img 5G
qemu启动参数:
${cmd_qemu_system} --enable-kvm \
-machine type=q35,accel=kvm,kernel-irqchip=on -cpu host -smp 2 -m 4096 \
-serial mon:stdio -nographic -s \
-kernel $bzImage_name \
-device virtio-net-pci,netdev=unet,mac=52:54:00:f1:26:a6 \
-netdev user,id=unet,hostfwd=tcp::2222-:22 \
-initrd $rootfs_cpio_path \
-append "earlyprintk=ttyS0 console=ttyS0 debug" \
-drive file=/data/sandbox/images/vm_guest.img,if=none,format=raw,id=nvme0 \ //<<<<<===增加
-device nvme,drive=nvme0,serial=foo \ //<<<<<===增加
-hda $DISK_NAME \
-bios /data/sandbox/open_linux/seabios/out/bios.bin
注意: 在linux中.config 一定要配置了nvme的支持
#cat .config | grep NVME
qemu启动vm后,如何host上使用ssh连接?的更多相关文章
- Mac上使用ssh连接服务器title显示服务器的ip
Mac上使用ssh连接服务器title显示服务器的ip 使用Mac开发时,管理的服务器过多时,会搞混乱.可能有时啪啪啪一顿操作,最后发现操作错了机器. 解决方案 在远程服务器上,编辑vim /etc/ ...
- 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 @echo off net start "vds" net start "VMAuth ...
- github上创建ssh连接多个账户
简单的说用两对ssh密钥来连接多个github账户,有的同学问:用一对连接多个账户行吗?答案是不行,因为密钥和你的账户邮箱关联了. 1.生成密钥. sshkey -t rsa -b 4096 -C & ...
- 在阿里云服务器上安装完成并启动Tomcat后,通过http不能访问--解决办法
在阿里云服务器上安装完成并启动Tomcat后,通过http不能访问的原因是阿里云平台为了安全设置了安全组策略,必须我们授权的端口,其他计算机才能通过http访问 解决办法:(这里以阿里轻量应用服务器为 ...
- 解决:阿里云ECS上启动tomcat后,第一次访问时间特别长
Re在ECS上启动tomcat后,第一次访问时间特别长 2017-04-25 10:16:04 INFO com.world.socket.ServerSocketListener 25- ...
- JavaWeb问题记录——在Windows上启动Tomcat后命令行窗口乱码
JavaWeb问题记录——在Windows上启动Tomcat后命令行窗口乱码 摘要:本文主要记录了在Windows上启动Tomcat后,命令行窗口出现乱码的问题及解决办法. 问题重现 在Windows ...
- sshd 启动后 出现:Could not load host key: /etc/ssh/ssh_host_rsa_key
今天在启动sshd时,出现了如下问题,导致客户端不能成功连接服务端,不能建立ssh连接: 有两个提示 Could not load host key: /etc/ssh/ssh_host_rsa_ke ...
- [原] KVM 虚拟化原理探究(2)— QEMU启动过程
KVM 虚拟化原理探究- QEMU启动过程 标签(空格分隔): KVM [TOC] 虚拟机启动过程 第一步,获取到kvm句柄 kvmfd = open("/dev/kvm", O_ ...
- CloudStack系统虚拟机启动但不在Host表中
有网友问到这个问题,CloudStack中,系统虚拟机正常启动,Running状态. 可是在host表中没有对应项,上传下载模板等功能也不正常. 原因:系统虚拟机启动之后,会通过管理网段主动连接man ...
随机推荐
- UI:UITextView
#import "MainViewController.h" @interface MainViewController () <UITextViewDelegate> ...
- 动画库tween.js
动画库tween.js var Tween = { Linear:function (start,alter,curTime,dur) {return start+curTime/dur*alter; ...
- java翻译lua+c+openssl签名项目
原来项目中用openresty nginx+lua实现server,lua调用c动态链接库,来使用openss做签名,并生成130字节(128签名+2位自定义字节)长度的文件. nginx: loca ...
- VS2019 字符串对指针char*赋值编译器报错原因及解决方法
2019-05-26 21:55:08 前几天在敲代码时,将字符串“Hellow world!”赋值给指针char*类型指针时编译器报错的问题 网上搜索后发现 char*是历史遗留问题,如果程序修 ...
- 前端_vue-cli+element-ui+AceEditor+codemirror+electron-vue
因项目工作需要,目前在研究前端的一些知识.主要想实现一个类似于webstorm,可以实现对本地文件进行增删改查等操作的IDE.下面通过几个专题,循序渐进,对某一些部分进行总结,希望能对你有帮助.(网上 ...
- python ftp小程序练习
作业要求: 开发一个支持多用户在线的FTP程序 要求: 1.用户加密认证 2.允许同时多用户登陆 3.每个用户都有自己的家目录,并且只能访问自己的家目录 4.对用户进行磁盘配额,每个用户的可用空间不同 ...
- UVA 11149 Power of Matrix 构造矩阵
题目大意:意思就是让求A(A是矩阵)+A2+A3+A4+A5+A6+······+AK,其中矩阵范围n<=40,k<=1000000. 解题思路:由于k的取值范围很大,所以很自然地想到了二 ...
- 用for循环实现的菱形图案
package com.wh.lingxing; import java.util.Scanner; public class LingXing { public static void main(S ...
- 171 Excel Sheet Column Number Excel表列序号 26进制转10进制
给定一个Excel表格中的列名称,返回其相应的列序号.示例: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -&g ...
- android开发学习 ------- 【转】Gradle相关
一直在用AndroidStudio,但是对于其Gradle了解的很少. 推荐 http://www.jianshu.com/p/9df3c3b6067a 觉得说的很棒!