使用Qemu在Windows上模拟arm平台并安装debian10 arm系统(cd镜像) 安装记录

news2024/12/24 10:10:40

参考:使用Qemu在Windows上模拟arm平台并安装国产化操作系统_viyon_blog的博客-CSDN博客_qemu windows

镜像:debian-10.12.0-arm64-xfce-CD-1.iso

环境:qemu虚拟机,宿主机win10,amd64

QEMU_EFI.fd:

(298条消息) qemu虚拟机的bios文件

虚拟网卡软件:openvpn-connect-3.3.6.2752_signed.msi

命令行工具:powershell

背景介绍

我们平常使用的PC一般都是x86架构的Intel CPU,如果由于某些原因需要使用arm架构的操作系统,我们无法使用一些虚拟机软件(如vmware workstation、virtual box等) 进行安装,因为这种类型的虚拟机软件只能安装和宿主机的CPU相同架构的系统。不过,我们可以使用qemu软件,该软件可以理解为一个模拟器,可以模拟一个arm架构的虚拟机。qemu有时候也被称为虚拟机软件。

本文简单介绍了如何在windows系统中安装并使用qemu安装arm架构的kylinV10系统(其它类似的操作系统也可以参考,仅仅是安装时使用的ISO镜像不同),可以在x86架构的windows上运行arm架构的虚拟机,以便在windows上可以使用其它cpu架构的操作系统进行开发、编译、验证问题等操作。仅供需要的人员作为参考。

文档说明

本次安装后虚拟机上网使用的是tap模式,所以启动命令及上网配置都是采用的tap模式,如果使用其它模式,安装和启动命令可能稍微有些不同。

主要步骤

  1. 安装Qemu软件;
  2. 安装虚拟网卡
  3. 使用qemu-img命令创建qemu虚拟机;
  4. 使用qemu-system-aarch64命令安装kylin系统
  5. 使用qemu-system-aarch64命令启动kylin系统
  6. 在kylin系统中进行网络配置

安装qemu软件

安装qemu

将qemu的安装包下载下来后,直接双击执行就可以,和安装其它的软件一样,不再赘述。安装过程中请记住安装的路径,后面配置环境变量的时候需要用到。

配置环境变量

打开cmd,执行qemu-system-aarch64 -version,可以展示版本信息,如下所示:

安装虚拟网卡

安装openvpn

双击下载下来的openvpn-connect-3.3.6.2752_signed.msi软件,和安装其它软件一样,一步步安装即可。

注意:不一定非得安装这个软件,安装别的vpn软件也可以,只要能创建虚拟的网卡就可以。

修改网卡名称

安装完成后,在网络连接界面可以看到新增加了一块网卡,如下图所示:

注意:大的红框中的网卡是新增加的,黄色框中的名称是经过我修改后的,安装完openven后可能不是这个名字,下面马上要说修改网卡名称的操作。只需要关注小的红框中的网卡类型是否是“TAP-Windows Adapter”即可,找到这种类型的网卡就是新增加的网卡。且连接状态也是未连接状态,不用关注,等启动虚拟机后即可变为正常状态。红框下面的“以太网”是我电脑的真实物理网卡。

右键单击新增加的网卡,重命名该网卡,如下图所示:

共享物理网卡的网络

右键单击本机物理网卡,如下图所示:

点击“属性”按钮,在弹出的界面中选择“共享”选项,如下图所示:

选中“允许其它网络通过此计算机的Internet连接来连接”复选框,“家庭网络连接”项选择刚才新增加的网卡(且是修改过名字后的名称),选中“允许其它网络用户控制或禁用共享的Internet连接”,确定即可。

注:在bebian安装过程中我把上面的网络共享临时关闭了,防止在安装中联网

创建qemu虚拟机

1、创建虚拟机磁盘

create -f qcow2 debianArm.qcow2 128G

2、挂载cd镜像启动虚拟机安装系统

qemu-system-aarch64.exe -m 8192 -cpu cortex-a76 -smp 8,sockets=4,cores=2 -M virt -bios E:\qemuData\QEMU_EFI.fd -device -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=E:\qemuData\debianArm.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=E:\software\os\debian-10.12.0-arm64-xfce-CD-1.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net tap,ifname=tag0

 

 

 

 

 

 

 

 

 

 

 

  比较长的安装过程。。。。。。

 

 漫长等待,可能和去虚拟机有关。。。

 安装完成!

