虚拟机安装archlinux的简单步骤

2023-05-16

这篇文章是我在虚拟机安装archlinux之后的一点心得,参考了archwiki关于安装arch的一些内容https://wiki.archlinux.org/index.php/Beginners%27_guide 。

准备工作

选择虚拟机软件

虚拟机软件可以使用VMware workstation,也可以使用VirtualBox。VirtualBox对Linux的支持更好一点,而且默认有新建archlinux虚拟机的选项。在这里,我使用VirtualBox进行archlinux的安装。

下载安装镜像

在archlinux的下载页面https://www.archlinux.org/download/ 下载最新的archlinux安装镜像。注意和ubuntu之类的linux发行版不同,arch安装镜像只是一个包含安装必要工具的启动镜像,所有的软件包都在线下载。所以安装的时候需要确保网络畅通而且网速足够快。

新建虚拟机

在VirtualBox中新建一个虚拟机,虚拟机类型选择archlinux(如果没有选项,就把对话框从向导模式改为专家模式),内存默认768M(电脑内存大的话也可以修改为1G或者2G),硬盘20G就足够了(选的更大也可以)。然后点击确定。这样就新建好了一个虚拟机。

新建完成之后,再设置一下,打开设置对话框,然后点击系统->主板,启用EFI(这是为实体机安装做练习,EFI需要做更多工作),然后是系统->硬件加速,启用硬件虚拟(这样就可以安装64位的arch),点击确定。然后在主界面的详细信息那里,点击存储,选择下载好的arch安装镜像。这样,虚拟机的设置就完成了。

安装基本系统

确认基本要求

是否启用EFI

准备工作做完了之后,就可以打开虚拟机,开始安装arch了。有没有启用EFI,会对安装过程产生一些影响。所以需要首先确认一下是否启用EFI。

# ls /sys/firmware/efi/efivars

如果启用了EFI,那么这条命令就会产生一些输出。没有启用EFI的话,这条命令就会什么也不显示。

网络是否畅通

然后需要确定一下网络是否畅通。

# ping -c 4 www.baidu.com

如果网络畅通的话就可以进行下一步。

检查存储设备

使用一下命令查看存储设备是否正常。如果看到了sda、sdb之类的的话,并且容量和上面虚拟机设置的容量一样的话,就说明存储设备正常。sr、loop之类的可以忽略。

# lsblk

分区并格式化

分区

上面的条件一切正常的话,就可以开始分区了。
分区最简单的工具是cfdisk。cfdisk是一个图形化的终端工具,使用很简单,这里只简单说一下:EFI分区在分区列表的第一页,EFI分区需要设置成bootable(也就是boot下面有一个星号),修改分区类型使用type。剩下的操作就很简单了。分完区选择write,写入完成之后退出即可。第一次使用cfdisk的时候,会出现菜单选择分区表类型,可以选择gpt或者dos,由于gpt的各种好处,建议永远使用gpt,除非需要安装旧系统。

# cfdisk

如果误选成了其他的选项将磁盘改为了其它的分区表类型,可以使用parted工具重新选择分区表类型,这样会清除磁盘上的所有数据。

# parted
(parted) mklabel gpt
(parted) quit

如果是普通的BIOS的话,可以直接全部都分给根分区。然后设置成bootable。如果是EFI的话,还需要额外分一个EFI分区。这里我的分区方案是512M的EFI,4G的交换分区,剩下的都分给根分区。

再次运行lsblk命令就会发现,这下sda下面列出了三个分区。

格式化

分完区还没有结束,还需要格式化新分好的区。我的EFI分区是第一个(sda1),交换分区是第二个(sda2),根分区是第三个(sda3)。需要根据自己的实际情况来修改命令的参数。

将EFI分区格式化成FAT32格式:

# mkfs.vfat -F32 /dev/sda1

将交换分区格式化并启用。

# mkswap /dev/sda2
# swapon /dev/sda2

格式化根分区为ext4格式(如果有其他分区比如/home,建议也格式化成ext4):

# mkfs.ext4 /dev/sda3

再次使用lsblk命令,会看到分区已经格式化好了。

挂载分区

首先要先挂载根分区,其他分区都要在根分区中先创建目录然后再挂载。

# mount /dev/sda3 /mnt

如果有EFI的话,还要挂载EFI分区。

# mkdir -p /mnt/boot
# mount /dev/sda1 /mnt/boot

