参考:使用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模式,如果使用其它模式,安装和启动命令可能稍微有些不同。
主要步骤
- 安装Qemu软件;
- 安装虚拟网卡
- 使用qemu-img命令创建qemu虚拟机;
- 使用qemu-system-aarch64命令安装kylin系统
- 使用qemu-system-aarch64命令启动kylin系统
- 在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存放位置https://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)https://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设置密码https://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