在ProxmoxVE(PVE)7.0中安装ArchLinux

前言

之前在实体机上装过一次Arch,现在尝试在Proxmox VE(后文用 PVE指代)虚拟环境中跟Arch Wiki的教程装一次ArchLinux。

使用环境:

Linux pve 5.11.22-7-pve #1 SMP PVE 5.11.22-12 x86_64 GNU/Linux

archlinux-2022.03.01-x86_64.iso

准备工作

下载ArchLinux安装环境镜像

Visit the Download page

进入Arch官网的下载页面 https://archlinux.org/download/

选择 BitTorrent Download (recommended)中的 Magnet link(磁力链),使用你喜欢的BT下载工具下载

你当然可以使用迅雷,但是迅雷“只下载不上传”的吸血行为不符合BT的共享精神,还是推荐使用Transmission, qBittorrent一类的正统BT下载工具,这些下载工具会运用他人的上传带宽加速你的下载,同时也会运用你的上传带宽加速他人的下载,从而也帮助他人获得更快的下载速度

下载好镜像后,需要把下载好的这个iso文件放到PVE的镜像目录,镜像目录位于 {储存路径}/template/iso中,如果你使用的PVE默认的LVM储存(路径是 /var/lib/vz/),对应的路径应该就是 /var/lib/vz/template/iso;如果你使用其他磁盘,比如我使用的磁盘名叫 ds-nfs-default那么在PVE中的对应路径就是 /mnt/pve/ds-nfs-default,安装镜像就应该放到 /mnt/pve/ds-nfs-default/template/iso中。

放好安装镜像后,应该就能在PVE网页控制台看到对应镜像了。

如果没有显示你放入的镜像,检查前面步骤。

配置虚拟机环境

所有配置与配置普通虚拟机无差,要注意的是如果选用的是UEFI模式启动,则需要先禁用掉Secure Boot

禁用方法待补充

安装过程

启动安装介质

启动虚拟机,选择默认启动项启动即可进入arch安装介质

连接网络

如果使用的是linux-bridge网络桥接至一个拥有DHCP服务的以太网时,安装环境会自动尝试使用DHCP获取IP,无需额外配置。如果需要手动配置IP,可以参照 Network configuration#Static IP address 的教程来配置。

可以使用ping来测试一下是否能够正常联网。

如果网络配置成功了,推荐通过ssh来远程配置后面的操作,方便复制粘贴。

使用ssh连接来配置(可选,建议)

使用ip addr来查看当前使用的IP

使用systemctl status sshd来查看是否正在运行sshd服务,如果显示类似图中所示则代表已经运行

使用passwd命令来修改当前安装环境的root密码,以方便ssh连接。

重新设置mirrorlist(可选,建议)

使用reflector来获取速度最快的6个镜像,并将地址保存至/etc/pacman.d/mirrorlist

reflector -c China -a 6 --sort rate --save /etc/pacman.d/mirrorlist
reflector -c China -a 6 --sort rate --save /mnt/etc/pacman.d/mirrorlist

打开自动同步时间

timedatectl set-ntp true

如果要检测是否生效,输入 timedatectl status,显示正确时间则为配置成功

文件系统

磁盘分区

当磁盘被系统识别时会被加载为形如 /dev/sda/dev/nvme0n1/dev/mmcblk0一样的块设备.。使用 lsblk或者 fdisk去辨认这些设备。

fdisk -l

rom, loop or airoot结尾的设备可以忽略掉。

选择的磁盘需要下列分区:

如果你想要创建任何堆叠块设备如LVM, system encryptionRAID,现在就做。(本次安装过程不采用)

这里我按照ArchWiki推荐的分区表设置:

UEFI with GPT

挂载点 分区 分区类型 建议大小
/mnt/boot /dev/efi_system_partition EFI system partition 至少300 MiB
[SWAP] /dev/swap_partition Linux swap 超过512MiB
/mnt/dev/root_partition Linux x86-64 root (/) Linux x86-64 root (/) 设备剩余全部

g并回车将磁盘分区表设置为GPT格式。

n并回车新增一个分区,分区号默认回车,起始扇区默认回车,结束位置输入 +300M并回车表示分区大小为300M。

重复 n操作,分别创建好大小为300M,1G,剩余全部的三个分区

t并回车更改分区类型,输入分区编号1并回车,输入分区类型1并回车(1代表EFI system partition)

重复 t操作将2,3号分区分别改为类型19与类型23(19代表SWAP,23代表Linux x86-64 root)

