Virtualbox 安装 ubuntu + qemu

0. 前言

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

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

1. VirtualBox 的安装

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

注意:安装 VirtualBox 前需要 Microsoft Visual C++ 2019 Redistributable

2. unbuntu 镜像

直接去官网搜索最新的镜像: Download Ubuntu Desktop | Ubuntu

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

建议选择桌面版本,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  //默认会安装最新的 aarch64

sudo 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

在Linux6.6 中还需要额外的工具:

sudo apt install libncurses-dev pkg-config

编译:

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

为了更好使用make,可以定义一个make 别名:

#使用单引号,防止PWD直接展开,理论上是在工作目录上展开
alias jmake_arm64='make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O="${PWD}/out"'
#jmake_arm64 clean
#jmake_arm64 mrproper
#jmake_arm64 menuconfig
#jmake_arm64 defconfig
#jmake_arm64 -j12

8.2 下载 make_rootfs

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

编译文件系统:

./make_rootfs.sh -a arm64

注意:脚本中的 VERSION 变量默认为24.04,根据实际需要手动修改,例如改成 24.04.2

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 -m 1024

8.4 脚本包装

#!/bin/bash


if [ ! -e "rootfs.ext4" ]
then
    ln -s ../make_rootfs/out/rootfs_arm64.ext4 ./rootfs.ext4
fi

if [ ! -e "Image" ]
then
    ln -s ../linux/arch/arm64/boot/Image ./Image
fi

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

8.5 如何在qemu 中运行ko

在任意目录下开发自己的module,Makefile 如下:

obj-m += test_kprobe.o

KERNEL_DIR ?= /home/justinwei/work/linux/out

TARGET_DIR := /home/justinwei/work/make_rootfs/kernel_modules

ARCH := arm64
CROSS_COMPILE := aarch64-linux-gnu-

BUILD_OPTIONS := -C $(KERNEL_DIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)

all:
        $(MAKE) $(BUILD_OPTIONS) modules

clean:
        $(MAKE) $(BUILD_OPTIONS) clean

$(TARGET_DIR):
        mkdir -p $@

install: all $(TARGET_DIR)
        cp ./*.ko $(TARGET_DIR)/
  • 依赖kernel 的话,则指定 KERNEL_DIR;
  • 注意TARGET_DIR 变量,用以为之后的rootfs 准备ko 文件;
  • 根据依赖关系,只需要运行命令 make install 即可;

当创建 rootfs 时,需要将上面TARGET_DIR 中的文件拷贝到 /mnt 下挂载进去:

sudo mkdir -p $MOUNT_POINT/root/kernel_modules
sudo cp $KRN_MODULES_PATH/* $MOUNT_POINT/root/kernel_modules/

sudo umount $MOUNT_POINT

9. 共享文件夹

9.1 装载增加功能

在设置中,需要勾选 ‘安装增强功能’

在vbox 的安装目录中找到VboxGuestAdditions.iso,右击后装载。 

装载完成后会提示驱动器。

 lsscsi 命令查看虚拟机终端是否挂在成功。

控制器选择 VBoxGuestAdditions.iso,如果第一次,选择虚拟盘,找到 vbox 安装目录中的 VBoxGuestAdditions.iso

9.2 mount 并安装执行功能

cd /media/justin
mkdir cdpath                                 //需要将增强功能挂在到虚拟机
sudo mount /dev/sr0 /media/justin/cdpath
cd cdpath                                    //重新进入cdpath
sudo sh ./VBoxLinuxAdditions.run

mount 完成后会在 cdpath 中看到增加功能的安装文件。

找到 VboxLinuxAdditions.run,通过命令 sudo sh 执行。

lsmod 确认增强功能安装是否成功。

9.3 配置共享文件夹

配置好 windows 本地的共享文件夹,以及共享文件夹名称。

9.4 mount 共享文件夹

sudo mount -o uid=justin,gid=justin -t vboxsf linux /home/justin/work/linux

使用mount 命令挂载共享文件夹。

注意,这里mount 需要指定 udi 和gid,否则使用默认值root

10. 退出qemu

Ctrl + A 后按 X 键

参考:

【VirtualBox】--- 从零开始搭建 Ubuntu系统 超详细_virtualbox安装ubuntu-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

私房菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值