Virtualbox 安装 ubuntu + qemu

ops/2024/10/22 15:38:03/

0. 前言

关于 Virualbox 安装虚拟机的优秀文章太多了,笔者主要是着重梳理一些安装小细节,利己利人!!

如果需要保姆式的安装教程,可以查看后续的参考链接。

1. VirtualBox 的安装

直接去官网搜索最近的软件即可:Downloads – Oracle VM VirtualBox

2. unbuntu 镜像

直接去官网搜索最新的镜像: https://ubuntu.com/download/desktop

有几个版本:桌面、服务器 等等。

建议选择桌面版本,VirtualBox 启动的时候,可以选择要不要显示桌面。

3. VirtualBox 创建虚拟机

VirtualBox 安装完成、ubuntu 镜像下载完成后,就正式开始虚拟机的创建,点击新建按钮,输入虚拟机的名称(根据个人喜好),选择要安装虚拟机的位置,选择虚拟光盘,勾选跳过自动安装。

接下来选择分配给虚拟机的memory、CPU、disksize 等属性,最后点完成。

4. 启动虚拟机

第一次可以选择正常启动,进入之后安装 ubuntu 的流程。后续 openssh 安装完、网卡创建好了之后,就可以通过 ssh 连接虚拟机。

5. 设置虚拟机网络

默认情况下,虚拟机在创建的时候,会默认创建 NAT 网络:

这与主机共享IP 地址,访问外部以太网网络连接。也就是说,默认虚拟机是可以向外访问。

但,如果需要向虚拟机内部访问,则需要新建一个网卡:

这里选择 Host-only 网络,这样后面主机就可以通过虚拟机的网卡2 的IP 地址访问虚拟机。

网卡2 创建好后,就可以启动虚拟机,通过 ifconfig 确认是否有网卡2 的IP 地址:

6. 安装 openssh-server

尽快执行完这一步,主机就可以通过 ssh 访问虚拟机,虚拟机的桌面也不需要打开了。

sudo apt-get update
sudo apt-get install openssh-server

7. 虚拟机开机默认是root

sudo vim /etc/ssh/sshd_config

文件中找到 PermitRootLogin项,并修改为:

PermitRootLogin yes

重启SSH服务以应用更改:

sudo systemctl restart sshd

请注意,出于安全考虑,通常不建议允许 root 用户直接登录,如果误删除系统文件,那可能需要从头再来。

8. 准备 qemu 环境

8.1 下载 kernel

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

交叉编译工具 aarch64 可以通过如下命令安装:

sudo apt-cache search aarch64
sudo apt-get install gcc-aarch64-linux-gnu  //默认会安装最新的 aarch64sudo apt-get install gcc

其他工具:

sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install openssl
sudo apt-get install libssl-dev

编译:

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j12

8.2 下载 make_rootfs

https://github.com/vernon2gh/make_rootfs/tree/main

编译文件系统:

./make_rootfs.sh -a arm64

8.3 下载 qemu

sudo apt install qemu-system-arm

运行 qemu

qemu-system-aarch64 -M virt -cpu cortex-a57 -hda rootfs.ext4 -kernel Image -append "root=/dev/vda rw console=ttyAMA0" -nographic

8.4 脚本包装

#!/bin/bashif [ ! -e "rootfs.ext4" ]
thenln -s ../make_rootfs/out/rootfs_arm64.ext4 ./rootfs.ext4
fiif [ ! -e "Image" ]
thenln -s ../linux/arch/arm64/boot/Image ./Image
fiqemu-system-aarch64 -M virt -cpu cortex-a57 -hda rootfs.ext4 -kernel Image -append "root=/dev/vda rw console=ttyAMA0" -nographic

参考:

https://blog.csdn.net/weixin_44205779/article/details/107456016


http://www.ppmy.cn/ops/47966.html

相关文章

物联网TCP、UDP、CoAP、LwM2M、MQTT协议简单对比

一、前言 目前物联网行业有TCP、UDP、CoAP、LwM2M、MQTT、Modbus系列、JT808、HTTP、TLINK、ISAPI等协议,本文先对其中的几款协议进行介绍。具体关系见下图: 传输层协议:TCP、UDP;应用层协议:CoAP、LwM2M、MQTT、Modbu…

怎么使用join将数组转为逗号分隔的字符串

在JavaScript中,你可以使用Array.prototype.join()方法将一个数组转换为逗号分隔的字符串。join()方法接受一个可选的参数,该参数指定了数组元素之间的分隔符。如果不提供参数,则默认使用逗号(,)作为分隔符。 下面是一…

分享一个简单的文件下载器

抽空写了一个用于下载文件的控制器类,只需要把文件的路径通过参数name传递到后台即可完成文件下载到本地,非常方便~ 控制器类代码 package cn.edu.sgu.www.download.controller;import cn.edu.sgu.www.download.entity.RequestURI; import org.springfr…

【C语言】一篇带你高强度解析精通 字符串函数和内存函数 (万字总结大全,含思维导图)(建议收藏!!!)

【 库函数】——字符串函数和内存函数 目录 思维导图: 一:字符串函数 1.1:字符串常规函数 1.1.1:长度不受限制的字符串函数 1.1.1.1:strlen函数 1.1.1.2:strcpy函数 1.1.1.3:strcat函数 …

webman中创建udp服务

webman是workerman的web开发框架 可以很容易的开启udp服务 tcp建议使用gatewayworker webman GatewayWorker插件 创建udp服务: config/process.php中加入: return [// File update detection and automatic reloadmonitor > [ ...........], udp > [handler > p…

C#的线程锁

在 C# 中,线程锁是用于确保在多线程环境下对共享资源进行安全访问的机制。最常见的线程锁是通过 lock 关键字实现的。 使用 lock 关键字实现线程锁 class Example {private object lockObject new object();private int count 0;public void IncrementCount(){l…

【Excel技巧】Excel打开密码的两种设置方法!

excel文件打开密码可以再打开文件时输入密码查看文件内容,这样就可以保护文件内容不被任何人查看了,今天分享excel打开密码的两种设置方法给大家。 方法一: 点击excel中的【文件】功能,找到【信息】-【保护工作表】-【用密码进行…

WebGL开发时尚设计系统

开发一个基于WebGL的时尚设计系统可以为用户提供一个互动、实时的3D体验,允许他们设计和试穿虚拟服装。这个系统可以广泛应用于时尚设计、电子商务、虚拟试衣间等领域。以下是开发此系统的主要步骤和关键技术。北京木奇移动技术有限公司,专业的软件外包开…