qemu 安装ubuntu22.04虚拟机 -纯命令行-可ssh-带网络-编译安装 linux kernel-编译安装 kernel module

1,预备系统盘数据

1.1 下载光盘


注意需要 liver-server

$ wget https://releases.ubuntu.com/22.04.4/ubuntu-22.04.4-live-server-amd64.iso

1.2 挂载并拷贝


 

$ sudo mkdir /mnt/iso_ubuntu-22.04.4-live-server-amd64
$ sudo mount     ubuntu-22.04.4-live-server-amd64.iso  /mnt/iso_ubuntu-22.04.4-live-server-amd64/ -o loop
$ cp -r /mnt/iso_ubuntu-22.04.4-live-server-amd64     ./iso_ubuntu-220404/

确认文件文件路径:

$ ls ./iso_ubuntu-22.04.4-live-server-amd64/casper/initrd
$ ls ./iso_ubuntu-22.04.4-live-server-amd64/casper/vmlinuz


后变安装时会用到。


2,预备构建 qemu 的依赖

2.1 预备普通依赖

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients virtinst bridge-utils virt-manager  virt-viewersudo apt-get install libpixman-1-dev


如果系统中没有 ninja,则需要安装
检验:
 

$ ninja --version


2.2 预备网络 -net user 依赖

//slirp 为用户网络配置
 

sudo apt-get install libslirp-dev
sudo apt-get install samba

安装好后可以重启一下
sudo reboot


3,下载 qemu 并编译

3.1 下载源码

$ git clone https://github.com/qemu/qemu.git
$ cd qemu
$ mkdir build
$ cd build


3.2 配置编译选项

3.2.1 无配置选项配置

$ ../configure

3.3.2 带选项配置

$ ../configure --enable-slirp --enable-slirp-smbd --smbd=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00 --enable-kvm --enable-debug --target-list="riscv32-softmmu riscv64-softmmu x86_64-softmmu"

--enable-slirp: 为 -net user,载安装ubuntu时会自动配置网络,并安装成功后,可以ssh访问本虚拟机
--target-list: 指定虚拟的的cpu arch 类型,省略此,会全部编译,时间为3倍长。


提前标注:
开启 -net user 模式的启动配置(安装完后的重启):
 

$ ./qemu/build/qemu-system-x86_64 -hda ubuntu.img -m 1024 -net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00

3.3.3 编译 qemu

$ make
$ ls


4,安装虚拟机系统

4.1 加入相关组

sudo usermod -aG kvm $USER
sudo usermod -aG libvirt $USER

4.2 创建硬盘

创建虚拟机的磁盘映像

$ ./qemu/build/qemu-img create ubuntu-220404-kernel-00.qcow2 -f qcow2 50G


4.3 安装虚拟机系统

sudo ./qemu/build/qemu-system-x86_64 -m 32768M -smp 6 -boot c -cpu host \
-hda  ubuntu-220404-kernel-00.qcow2 \
-net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00 \
--enable-kvm  --nographic -append console=ttyS0  \
-cdrom  ubuntu-22.04.4-live-server-amd64.iso  \
-kernel ./ubuntu-220404/iso_ubuntu-22.04.4-live-server-amd64/casper/vmlinuz  \
-initrd  ./ubuntu-220404/iso_ubuntu-22.04.4-live-server-amd64/casper/initrd

安装完成后关掉当前终端,重开一个终端。

4.4 启动新虚拟机

sudo usermod -aG kvm $USER  \
&& sudo usermod -aG libvirt $USER  \
&& sudo ./qemu/build/qemu-system-x86_64 -m 32768M -smp 6 -boot c -cpu host \
-hda  ubuntu-220404-kernel-00.qcow2 --enable-kvm  --nographic \
-net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00,hostfwd=tcp::2222-:22

 

直接登陆进来,也可以考虑 ssh进来。

4.5 ssh 链接虚拟机


启动选项 hostfwd=tcp::2222-:22      是为 ssh 预备端口


其中heihei是虚拟机中的用户名;而 10.208.15.202 是宿主机的ip地址
这样,只要能够ssh进宿主机的机器,也能ssh进 heihei的虚拟机,pwd用heihei的。

sudo ./qemu/build/qemu-system-x86_64 -m 32768M -smp 6 -boot c -cpu host \
-hda  ubuntu-220404-kernel-00.qcow2 --enable-kvm  --nographic \
-net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00,hostfwd=tcp::2222-:22