qemu冷启动虚拟后,发现启不来,报startup.nsh什么什么的错误,这样处理:

在shell下输入:

fs0:
edit startup.nsh

向该文件输入以下内容:

\EFI\debian\grubaa64.efi

\EFI\debian\grubaa64.efi

如果是其它系统或架构,可以用ls命令查看具体文件名。

ctrl+s
ctrl+q
保存退出
reset

用qemu启动的命令:

qemu-system-aarch64.exe -m 8192 -cpu cortex-a76 -smp 8,sockets=4,cores=2 -M virt -bios E:\qemuData\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=E:\qemuData\debianArm.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -device virtio-scsi-device -net nic -net tap,ifname=tap0

普通用户加入到sudo组中:

1.切换到超级用户:$ su

2.打开/etc/sudoers文件:$vi /etc/sudoers

3.修改文件内容:

找到“root    ALL=(ALL)       ALL”一行,在下面插入新的一行,内容是“ppl    ALL=(ALL)       ALL”,然后在vi键入命令“:wq!”保存并退出。

注:这个文件是只读的,不加“!”保存会失败。

4.退出超级用户:$ exit

vi编辑器发现不太正常,可以用如下方法解决,我用的是方法二:

发现Debian下Vi编辑器在文本输入模式时,不能正确使用方向键和退格键,或者是输入内容无法正常的内容,解决方法:

解决方法一
用vi 打开/etc/vim/vimrc.tiny,输入以下两行:

set nocompatible

set backspace=2

这样就切换到非兼容模式,并且退格键也可以正常使用了。
解决方法二
vi 用不了自然编辑不了/etc/vim/vimrc.tiny。所以我们用sed插入。

#sed -i '$a\set nocompatible' /etc/vim/vimrc.tiny

#sed -i '$a\set backspace=2' /etc/vim/vimrc.tiny
执行上面这2条。

配置网卡为静态地址:

 

我用的是 /etc/init.d/networking restart 

 输入密码后生效

通过网络安装ssh时提示Media change: please insert the disc labeled,查资料说是要屏蔽默认安装源,如下操作后正常:

sudo vi /etc/apt/sources.list

屏蔽下图中的安装源,顺便添加国内安装源:

deb http://mirrors.163.com/debian/ buster main contrib non-free deb http://mirrors.163.com/debian/ buster-updates main contrib non-free deb http://mirrors.163.com/debian-security/ buster/updates main contrib non-free

修改后,apt-get update 更新安装源索引

 安装SSH

参考:(298条消息) Debian安装ssh_~天下亦有不散之筵席~的博客-CSDN博客_debian sshhttps://blog.csdn.net/weixin_48646819/article/details/120034234

apt-get install -y openssh-server

编辑/etc/ssh/sshd_config文件

#也可以使用vim进行编辑
gedit /etc/ssh/sshd_config

   #添加以下内容
   PermitRootLogin yes

重启ssh服务

/etc/init.d/ssh restart

查看ssh服务状态

/etc/init.d/ssh status

以后就可以通过ssh工具连接或使用WinSCP上传文件了!

安装java环境

载下Linux环境下的jdk8,请去(Java Downloads | Oracle)中下载jdk的安装文件

我们下载的是:jdk-8u351-linux-aarch64.tar.gz

新建目录/etc/java,用WinSCP将Jdk包上传到/etc/java下;

解压:

1 $ cd  /etc/java
2 $ tar  -zxvf  jdk-8u311-linux-x64.tar.gz

修改环境变量

至此,我们最后需要修改环境变量,通过命令

vi /etc/profile
在文件末尾添加

export JAVA_HOME=/etc/java/jdk1.8.0_311/
export JRE_HOME=/etc/java/jdk1.8.0_311/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

然后,保存并退出

之后,通过命令source /etc/profile或重启电脑profile文件配置立即生效

测试是否安装成功

使用java -version,出现版本为java version "1.8.0_351"

安装redis

查询版本:

apt-cache madison redis-server

 

#更新环境(可选)
apt-get update -y
apt-get upgrade -y

#debian仓库中默认安装redis的版本
apt-get install redis-server -y

 #启动redis,并且设置开机自动启动redis服务

sudo systemctl start redis-server

sudo systemctl enable redis-server

查看redis.conf路径

