virtualbox 虚拟机增加硬盘空间_Fedora 29~31 怎么搞 VirtualBox 虚拟机?

41a91b8ba7c1763bb8189ab251f1fe7f.png

Fedora 29~31 Workstation 上怎么搞 VirtualBox 虚拟机?

题外话:别再用书名号《》把英文/外文著作名、歌曲名给括起来好吗? 求您了!

麦文学:别再用书名号《》把英文/外文著作名、歌曲名给括起来好吗? 求您了!​zhuanlan.zhihu.com
490b5fd1aa6d2ba8c289db12b5f70a55.png

基本上只要会敲键盘, 会点鼠标, 您就可以在 Fedora 上安装虚拟机给自己玩。

当然, 中间会有一些坑。

第一步: 安装相关的依赖文件。

su -
dnf -y install @development-tools
dnf -y install kernel-headers kernel-devel dkms elfutils-libelf-devel qt5-qtx11extras


## Fedora 31/30/29/28 ##
dnf -y reinstall binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms qt5-qtx11extras libxkbcommon

## CentOS/RHEL 8 ##
dnf -y reinstall binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms

## CentOS/RHEL 7 ##
yum -y reinstall binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms

** 注意 reinstall 有某种程度的破坏性

No match for argument: compat-libvpx5
Error: Unable to find a match: compat-libvpx5

# dnf install libvpx-utils*  -y
Package libvpx-utils-1.8.2-2.fc32.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

第二步: 增加一个安装源

您可以生成、编辑、修改 /etc/yum.repos.d/virtualbox.repo, 它的内容如下

$ cat /etc/yum.repos.d/virtualbox.repo 
[virtualbox]
name=Fedora  -  - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/fedora/29/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc

简洁的方法是

cat <<EOF |tee /etc/yum.repos.d/virtualbox.repo 
[virtualbox]
name=Fedora $releasever - $basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/fedora/29/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
EOF

也可以酱紫

cd /etc/yum.repos.d/
wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo

dnf update
yum update

第三步 引入/导入 GPG KEY

dnf search virtualbox
Fedora  -  - VirtualBox                                                              159  B/s | 181  B     00:01    
Fedora  -  - VirtualBox                                                              835  B/s | 1.7 kB     00:02    
Importing GPG key 。。。

 From       : https://www.virtualbox.org/download/oracle_vbox.asc
Is this ok [y/N]: y

第四步 才是安装 VIRTUAL BOX

dnf -y install VirtualBox-6.1

or

dnf -y install VirtualBox


Last metadata expiration check: 1:32:18 ago on Sun 28 Jun 2020 06:30:52 PM PDT.
Dependencies resolved.
=================================================================================================================================================================
 Package                                  Architecture                 Version                                Repository                                    Size
=================================================================================================================================================================
Installing:
 VirtualBox                               x86_64                       6.1.10-4.fc31                          rpmfusion-free-updates                        21 M
Installing dependencies:
 VirtualBox-kmodsrc                       noarch                       6.1.10-4.fc31                          rpmfusion-free-updates                       861 k
 VirtualBox-server                        x86_64                       6.1.10-4.fc31                          rpmfusion-free-updates                        19 M
 akmod-VirtualBox                         x86_64                       6.1.10-1.fc31                          rpmfusion-free-updates                        21 k
 akmods                                   noarch                       0.5.6-24.fc31                          updates                                       23 k

Transaction Summary
=================================================================================================================================================================
Install  5 Packages

Total download size: 40 M
Installed size: 112 M
Downloading Packages:
(1/5): akmods-0.5.6-24.fc31.noarch.rpm                                                                                            51 kB/s |  23 kB     00:00    
(2/5): akmod-VirtualBox-6.1.10-1.fc31.x86_64.rpm                                                                                  35 kB/s |  21 kB     00:00    
(3/5): VirtualBox-kmodsrc-6.1.10-4.fc31.noarch.rpm                                                                               1.0 MB/s | 861 kB     00:00    
(4/5): VirtualBox-server-6.1.10-4.fc31.x86_64.rpm                                                                                876 kB/s |  19 MB     00:22    
(5/5): VirtualBox-6.1.10-4.fc31.x86_64.rpm                                                                                       582 kB/s |  21 MB     00:36    
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                            1.1 MB/s |  40 MB     00:37     
Running transaction check
Transaction check succeeded.

第五步 把自己/用户加入用户组