最后按w并回车保存分区表。

磁盘格式化

分别键入以下三行命令将刚刚创建好的分区格式化,如果你的设备不是sda,改为你自己的设备名

mkfs.fat -F 32 /dev/sda1
mkswap /dev/sda2
mkfs.ext4 /dev/sda3

挂载文件系统

将刚才分好区格式化好的磁盘挂载至/mnt

mount /dev/sda3 /mnt
mkdir -p /mnt/boot #创建/mnt/boot目录供挂载
mount /dev/sda1 /mnt/boot

挂载swap分区

swapon /dev/sda2

安装系统

安装软件包

使用pacstrap(8) 脚本来安装基础软件包,Linux内核以及固件:

(nano是一个文本编辑器,后面会用到,当然如果你喜欢你也可以换成vi/vim)

 pacstrap /mnt base linux linux-firmware nano

注意,这一步是联网操作,如果身处天朝要么扶墙要么参照前文 [重新设置mirrorlist(可选,建议)

生成fstab文件

genfstab -U /mnt >> /mnt/etc/fstab

检查一下刚刚生成的fstab文件

cat /mnt/etc/fstab

如果有类似下图的输出则代表生成成功

更换当前的根目录到安装到硬盘上的系统

之前的操作root根目录都是基于iso安装环境的临时root目录,要想在安装在硬盘上的系统操作,就应该通过arch-chroot命令把当前的root目录更换到硬盘上系统的root目录/mnt

arch-chroot /mnt

如果没有错误,应该会像图中一样发现命令行前缀的变化

修改时区与本地化设置

将时区设置为亚洲/上海

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

同步硬件时钟

hwclock --systohc

编辑/etc/locale.gen文件来配置本地化设置

nano /etc/locale.gen

使用ctrl+w来搜索,分别找到#en_US,zh_CN带有UTF-8的两行,去掉前面的#号,最后ctrl+o并回车保存文件,ctrl+x并回车退出nano。

编辑完成后输入

locale-gen

生成配置。

创建并修改/etc/locale.conf文件

touch /etc/locale.conf
nano /etc/locale.conf

填入LANG=en_US.UTF-8并保存。

网络主机名配置

echo "archlinux" >> /etc/hostname

起一个你喜欢的名字替换掉双引号中的内容,这个名字会作为主机名被其他网络设备发现,这里我起的名就是archlinux,记得别用中文

设置root密码

这一步的重要性不必多说

passwd

输入要设置的新密码完回车再重复一次,密码输入界面不会显示你当前输入了多少字符,无论怎么按都是空的。

引导程序

这里我使用GRUB进行UEFI引导

pacman -S dosfstools grub efibootmgr  # 安装引导程序
grub-install --target=x86_64-efi --efi-directory=/boot --recheck  # 将grub安装至EFI分区
grub-mkconfig -o /boot/grub/grub.cfg  # 生成grub配置

安装新系统必要的包

安装完后重启的新系统中还没有诸如dhcp之类的必要包,这里安装一下

pacman -S networkmanager network-manager-applet dhcpcd dialog os-prober mtools ntfs-3g base-devel linux-headers reflector git

之后安装完重启至新安装的系统后还要启动dhcpcd服务,之后再说

保存并重启

到这里硬盘上的新系统就已经安装并配置完成了,先退出chroot环境,卸载掉挂载的硬盘后重启

exit  # 返回至arch-chroot之前的环境
umount /mnt/boot
umount /mnt
reboot  # 重启

安装后配置

启动必要服务

开启dhcpcd

正常启动后,使用之前配置的root账户密码登录。这个时候使用ip addr命令会发现并没有获取到IP地址,因为之前安装的dhcpcd服务还没有启用,这里启用一下

systemctl start dhcpcd  # 启动dhcpcd
systemctl enable dhcpcd  # 使dhcpcd自启

开启sshd

如果想用ssh远程控制也一样,需要启用sshd服务

systemctl start sshd
systemctl enable sshd

注意,还需要去修改sshd的配置文件才能允许root登录/使用密码登录

nano /etc/ssh/sshd_config

将其中PermitRootLogin前面#号去掉并且将值设置为yes

将其中PasswordAuthentication前面#号去掉并且将值设置为yes

ctrl+o保存,ctrl+x退出

重启sshd服务

systemctl restart sshd

这时应该就可以通过密码来进行ssh连接了

更多待补充...

最后修改:2022 年 05 月 04 日
觉得有帮助的话,打赏一个呗~