交换分区不需要挂载。

安装系统

修改arch镜像源

挂载好分区之后,就可以安装arch了。但是第一件事情是先修改一下arch的镜像源,使用国内的镜像会得到更快的下载速度。

修改镜像源需要编辑/etc/pacman.d/mirrorlist文件。可以先用nano查看一下该文件,查看完成之后使用Ctrl+X退出。

# nano /etc/pacman.d/mirrorlist

我们利用正则表达式工具grep工具来将中国的源取出来。首先,先切换到软件源所在目录。

# cd /etc/pacman.d

然后用grep取出中国的源。用-A参数的话会用--分隔符分隔每一条匹配,因此再次使用grep工具去掉前一次结果产生的分隔符。

grep -A 1 '##.*China' mirrorlist|grep -v '\-\-'> mirrorlist2

最后将中国的源放到镜像源列表的最前面。这里先反过来,将原来的镜像源追加到中国的源后面,然后将追加完成之后的文件替换掉原来的镜像源。

# cat mirrorlist>>mirrorlist2
# mv mirrorlist2 mirrorlist

镜像源修改完成之后需要刷新一下pacman的缓存。

# pacman -Syy

安装系统基本组件

修改完镜像源,就可以开始安装基本系统了。pacman会从网络上下载最新的软件包开始安装。-i参数是在安装前进行确认,出现确认提示的话直接全选即可。

# pacstrap -i /mnt base base-devel

配置新系统

生成fstab

安装完成系统之后需要生成fstab文件。生成之后需要查看一下是否生成成功。如果不成功需要重新生成。

# genfstab -U -p /mnt >> /mnt/etc/fstab
# nano /mnt/etc/fstab

进入新系统

然后就可以进入新系统进行配置了。先进入新系统。

# arch-chroot /mnt /bin/bash

进入新系统之后会发现命令提示符也发生了相应的变化。

区域和时间设置

设置区域

区域设置需要设置两个文件:locale.gen和locale.conf文件。

先使用nano打开/etc/locale.gen文件,然后取消en_US.UTF-8zh_CN.UTF-8zh_TW.UTF-8三行的注释。然后运行locale-gen命令生成locale信息。

# nano /etc/locale.gen
# locale-gen

然后生成一个locale.conf文件。这里最好使用英文,使用别的语言可能会导致终端乱码。

# echo LANG=en_US.UTF-8 > /etc/locale.conf

设置时区

首先先选择时区:

# tzselect

然后将时区软链接到你自己的时区。

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

设置时间标准

将时间标准设置为UTC,如果虚拟机有这项设置则不用设置(例如VirtualBox就有设置硬件事件为UTC的选项)。

# hwclock --systohc --utc

启用时间自动更新

先查看一下时间服务的状态。

timedatectl status

如果没有启用ntp,那么启用它。

# timedatectl set-ntp true

创建初始ramdisk环境

# mkinitcpio -p linux

设置root密码

使用不带参数的passwd可以设置root密码。

# passwd

安装启动加载器

安装grub

grub是一个功能全面的启动加载器,支持BIOS和UEFI等多种模式,配置起来也比较简单。首先安装grub并使其生效。如果双系统的话,还需要安装os-prober探测其他系统。虚拟机的话不需要。注意这里的分区不需要指定分区数字,不要写成/dev/sda1这样的。

# pacman -S grub os-prober
# grub-install --recheck /dev/sda

如果没有错误提示的话,就说明安装成功。

然后自动生成一个配置文件,默认的配置文件可以适应大部分情况。

# grub-mkconfig -o /boot/grub/grub.cfg

使用bootctl

bootctl仅适用于EFI安装在GPT分区的系统,作为systemd软件包的一部分安装好了。可以直接使用。

首先需要将其安装到启动分区。

# bootctl install

这会生成一个/boot/loader/entries/arch.conf文件,如果没有自动生成,需要手动新建并编辑它。

nano /boot/loader/entries/arch.conf

arch.conf文件这里有一行,改为自己的根分区位置。注意linux条目下的是/vmlinuz-linux,不是/vmlinux-linux,需要多多注意。

title          Arch Linux
linux          /vmlinuz-linux
initrd         /initramfs-linux.img
options        root=/dev/sda3 rw

然后创建loader.conf文件,并添加以下内容。