$ sudo usermod -a -G vboxusers $USER
$ newgrp vboxusers
$ id $USER

uid=1000(laomai) gid=1000(laomai) groups=1000(laomai),954(vboxusers)

第六步 试运行 VIRTUAL BOX. 为啥说试运行呢, 因为这里一般就会踩进坑了。

$ virtualbox

第七步 发现问题:

“There were problems setting up VirtualBox. To re-start the set-up process, run /sbin/vboxconfig as root. If your system is using EFI Secure Boot you may need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.”

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

大部分人可能会发现 VIRTUAL BOX 弹出这样的警告, 然后终止运行。

填坑:

为了让VirtualBox运行, 您可以简单地在电脑主板(硬件,启动后按 DEL 等)设置里禁用UEFI “安全启动”,回到主板 BIOS 设置里面关闭 SECURE BOOT,或者您需要做以下步骤。

创建个人公钥/私钥(RSA密钥对)来签署内核模块。选择将“密钥对”存储在 /root/module-signing/ 目录下。

    su -
    mkdir /root/module-signing
    cd /root/module-signing
    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=YOUR_NAME/"
    chmod 600 MOK.priv 

用 mokutil 工具导入或删除机器所有者密钥(MOK),即公钥,这会在机器硬件重启时注册。这一步的密码是一个临时密码,但是您最好使用最容易记的密码。

mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:

重新启动机器。当启动加载器启动时,你应该看到一个屏幕,

要求你按一个按钮进入MOK管理器EFI实用程序。

91eb641d01f313f0ec4ddf42bd259e14.png

在第一个菜单中选择Enroll MOK,然后继续,

然后选择Yes来注册密钥,并重新输入您自己选择过的“最容易记忆” 的密码。然后选择 "确定 "继续系统启动。未来的内核更新需要对更新后的内核重新签名,最好是做笔记或自己编个批处理,方便以后运行。

#!/bin/bash

for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
  echo "Signing $modfile"
  /usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 
                                /root/module-signing/MOK.priv 
                                /root/module-signing/MOK.der "$modfile"
done
su -
cd /root/module-signing
chmod 700 /root/module-signing/sign-vbox-modules  
./sign-vbox-modules

留意 “/scripts/sign-file” 所在的地方。 不同的 版本/DISTRO 会有不同的设置。

FEDORA 里面 “sign-file ” 是放在和 DEBIAN 不同的目录,这是复制粘贴的初学者(例如俺自己)容易被坑的地方。

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/"
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetadp)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxpci)
sudo mokutil --import MOK.der

** FOR UBUNTU

/sbin/vboxconfig

dnf -y install mokutil

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/"

/usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)

mokutil --import MOK.der

reboot


/usr/src/kernels/5.6.19-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
mokutil --import MOK.der
reboot
    modprobe vboxdrv 

基本上做完这一步, 就可以了。

53d8f4f8f7a7634a358e2ed8a68e4d9c.png

/

随想、笔记及其他:

有时候坑是来自不同的 repo

Virtual Box repo 和 RPM Fusion repo 装出来的东西未必是一样的。 尽管俺用 RPM Fusion repo 也没问题。

modprobe vboxdrv
modprobe vboxnetadp
modprobe vboxnetflt
modprobe vboxpci

当安装了另一个内核时( 更新时经常发生 ),而这个内核还没有包含 vboxdrv 模块。所以必须重新编译安装这个模块到新内核上。始终要记得 EFI BIOS SECURE BOOT 这一茬, 要不就老老实实用证书签名, 要不就进入主板的设置关闭 SECURE BOOT 。

sudo /sbin/rcvboxdrv setup
OR
/sbin/rcvboxdrv setup

如果没有正确配置, 可能会得到类似这样的结果

# modprobe vboxdrv
modprobe: FATAL: Module vboxdrv not found in directory /lib/modules/5.8.0-0.rc3.1.fc33.x86_64
 
# modprobe vboxnetadp
modprobe: FATAL: Module vboxnetadp not found in directory /lib/modules/5.8.0-0.rc3.1.fc33.x86_64
 
# modprobe vboxnetflt
modprobe: FATAL: Module vboxnetflt not found in directory /lib/modules/5.8.0-0.rc3.1.fc33.x86_64
 
