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.mzph.cn/pingmian/31506.shtml

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

相关文章

基于DPU的云原生裸金属服务快速部署及存储解决方案

1. 背景介绍 1.1. 业务背景 在云原生技术迅速发展的当下&#xff0c;容器技术因其轻量级、可移植性和快速部署的特性而成为应用部署的主流选择&#xff0c;但裸金属服务器依然有其独特的价值和应用场景&#xff0c;是云原生架构中不可或缺的一部分。 裸金属服务器是一种高级…

主机游戏也可以上云桌面玩了?

最近steam夏季促销活动也快到了&#xff0c;对于很多钟情于主机游戏的小伙伴们&#xff0c;是不是也在摩拳擦掌了&#xff1f; 但有时候现实想愉快地玩到自己想玩的游戏实在是太难了&#xff01; 当你一直关注的新游戏终于上线Steam时&#xff0c;你的钱包是这样的… 而游戏的…

前端新手小白的Vue3入坑指南

昨天有同学说想暑假在家学一学Vue3&#xff0c;问我有没有什么好的文档&#xff0c;我给他找了一些&#xff0c;然后顺带着&#xff0c;自己也写一篇吧&#xff0c;希望可以给新手小白们一些指引&#xff0c;Vue3欢迎你。 目录 1 项目安装 1.1 初始化项目 1.2 安装初始化依…

Vscode中的行尾序列CRLF/LF不兼容问题

最近开发的的时候&#xff0c;打开项目文件经常会出现爆红错误提示信息&#xff0c;显示如下图&#xff1a; 这东西太烦人了&#xff0c;毕竟谁都不希望在遍地都是爆红的代码里写东西&#xff0c;就像能解决这个问题&#xff0c;根据提示可以知道这是vscode中使用的prettier插件…

11、鸿蒙学习—UDID获取方法

一、手机的UDID获取方法如下&#xff1a; 1、打开“设置 > 关于手机”&#xff0c;多次点击版本号&#xff0c;打开开发者模式。 2、打开“设置 > 系统和更新”&#xff0c;在最下方找到“开发人员选项”&#xff0c;打开“USB调试”开关。 3、使用PC连接手机后&#…

【Spine学习10】之 创建新骨骼时,自动绑定图片和插槽的快捷方式

两天没更新了。 遇到一些难解的难题 用的版本是破解版 不知道为啥现在的教程非常地快 明明有些细节很重要还略过讲 所以创建骨骼这里 基本创建是都会 可是骨骼一多 实际工作中的重命名也太麻烦了 。 这就需要学习快捷创建方式&#xff1a; <将对应图片自动绑定到新骨骼上并…

Android 大话binder通信 (上)

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章 本文摘要 用故事的方式把binder通信的整个过程都描述出来&#xff0c;binder通信都经历了哪些节点&#xff0c;在这些节点上的数据有哪些变化&#xff0c;同时还对binder通…

▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch2 贝尔曼公式

PPT 截取有用信息。 课程网站做习题。总体 MOOC 过一遍 1、学堂在线 视频 习题 2、相应章节 过电子书 复习 GitHub界面链接 3、总体 MOOC 过一遍 学堂在线 课程页面链接 中国大学MOOC 课程页面链接 B 站 视频链接 PPT和书籍下载网址&#xff1a; 【github链接】 文章目录 计算…

泽众云真机-平台即将升级支持华为机型HarmonyOS NEXT系统

具小编了解&#xff0c;泽众云真机即将升级支持华为机型HarmonyOS NEXT系统。有些人可能对HarmonyOS NEXT系统了解不多。 之前我们有个银行项目&#xff0c;客户要求测试华为HarmonyOS NEXT系统环境&#xff0c;当时我们云真机尚未有该系统的机型&#xff0c;然后技术人员向华为…

护眼必看!台灯怎么选对眼睛好的方法