至此可以正常使用 虚拟机了。
而且可以在任何机器上 ssh 进虚拟机:


hostfwd=tcp::2222-:22      是为 ssh 预备端口

ssh 链接虚拟机:
ssh -p 2222 user-virtual@host-ip

实例:
 

$ ssh -p2222 heihei@10.208.15.202


5. 虚拟机中编译安装 linux kernel

5.1,下载对应版本的linux kernel源代码

5.1.1 apt 下载对应发型版的 linux kernel

$ apt install linux-source
$ ls /usr/src/

linux-source-5.15.0.tar.bz2 


可以看到多了一个文件夹和软连接文件,指向文件夹内的linux kernel 源码打包文件

拷贝到自己的工作目录下:


$ cp linux-source-5.15.0.tar.bz2 ~/kernel_debug/

查看本机kernel版本:
    uname -a

$ uname  -a


Linux heihei-server 5.15.0-112-generic #122-Ubuntu SMP
所以下载对应版本: 5.15 linux kernel

5.2 编译 debug 版本的vmlinux并安装

5.2.1 解压kernel


 

$ tar -xvjf linux-source-5.15.0.tar.bz2

5.2.2 安装依赖

在虚拟机中安装配置和编译 Linux kernel 的依赖包:


$ sudo apt-get update
# 配置的依赖
$ sudo apt install libncurses-dev
$ sudo apt install build-essential
$ sudo apt install flex bison# 编译的依赖
$ sudo apt-get install bc
$ sudo apt-get install dwarves
$ sudo apt-get install libssl-dev
$ sudo apt-get install binutils
$ sudo apt-get install libelf-dev

5.2.3 配置 kernel

查看本机kernel配置文件

$ ls /boot/


 将发行版中的configxxx文件,拷贝至解压好的 kernel 目录下:

 配置kernel 开启 debug info,以便可以调试
 

$ make menuconfig

 进入初始界面:

选中:

kernel hacking ->

compile-time checks and compiler options ->

compile the kernel with debug info

如下图,移动到本项后敲空格键

然后移动到 <Save> 回车并保存为 .config

然后一层层  <Exit> 出来

确认验证保存正确:

$ grep -rn  DEBUG_INFO .config

修改一下 .config

CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"

都设置成空字符串,如上图。

否则会报错:

make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'.  Stop.

 反正自己玩,安全性在发行版了再说吧。

5.2.3 编译kernel

安装依赖:

sudo apt-get install libssl-dev
sudo apt-get install binutils
sudo apt-get install libelf-dev

内存够大:
 

$ make -j
$ sudo make modules_install
$ sudo make install

编译完成:

安装内核模块:

安装内核:

更新引导加载程序:

$ sudo update-grub

 重新启动

$ sudo reboot

/*************************

5.3 开启debug虚拟机模式

未完待续。。。

这块再整理一篇新的log吧

5.3.1 开机debug

sudo ./qemu/build/qemu-system-x86_64 -m 32768M -smp 6 -boot c -cpu host \
-hda  ubuntu-220404-kernel-00.qcow2 --enable-kvm  --nographic \
-net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00,hostfwd=tcp::2222-:22 \
-s -S -append "nokaslr init=/init console=ttyAMA0"


会卡在这里不动,

5.3.2 gdb 链接qemu

宿主机中:
 

$ gdb
(gdb) show configuration # 关注--host以及--target参数
(gdb) file ./vmlinux  # 加载kernel符号表
(gdb) target remote :1234 # 链接qemu中的gdb-server
(gdb) b start_kernel # 设置断点
(gdb) c

***********************/

6,编译安装用户自定义 kenrel module

6.1,示例代码

6.2,编译安装

6.3,验证效果

7, 遇到的问题汇总

Could not find '/usr/sbin/smbd', please install it
$ sudo apt-get install samba


防火墙设置:
检查虚拟机的防火墙设置,确保没有规则阻止 SSH 连接。你可以暂时禁用防火墙来测试连接:
sudo ufw disable
或者,确保 22 端口(或你为 SSH 配置的其他端口)是开放的:
sudo ufw allow 22

查看 sshd 端口:
sudo cat /etc/ssh/sshd_config | grep Port

查看 启动 重启 sshd 的命令

sudo systemctl status sshd
sudo systemctl start sshd
sudo systemctl restart sshd

私用命令备忘:

装机:

sudo ./qemu/build/qemu-system-x86_64 -m 196608M -smp 15 -boot c -cpu host \
-hda  ubuntu-220404-kernel-00.qcow2 \
-net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00 \
--enable-kvm  --nographic -append console=ttyS0  \
-cdrom  ubuntu-22.04.4-live-server-amd64.iso  \
-kernel ./ubuntu-220404/iso_ubuntu-22.04.4-live-server-amd64/casper/vmlinuz  \
-initrd  ./ubuntu-220404/iso_ubuntu-22.04.4-live-server-amd64/casper/initrd

开机:

sudo ./qemu/build/qemu-system-x86_64 -m 196608M -smp 12 -boot c -cpu host \
-hda  ubuntu-220404-kernel-00.qcow2 --enable-kvm  --nographic \
-net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00,hostfwd=tcp::2222-:22

host 中需要执行的安装:
 

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients virtinst bridge-utils virt-manager  virt-viewer
sudo apt-get install libpixman-1-dev


虚拟机中需要执行的安装:

sudo apt install linux-source && \
sudo apt install libncurses-dev && \
sudo apt install build-essential  && \
sudo apt install flex bison && \
sudo apt-get install libssl-dev && \
sudo apt-get install binutils && \
sudo apt-get install libelf-devsudo apt-get install openssh-server
sudo apt-get install vim
sudo apt-get install bc
sudo apt-get update
sudo apt-get install dwarves

bash shell 配色:

vim ~/.bashrc
最后边加入如下内容:

alias ls='ls --color=always'
alias ll='ls -all --color=always'
#alias dir='dir --color=always'
#alias vdir='vdir --color=auto'alias grep='grep --color=always'
alias fgrep='fgrep --color=always'
alias egrep='egrep --color=always'export PS1="\e[0;35m\u\e[0;34m@\e[0;32m\h:\e[0;34m\w\e[0;38m$ "export LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/355453.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蔚来汽车AI算法工程师,如何理解注意力?

大家好啊&#xff0c;我是董董灿。 今天分享一个上海蔚来汽车的AI算法岗位面试经验总结帖&#xff0c;面试岗位为算法工程师。 这次面试提到的问题&#xff0c;除了与实习相关内容和反问之外&#xff0c;面试官总共问了8个问题&#xff0c;主要集中在深度学习基础概念的理解上…

不见五陵高管墓,无花无酒锄做田

不见五陵高管墓&#xff0c;无花无酒锄做田 Golang 通用代码生成器仙童 2.4.0 电音仙女尝鲜版七已发布&#xff0c;此版本测试修复了 PostgreSQL 数据库自动反射功能。此版本更新修复了前端代码生成器&#xff0c;并修复了前端多对多界面的缺陷。PostgreSQL 的数据库反射功能刚…

ubuntu访问windows共享文件夹

方法: Ubuntu访问Windows共享文件夹的方法-CSDN博客 基于交换机的PC端网络通信_服务器交换机pc端-CSDN博客 补充说明&#xff1a; 在这里面输入&#xff1a; smb://192.168.0.30/WindowsShareToLinux

【Effective Web】常见的css布局方式--三栏布局

常见的css居中方式–三栏布局 第一种实现&#xff1a;table布局&#xff08;不推荐&#xff09; 缺点&#xff1a;在table加载前&#xff0c;整个table都是空白的&#xff0c;且修改布局排版都十分困难 <table class"container"><td class"left"…

Linux 软链接

# 语法 ln -s <文件夹or文件的真实路径> <自定义路径别名> # 例子 ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ~/ens33

Flutter 实现软鼠标

文章目录 前言一、如何实现&#xff1f;1、记录鼠标偏移2、MouseRegion获取偏移3、Transform移动图标 二、完整代码三、使用示例总结 前言 flutter在嵌入式系统中运行时&#xff0c;有可能遇到drm鼠标无法使用的情况&#xff0c;但鼠标事件却可以正常接收&#xff0c;此时如果…

基于SSM+Jsp的水果销售管理网站

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

关于椭圆的方程(有Python画的动图)

关于椭圆的方程&#xff08;有Python画的动图&#xff09; flyfish 几何定义 椭圆是平面上所有到两个固定点&#xff08;焦点&#xff09;的距离之和为常数的点的集合。这两个固定点叫做焦点。 解析几何描述 设椭圆的两个焦点为 F 1 F_1 F1​ 和 F 2 F_2 F2​&#xff…

【论文笔记】The Power of Scale for Parameter-Effificient Prompt Tuning