# nano /boot/loader/loader.conf

添加的内容:

default  arch
timeout  5

这样系统应该就可以正常启动了。

配置网络

设置主机名

# echo myhostname > /etc/hostname

然后将其添加到/etc/hosts文件中。

#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1   localhost.localdomain   localhost   myhostname
::1     localhost.localdomain   localhost   myhostname

启用有线网服务

如果虚拟机重启没有网的话需要让它开机自启动。

# systemctl enable dhcpcd.service

退出并重启系统

# exit
# umount -R /mnt
# reboot

这样,虚拟机就应该可以使用了。这时候可以在虚拟机软件的设置中取消掉arch安装镜像的加载了。

安装桌面环境

安装xorg

所有的桌面环境都基于X11窗口系统。因此首先需要安装X11的开源版本xorg。

# pacman -S xorg

安装xfce4桌面环境

安装完成xorg之后,需要安装xfce4桌面环境。还可以安装额外的工具包。

# pacman -S xfce4 xfce4-goodies

安装显示管理器并启用

这里安装sddm显示管理器。

# pacman -S sddm
systemctl enable sddm.service

所有步骤都成功之后,再次重启虚拟机,应该就可以看到一个有桌面的ArchLinux了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚拟机安装archlinux的简单步骤 的相关文章

  • c# 常量(const) 使用的注意事项

    在我们编码的过程 xff0c const 是我们经常用到的一种声明类型 xff0c 如果不了解const的运行机制 xff0c 有时候会发生一些莫名其妙的bug 可能让我们掉入深坑中 接下来我们一起看看常量的应用吧 xff01 1 常量默认
  • 20210724-flask-跨域调用问题-blocked by CORS policy

    问题背景 xff1a flask服务启动后 xff0c 用webstorm的项目去访问flask的服务接口 xff0c 提示 has been blocked by CORS policy xff0c 这个是因为服务器没有开启允许跨域请求
  • MWAN3报:interface vwan1 is error and tracking is active错误的解决

    当配置完MWAN3后 负载均衡 详细信息页面始终报错 interface vwan1 is error and tracking is active 的解决方法 升级mwan3 配合脚本 开机后WAN口获取到正确IP后 重启mwan3解决
  • Ubuntu14.04+OpenStackMitaka版本+PCIpassthrough(透传)的GPU直通之路

    显卡 xff1a GeForce GTX 1060 root 64 computer lspci nn grep NVIDIA 01 00 0 VGA compatible controller NVIDIA Corporation Dev
  • git与 github连接

    简单记录下自己琢磨git的运用 和 git 与 github账户的连接 xff0c 本人是在ubuntu操作系统下操作的 xff08 除了git安装部分同样使用与windows xff09 如果系统为windows 一下所有在终端输入的指令
  • 给windows server中的“未识别的网络”或“无法识别的网络”设置网络位置类型...

    在windows server中 xff0c 如果网络没有被正确的识别 xff0c 那么就需要手工设置一下网络位置类型 将 公用网络 指定设置为 专用网络 控制面板 系统和安全 管理工具 本地安全策略 网络列表管理器策略 网络 网络位置 x
  • MySQL group by后取每个分组中最新一条数据

    一 需求 MySQL group by后取每个分组中最新一条数据 二 实现 1 xff09 方案1 xff1a 使用min 和max 方法 1 group by后取每个分组中最新一条数据 SELECT MAX test id FROM te
  • 【Debian】设置代理服务器

    注意所有ip都要加上http etc profile System wide environment and startup programs for login setup Functions and aliases Go in etc
  • Ubuntu设置开机启动找不到rc.local的问题

    1 使用runlevel或者who r查看服务器的运行级别 xff0c 2 根据运行级别查看 ls lh etc rc d rc X d XXX gt rc local xff0c 所指向的rc local文件是哪个 默认在 etc rc
  • /usr/bin/env: 'bash\r': No such file or directory

    是由于windows格式的shell多了个 r 替换掉就可以了 https stackoverflow com questions 29045140 env bash r no such file or directory 或者直接在Lin
  • Ubuntu登陆不进去(已解决)

    Ubuntu一直在登陆界面循环 xff1a 登陆密码是正确的 xff0c 但是登陆后自动退回登陆界面 Ctrl 43 Alt 43 F1 F6进入命令行界面 xff0c 尝试startx启动桌面 xff0c 提示 xff1a could n
  • Map内存泄露问题

    如下代码Map的key为一个对象 xff0c 对象重写hashcode并且根据对象属性变化 xff0c 如果对象的属性值发生变化 xff0c 对象的hashcode也会变化 xff0c 就不能取出原来的值 xff0c 最终导致资源浪费 im
  • SQL语句、PL/SQL语句、SQL*PLUS语句结束符号

    xff08 1 xff09 SQL语句以 xff1b 或者 结束语句 通常情况是以 xff1b 结束语句 xff08 2 xff09 PL SQL语句以 结束语句 xff08 3 xff09 SQL PLUS语句以换行符结束语句
  • Debian 9 Stretch国内常用镜像源

    随着Debian 9的普及 xff0c 但由于伟大的墙的存在 xff0c 那就有必要整理一下国内的镜像站点 1 使用说明 一般情况下 xff0c 修改 etc apt sources list文件 xff0c 将Debian的默认源地址改成
  • docker分布式部署pyspider爬虫系统

    阅读准备 docker基础命令 xff0c docker compose基础pyspider基础 如果您不熟悉上面的内容 xff0c 可以先网上查阅有关资料 1 创建网络接口 首先 xff0c 创建一个Driver为bridge的网络接口
  • iOS 导航控制器、导航条、导航项、控制器的关系

    常见的APP的页面结构 xff0c 分为两个横向和纵向两个维度 xff0c 最为经典的就是横向维度采用UITabBarController xff0c 纵向维度采用UINavigationController 当然 xff0c 横向维度还可
  • 物化视图日志与增量刷新

    一 物化视图日志结构 Oracle 的物化视图的快速刷新要求必须建立物化视图日志 xff0c 通过物化视图日志可以实现增量刷新功能 物化视图日志的名称为 MLOG 后面跟基表的名称 xff0c 如果表名的长度超过 20 位 xff0c 则只
  • ubuntu 修改环境变量(PATH)

    ubuntu 修改环境变量 PATH 1 什么是环境变量 PATH 在Linux中 xff0c 在执行命令时 xff0c 系统会按照PATH的设置 xff0c 去每个PATH定义的路径下搜索执行文件 xff0c 先搜索到的文件先执行 我们知
  • python装饰器

    python装饰器 在不改变原有功能的情况下 xff0c 增加新的功能 在不改变存钱和取钱的功能 xff0c 增加验证登录的功能 def is login func def wapper args kwargs print 39 登录成功
  • python倒序删除list元素

    python按照条件在list中删除元素时 xff0c 如果正序从前往后删除 xff0c 会使元素的索引位置前移 xff0c 可能造成部分元素无法删除 xff0c 举例 xff1a 执行结果 xff1a 可见 xff0c 由于删除第一个3后