家长们是否和我一样发现孩子时常作出眯眼的行为&#xff01;那就要小心了&#xff01;最近我注意到家中的孩子开始表现出眯眼的习惯。经过仔细观察后发现&#xff0c;这可能与她长时间晚上熬夜写作业导致的光线不足有关。随着孩子学习负担的增加&#xff0c;我作为家长开始担心…

ubuntu下同时安装和使用不同版本的库 librealsense

apt 安装的最新版本在/usr 源码安装的旧版本在/usr/local set(realsense2_DIR /usr/local/) find_package(realsense2 2.50.0 REQUIRED) message( "\n\n ${realsense2_INCLUDE_DIR} ${realsense2_VERSION} RealSense SDK 2.0 is FINDINGING, please install it from…

英伟达和IBM搞事情!主攻“量子计算+AI”

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨娴睿/慕一 排版丨沛贤 深度好文&#xff1a;2000字丨8分钟阅读 Ismael Faro是一位计算机工程师&#xff0c;自2015年以来&#xff0c;他就成为开发IBM量子软件生态系统的重要人物。从2016…

【Linux】rouyiVue 项目部署全过程(含MySQL,Nginx等中间件部署)

查看nginx 进程命令 ps aux | grep server_name 1. 安装MySQL 1.1 下载压缩包 官网下载 1.2 解压 上传并解压好放在指定位置 创建soft文件夹 mkdir /soft上传文件&#xff0c;在该目录下再创建一个mysql文件夹&#xff0c;将安装包解压到新文件夹中 mkdir /soft/mysql-…

【odoo】常用的字符转义:“>“,“<“,““,“/“等

概要 字符转义是指在编写代码或处理文本数据时&#xff0c;将特殊字符转换为另一种形式&#xff0c;以便在特定的上下文中正确解析和处理这些字符。 内容 特殊字符描述XML转义表示法&和符号&amp;<小于符号<>大于符号>"双引号&quot;单引号&ap…

CentOS7 部署安装ClickHouse

一、什么是ClickHouse ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用SQL查询实时生成分析数据报告。 OLAP场景需要…

Laravel - excel 导入数据

在Laravel中&#xff0c;可以使用maatwebsite/excel这个库来处理Excel文件的导入。 1.用命令行窗口打开项目根目录&#xff0c;使用 Composer 安装 maatwebsite/excel composer require maatwebsite/excel --ignore-platform-reqs 在你的config/app.php文件中注册服务提供者&…

何在 Vue3 中使用 Cytoscape 创建交互式网络图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue.js 中加载 Cytoscape.js 的技术实现 应用场景 Cytoscape.js 是一个用于创建交互式网络的可视化库。在生物信息学、社会网络分析和药物发现等领域中得到了广泛应用。 基本功能 本代码片段演示了如何在 V…

二叉树的这五种遍历方法你们都会了吗?

说在前面 &#x1f388;二叉树大家应该都很熟了吧&#xff0c;那二叉树的这五种遍历方式你们都会了吗&#xff1f; 以这一二叉树为例子&#xff0c;我们来看看不同遍历方式返回的结果都是怎样的。 前序遍历 前序遍历的顺序是&#xff1a;首先访问根节点&#xff0c;然后递归地…

使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果。

在页面中显示电影排行榜 当单击“&#xff08;收起&#xff09;”链接时&#xff0c;排行榜中后三项的电影名称隐藏而且链接的文本更改为“&#xff08;展开&#xff09; ” 当单击“&#xff08;展开&#xff09;”的链接时&#xff0c;后三项的电影名称重新显示且链接的文本…

视频剪辑技巧大揭秘:轻松掌握为视频添加梦幻光晕效果的绝妙方法!

在这个视觉盛宴的时代&#xff0c;每一个画面都渴望被赋予独特的魅力与魔法。今天&#xff0c;我要为你揭秘一个神秘的视频剪辑技巧——给视频添加光晕效果&#xff0c;让你的作品瞬间脱颖而出&#xff0c;成为朋友圈的焦点 首先&#xff0c;你可以打开原视频进行查看。此时&am…