题目: The Power of Scale for Parameter-Effificient Prompt Tuning 来源: EMNLP 2021 模型名称: Soft-Prompt 论文链接: https://aclanthology.org/2021.emnlp-main.243/ 项目链接: https://github.com/google-research/prompt-tuning 核心&#xff1a;针对不同的任务设计不同…

【笔记】打卡01 | 初学入门

初学入门:01-02 01 基本介绍02 快速入门库处理数据集网络构建模型训练保存模型加载模型打卡-时间 01 基本介绍 MindSpore Data&#xff08;数据处理层&#xff09; ModelZoo&#xff08;模型库&#xff09; MindSpore Science&#xff08;科学计算&#xff09;&#xff0c;包含…

视频融合共享平台LntonCVS视频监控安防系统运用多视频协议建设智慧园区方案

智慧园区&#xff0c;作为现代化城市发展的重要组成部分&#xff0c;不仅推动了产业的升级转型&#xff0c;也成为了智慧城市建设的核心力量。随着产业园区之间的竞争日益激烈&#xff0c;如何打造一个功能完善、智能化程度高的智慧园区&#xff0c;已经成为了业界广泛关注的焦…

MacOS设备远程登录配置结合内网穿透实现异地ssh远程连接

文章目录 前言1. MacOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接MacOS3.1 MacOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接MacOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …

在 Visual Studio 2022 (Visual C++ 17) 中使用 Visual Leak Detector

在 Visual C 2022 中使用 Visual Leak Detector 1 问题描述1.1 内存泄漏的困扰和解决之道1.2 内存泄漏检测工具的选择1.3 VLD的现状 2 安装和设置VLD的环境变量2.1 安装VLD文件2.2 VLD安装后的目录和文件说明2.2.1 include子目录说明2.2.2 lib子目录说明2.2.2.1 目录整理 2.2.3…

感恩的力量!美洲杯魔幻提前预告 阿根廷 ——早读(逆天打工人爬取热门微信文章解读)

梅西还能不能提&#xff1f; 引言Python 代码第一篇 洞见 感恩的力量&#xff08;深度好文&#xff09;第二篇 视频新闻结尾 引言 早上早起 昨天晚上1点多才睡 这几天都是 明明很早就准备上床睡觉 但是就是忍不住 吃根雪糕 喝个小饮料 看看最近的欧洲杯比赛 卒 真的是拖延症十…

【总结】ui自动化selenium知识点总结

1. 大致原理 首页安装第三方库selenium库&#xff0c; 其次要下载好浏览器驱动文件&#xff0c;比如谷歌的 chromedriver.exe&#xff0c;配置上环境变量。 使用selenium的webdriver类去创建一个浏览器驱动对象赋值叫driver&#xff0c;一个浏览器驱动对象就可以 实现 对浏…

python爬虫之selenium自动化操作

python爬虫之selenium自动化操作 需求&#xff1a;操作淘宝去掉弹窗广告搜索物品后进入百度回退又前进 selenium模块的基本使用 问题&#xff1a;selenium模块和爬虫之间具有怎样的关联? 1、便捷的获取网站中动态加载的数据 2、便捷实现模拟登录 什么是selenium模块&#x…

【python】PyQt5初体验,窗口等组件开发技巧,面向对象方式开发流程实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

文件扫描工具哪个好?便捷的文件扫描工具推荐

对于初入职场的大学毕业生&#xff0c;申请就业补贴是一项不可忽视的福利。 它不仅能够为新生活带来经济上的缓解&#xff0c;也有助于职业生涯的顺利起步。面对申请过程中需提交的文件&#xff0c;如纸质劳动合同&#xff0c;不必烦恼。市面上众多文件扫描软件能助你一臂之力…

轮式机器人Swiss-Mile城市机动性大提升:强化学习引领未来城市物流

喜好儿小斥候消息&#xff0c;苏黎世联邦理工学院的研究团队成功开发了一款革命性的机器人控制系统&#xff0c;该系统采用强化学习技术&#xff0c;使轮式四足机器人在城市环境中的机动性和速度得到了显著提升。 喜好儿网 这款专为轮腿四足动物设计的控制系统&#xff0c;能…

一种基于图卷积创新的电场强度监测模型,原创未发表!!!

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类算法的家人&#xff0c;可关注我的VX公众号&#xff1a;python算法小当家&#xff0c;不定期会有很多免费代码分享~ 一种基于图卷积创新的电场强度监测模型&#xff0c;原创未发表…