参考:(298条消息) linux如何查找redis.conf 位置_普通网友的博客-CSDN博客_redisconf存放位置icon-default.png?t=MBR7https://blog.csdn.net/m0_55070913/article/details/126433609

首先 sudo systemctl status redis

 然后 sudo cat /lib/systemd/system/redis-server.service

 由此可见,配置文件的位置在:/etc/redis/redis.conf

在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错,如下

redis开启远程访问

参考:redis开启远程访问 - 破阵 - 博客园 (cnblogs.com)icon-default.png?t=MBR7https://www.cnblogs.com/liusxg/p/5712493.html

redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf

解决办法:注释掉bind 127.0.0.1可以使所有的ip访问redis

若是想指定多个ip访问,但并不是全部的ip访问,可以bind

修改办法:protected-mode no

Redis设置密码

参考:(298条消息) Redis设置密码_惜惜然的博客-CSDN博客_redis设置密码icon-default.png?t=MBR7https://blog.csdn.net/m0_58746619/article/details/125865904

设置方法:
方法一:通过命令设置密码(临时生效,重启服务器后密码失效)
 使用redis-cli连接上redis,执行如下命令:

config set requirepass 123456
执行完毕,无需重启,退出客户端,重新登录就需要输入密码了 

方法二:通过配置文件redis.conf设置密码(永久生效)
vi编辑器打开redis.conf

[root@localhost /]# vi /etc/redis.conf
输入/requirepass 找到requirepass关键字,后面跟的就是密码,默认是注释掉的,即不需要密码

重启redis

sudo systemctl stop redis-server

sudo systemctl start redis-server
 

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

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

相关文章

N皇后问题-leetcode51-java回溯解+详细优化过程

说明:问题描述来源leetcode 一、问题描述: 51. N 皇后 难度困难1592 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之…

实验八、直接耦合多级放大电路的调试

一、题目 两级直接耦合放大电路的调试。 二、仿真电路 图1(a)所示电路为两级直接耦合放大电路,第一级为双端输入、单端输出差分放大电路,第二级为共射放大电路。 由于在分立元件中很难找到在任何温度下均具有完全相同特性的两只晶体管,因而…

Active Directory 基础 —— 如何理解group的类型

因为创建一个跨域的组,重新温习了一下最基本的AD知识,所谓温故而知新,把温习的结果整理了一下。AD里面的group类型从范围来说分为global, universal 和 local domain, 从类型来分分为security和distribution。后面的类型理解很容易,security就是纯粹用来权限访问的,而dist…

Java实现FIFO、LRU、LFU、OPT四页面置换算法

题目要求 采用多道程序思想设计一个程序,模拟页存储管理地址变换的过程,可采用FIFO、LRU、LFU、OPT四页面置换算法。基本要求如下: 需要建立访问页表线程、访问快表线程、缺页中断处理线程、访问内存线程等,协同这些线程模拟完成…

JDK17升级之路:JCE cannot authenticate the provider BC问题

问题的产生 报错代码运行环境 JDK:Oracle JDK17 CentOS7.8 这个问题刚拿到比较棘手。原因是本地windows是OK的,centos上是不成功的,报了下面的错误: Caused by: java.lang.SecurityException: JCE cannot authenticate the provi…

论文阅读 DeepGCNs: Can GCNs Go as Deep as CNNs?

DeepGCNs: Can GCNs Go as Deep as CNNs?绪论1、介绍2、相关工作3、方法3.1、图神经网络的表针学习3.2、图神经网络的残差结构3.3、图神经网络的密集连接3.4、图神经网络的扩张性聚集绪论 CNN很强,但不能正确解决非欧几里得数据的问题,图卷积网络&…

YOLO-V5 系列算法和代码解析(五)—— 损失函数

文章目录基本简介调试准备损失函数基本简介 损失函数是神经网络的重要组成部分,用于评估网络的预测值和真实值的差异度。根据偏差的大小,反向调整网络的训练参数,迭代优化使得损失尽量小,也就得到最优的网络参数。 调试准备 debu…

Go-学生教务管理系统【无界面 / 离线版】(一)

【Go】学生教务管理系统(无界面 / 离线版)(一)Ⅰ. 程序说明一、博客日期二、引言Ⅱ. 版权声明Ⅲ. 开发环境一、开发配置二、开发工具Ⅳ. 效果演示一、工程结构(一)目录结构(二)目录说…