随机推荐

  • Python3 pytesseract识别简单的验证码

    安装tesseract并添加到系统PATH Python3 pytesseract识别简单的验证码 xff0c JPEG格式 xff0c 验证码样式如下 xff1a 此验证码比较简单 xff0c 因此简单二值化处理 xff0c 然后使用py
  • Android10.0和11.0唯一识别标识设计

    背景介绍 应用开发中不管是埋点统计还是推送通知 xff0c 都会用到唯一识别标识 xff0c 在Android中设备唯一码有很多 xff0c 如 xff1a MAC地址 IMEI号 xff08 DeviceId xff09 IMSI号 AN
  • Linux系统中用命令行清空垃圾箱Trash

    我用的系统是Ubuntu16 04 最近遇到了一个问题是 xff0c 当我的垃圾箱有大量的小文件时 xff0c 当我用图形界面清空垃圾箱时 xff0c 总是卡死 xff0c 而其清理很慢 xff0c 于是用命令行清理 xff0c 代码如下
  • 4、IP信息查询API接口,免费好用

    1 前言 IP信息查询接口 xff0c 这个是RollToolsApi通用系列接口的其中一个 xff0c 内部包含了2个小接口 xff0c 能实现获取访问者当前ip信息和指定信息ip信息 这个接口的主要特点是 xff0c 能获取ip地址所在
  • 7、全国天气查询API接口,免费好用

    1 前言 全国天气查询接口 xff0c 这个是RollToolsApi通用系列接口的其中一个 xff0c 内部包含了2个小接口 xff0c 能实现获取特定城市今日及未来三天的天气 这个接口的主要特点是 xff0c 数据更新延迟低 查看接口完
  • ios开发中如何判断手指在屏幕上是移动事件还是点击事件

    如果自己想 可以有一种方法是这样的 当用户touch动作结束后 判断用户点击开始位置和结束位置的坐标 如果相等 则说明是点击 否则为移动 这种方式理论上是可以的 在模拟机上也是可以的 原因是因为模拟机上你用的时鼠标点击 点击的是一个点 可以
  • zeal工具的安装与使用(离线api文档浏览器)

    本来想下载一个dash来用一下 xff0c 结果它只有mac版本 xff0c 没有windows版 xff0c 遂使用zeal zeal官网 xff1a https zealdocs org 文档地址 xff1a http kapeli c
  • Kubernetes部署SpringBoot连接外部数据库使用svc模式

    这篇文章主要讲解Kubernetes部署SpringBoot的过程 xff0c 其中主要的难点是用svc名称动态获取数据库IP 网上有一部分文档有说 xff0c 但是不进行讲解 xff0c 我在最初部署的时候测试不成功 xff0c 后来发现
  • Python进行 sftp上传下载

    1 Python进行 sftp上传下载 span class token comment 下载SFTP代码内容 pip install paramiko span span class token keyword import span p
  • VS远程调试方法

    远程调试步骤 一 远程调试前置条件 1 调试的机器上安装了 Microsoft Visual Studio 2 被调试机器上有远程调试的程序 xff0c 这个程序可以在VS安装路径下拷贝 xff0c 如果是默认安装 xff0c 那么所在的文
  • Qt 信号-槽的同步与异步处理

    通常使用的connect xff0c 实际上最后一个参数使用的是Qt AutoConnection类型 xff1a Qt支持6种连接方式 xff0c 其中3中最主要 1 Qt DirectConnection xff08 直连方式 xff0
  • Qt 线程同步与异步处理

    一 线程分析 1 继承QThread类 平时我们使用线程的时候一般是继承QThread类 xff0c 实现它的run 函数 xff0c 将需要在线程中执行的代码放在run 里进行执行 需要注意的事项 xff1a 如果是while循环 xff
  • 通过UltraEdit(UE)转化\r\n(回车换行)与\n(换行)

    r n 回车换行 是window上的换行符 xff0c n 换行 是linux上的换行符 xff0c 下面介绍通过UltraEdit UE 在windows上实现相互转化 1 r n 回车换行 转化为 n 换行 用UE打开对应的文本文件 x
  • Android多媒体篇

    多媒体接口和娱乐 游戏等业务密切相关 xff0c 灵活地采用多媒体接口 xff0c 可以使应用具备更强的吸引力 1 音频处理 作为多媒体处理的最基本的组成部分 xff0c 音频处理在移动终端上十分复杂 音频的播放 记录 以及多种场景 xff
  • Java基础教程

    一 Java语法 1 java主要特性 Java语言是简单的 xff1a Java语言的语法与C语言和C 43 43 语言很接近 xff0c 使得大多数程序员很容易学习和使用 另一方面 xff0c Java丢弃了C 43 43 中很少使用的
  • JSP基础教程

    xfeff xfeff JSP技术是以Java语言作为脚本语言的 xff0c JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序 1 Java简介 1 xff09 为什么使用JSP xff1f JSP程序与CG
  • 系统设计概论

    1 分层系统软件体系结构 1 xff09 简介 层次系统风格将对软件结构组织成一个层次结构 xff0c 一个分层系统组织的 xff0c 每层对上层提供服务 xff0c 同时对下层来讲也是一个服务的对象 在一些分层系统中 xff0c 内部的层
  • python监控windows的cpu,内存,磁盘

    span class hljs comment user bin env python3 span span class hljs comment coding utf 8 span span class hljs keyword impo
  • Java问题_直接运行jar文件,系统没有反应

    问题 xff1a 直接运行jar文件 xff0c 系统没有反应 问题分析 xff1a 我比较好奇为什么安装了Java就可以直接运行 jar文件 https blog csdn net walkingmanc article details
  • 虚拟机安装archlinux的简单步骤

    这篇文章是我在虚拟机安装archlinux之后的一点心得 xff0c 参考了archwiki关于安装arch的一些内容https wiki archlinux org index php Beginners 27 guide 准备工作 选择