# modprobe vboxpci
modprobe: FATAL: Module vboxpci not found in directory /lib/modules/5.8.0-0.rc3.1.fc33.x86_64 
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/"
export KBUILD_SIGN_PIN='YOUR_PASSWORD'
/usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
/usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetadp)
/usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)
/usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxpci)
mokutil --import MOK.der

** 

/usr/src/kernels/$(uname -r)/scripts/sign-file --help
** 这两个是等效的
/usr/src/kernels/`uname -r`/scripts/sign-file --help
**注意这个撇号不一样


/usr/src/kernels/`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
/usr/src/kernels/`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetadp)
/usr/src/kernels/`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)
/usr/src/kernels/`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxpci)

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/"

export KBUILD_SIGN_PIN='YOUR_PASSWORD'

/usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)

/usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetadp)

/usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)

/usr/src/kernels/5.6.16-200.fc31.x86_64/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxpci)

mokutil --import MOK.der

sudo /sbin/vboxconfig
sudo /sbin/rcvboxdrv setup
/sbin/vboxconfig
/sbin/rcvboxdrv setup
# /usr/lib64/virtualbox/VBoxSysInfo.sh 
Distribution: Fedora | Version: 32 | Kernel: Linux version 5.8.0-0.rc3.1.fc33.x86_64 (gcc (GCC) 10.1.1 20200618 (Red Hat 10.1.1-2), GNU ld version 2.34.0.20200522) #1 SMP Mon Jun 29 20:50:09 UTC 2020

# /usr/lib64/virtualbox/VBoxSysInfo.sh

Distribution: Fedora | Version: 32 | Kernel: Linux version 5.8.0-0.rc3.1.fc33.x86_64 (gcc (GCC) 10.1.1 20200618 (Red Hat 10.1.1-2), GNU ld version 2.34.0.20200522) #1 SMP Mon Jun 29 20:50:09 UTC 2020

# find / -name "vbox*" |grep drv

/etc/systemd/system/multi-user.target.wants/vboxdrv.service
/usr/lib/systemd/system/vboxdrv.service
/usr/lib/modules/5.7.0-0.rc3.20200501gitc45e8bccecaf.1.fc33.x86_64+debug/weak-updates/VirtualBox/vboxdrv.ko
/usr/lib/modules/5.7.0-0.rc6.20200519git642b151f45dd.1.fc33.x86_64/extra/VirtualBox/vboxdrv.ko
/usr/lib/modules/5.7.0-0.rc6.20200519git642b151f45dd.1.fc33.x86_64/weak-updates/VirtualBox/vboxdrv.ko
/usr/lib/modules/5.7.0-0.rc6.20200519git642b151f45dd.1.fc33.x86_64+debug/weak-updates/VirtualBox/vboxdrv.ko
rpm -qa kernel |sort -V |tail -n 1

uname -r

/usr/src/linux-headers-$(uname -r)/scripts/sign-file --help

/usr/src/linux-headers-`uname -r`/scripts/sign-file --help

**注意这个撇号不一样



/usr/src/kernels/$(uname -r)/scripts/sign-file --help
** 这两个是等效的
/usr/src/kernels/`uname -r`/scripts/sign-file --help
**注意这个撇号不一样

# /usr/src/kernels/`uname -r`/scripts/sign-file --help
/usr/src/kernels/5.8.0-0.rc3.1.fc33.x86_64/scripts/sign-file: invalid option -- '-'
Usage: scripts/sign-file [-dp] <hash algo> <key> <x509> <module> [<dest>]
       scripts/sign-file -s <raw sig> <hash algo> <x509> <module> [<dest>]


KERN_DIR=/usr/src/kernels/`uname -r`
export KERN_DIR

KERN_DIR=/usr/src/kernels/`uname -r`-`uname -m`

题外话:

FC29 能正常安装 eclipse-cdt .

FC31 能正常使用 VirtualBox 6.1.

创建个人公钥/私钥(RSA密钥对)来签署内核模块。这是安装 NVIDIA 的私家显卡驱动也要做的事情, 特别是您忘记回到主板 BIOS 设置里面关闭 SECURE BOOT 的时候。 很多人包括俺自己安装不了 NVIDIA 的私家显卡驱动就是不愿意回到主板 BIOS 设置里面关闭 SECURE BOOT 。

麦文学:别再用书名号《》把英文/外文著作名、歌曲名给括起来好吗? 求您了!​zhuanlan.zhihu.com
490b5fd1aa6d2ba8c289db12b5f70a55.png

【未完待续】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值