【Ctfer训练计划】——(六)

作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座…

Springboot启动之自定义run方法

前言 之前分析的Springboot启动过程的源码分析中给自己留了一个扩展作业:执行自定义的run方法,此方法在B.7、调用运行器简单分析过,今天咱们就自定义一个Run方法试试。 一、实现自定义的run方法 由于java中的接口可以多实现,所以…

IOS----TangramKit 布局框架

文章目录系统结构CocoaPods安装举例下面一个应用场景:布局线性布局TGLinearLayout相对布局TGRelativeLayout框架布局TGFrameLayout表格布局TGTableLayout流式布局TGFlowLayout浮动布局TGFloatLayout路径布局MyPathLayoutgithub: https://github.com/youngsoft/TangramKit/blob…

day32【代码随想录】回溯之N皇后、N皇后||、解数独、有效的数独

文章目录前言一、N皇后(力扣51)二、N皇后||(力扣52)三、解数独(力扣37)四、有效的数独(力扣36)前言 1、N皇后、 2、N皇后||、 3、解数独、 4、有效的数独 一、N皇后(力扣…

材料表征仪器:慢正电子束谱仪最全知识讲解

1 引言 21世纪科学的发展将是微观与宏观的相互渗透与密切结合。凝聚态物理、材料科学等的研究,将由现在的宏观统计方法(包括宏观量子统计)深入发展到物质的原子层次物性研究,微观粒子(颗粒、孔隙)的量子效…

求最大公约数,求阶乘,求n个n相乘的末两位数(Python)

问题 AN: 41.求最大公约数 题目描述 对于求两个正整数m&#xff0c;n的最大公约数可以用do-while实现 输入 输入两个正整数m&#xff0c;n 输出 最大公约数 样例输入 1 2 样例输出 1 a,b map(int,input().split()) if a<b:a,b b,a#python很方便的交换操作 #适应判断不带…

MySQL复制技术方案——异步复制配置

为MySQL服务器配置复制非常简单。但由于场景不同&#xff0c;基本的步骤还是有所差异。最基本的场景是新安装的主库和备库&#xff0c;总的来说分为以下几步∶ 1. 配置复制 为MySQL服务器配置复制非常简单。但由于场景不同&#xff0c;基本的步骤还是有所差异。最基本的场景是…

HTML5 Canvas

文章目录HTML5 Canvas概述Canvas元素使用绘制直线画2条直线用直线画三角形用直线画矩形绘制矩形描边矩形填充矩形混合使用rect()清空矩形区域清空画布绘制多边形画箭头画正三角形绘制圆形HTML5 Canvas 概述 HTML5新增了一个Canvas元素&#xff0c;我们常说的Canvas技术&#…

【LeetCode】填充每个节点的下一个右侧节点指针 [M](二叉树遍历)

116. 填充每个节点的下一个右侧节点指针 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给定一个 完美二叉树 &#xff0c;其所有叶子节点都在同一层&#xff0c;每个父节点都有两个子节点。二叉树定义如下&#xff1a; struct Node { int val; Node *left; Node *…

通过webpack解决浏览器兼容问题

前言 很多面试时都会问到关于浏览器兼容问题&#xff0c;正好最近在看webpack打包&#xff0c;那就在这里记录一下我们如何通过webpack来实现兼容。 需求 要知道我们到底需要兼容那些浏览器&#xff0c;在这里就需要用到browserlist来配置需要兼容的浏览器版本并告诉webpack…

Jenkins自动部署项目

目录 1.安装插件 2.配置 本文只讲解通过插件来自动部署项目&#xff0c;Jenkins的安装可以看博主的另一篇文章&#xff0c;绝对保姆级&#xff0c;简洁丝滑的安装教程&#xff1a; jenkins下载安装__BugMan的博客-CSDN博客 1.安装插件 目前业内常用的解决方法是使用publish…

程序员必备十大网站

窝窝整理了十大程序猿必备网站&#xff0c;涵盖了开源平台、搜索引擎、免费的精品课程&#xff0c;包括让你头疼的BUG、算法等。偷偷告诉你&#xff0c;还有帮你拿到心仪的 offer&#xff01; 一&#xff0c;海量的资源平台 十大网站榜首 &#xff1a;GitHub — 开发者极其重…