在Vultr服务器上安装2019 Arch Linux

介绍

与更流行的发行版相比,Arch Linux的规模较小,但仍然强大。其理念截然不同,各有利弊。

Arch要求其用户更多地以自己为导向。Arch没有GUI安装,但是本指南将在Vultr服务器上运行基本的Arch安装。Arch不会自行为您配置所有内容,但您可以选择如何进行配置。由于存在多种方式,因此这可能特别有益。Arch不会安装大量的软件包,包括桌面环境。而是允许您选择系统上想要的内容,并省去了许多不使用的软件包。

Arch存储库强烈支持保留软件包,因为它们是由其最初的上游开发人员制作的。如果您在其他发行版上遇到软件包问题,上游维护人员可能会经常将您引向您的发行版,因为它经常进行可能负责的更改。在Arch上很少发生这种情况,因为所做的更改通常仅限于:与Arch一起使用所必需的更改,例如其文件系统层次结构;以及主要的上游错误修复和安全后端口,这些问题将暂时使用,直到制作出包含它们的下一个上游版本为止。就是说,某些其他发行版有时会为发行版不会打扰发送或上游开发者不接受的软件包添加功能和错误修复,除非确实必要,否则这些额外的补丁不会添加到Arch软件包中。

Arch作为“滚动版本”运行。整个Arch都没有版本或发行周期。受信任的Arch软件包维护者将新的上游发行版提交到Arch的存储库中。用户定期将所有软件包更新为最新的软件包。有些用户每天更新一次,有些每周更新一次,有些甚至更少。Arch用户可以从运行最新版本中受益,而不是在其他发行版中可能拥有数月或数年的旧版本,但也可能会遇到问题,即在发行新版本之前上游测试无法捕获。

与许多其他发行版相比,Arch被认为是一种更先进,技术要求更高的发行版。完全不熟悉Linux的人可以使用Arch,但是他或她必须准备好并且渴望进行大量学习。Arch社区非常有帮助,但是希望用户会努力寻找解决问题的方法,而不是立即向他人寻求帮助。

从Arch ISO引导

尽管在Vultr上部署新服务器时Arch并未列出“服务器类型”,但是您可以轻松引导Arch ISO并自行安装服务器。

Arch在每个月初发布一个新的ISO。如果Vultr上的最新Arch ISO不是当前月份的,则可以手动将最新版本的Arch ISO上传到Vultr并使用它。当您使用Arch ISO安装到硬盘驱动器时,它将从Arch的服务器获取所有软件包的最新版本。Arch ISO上的软件包版本不是服务器上安装的版本。因此,除非Vultr的最新Arch ISO的ISO库中未包含错误修复程序或功能,否则它会影响安装过程,您可能不需要手动上传最新的错误或功能。

Vultr ISO库

选择“部署新服务器”后,在“服务器类型”下,切换到“ ISO库”选项卡,然后选择最新的Arch Linux ISO。

手动上传最新的ISO

要获取最新的ISO,请访问https://www.archlinux.org/download/,然后单击HTTP直接下载链接之一。在下一页上,将链接复制到“ .iso”文件。访问位于https://my.vultr.com/iso/的 Vultr ISO上传区域。单击“添加ISO”,粘贴刚刚复制的链接,然后单击“上传”。该页面将自动刷新,显示其下载进度,几分钟后,它将显示ISO可用。选择“部署新服务器”,然后在“服务器类型”下,切换到“上传ISO”选项卡,然后选择ISO。

连接到ISO控制台

部署新服务器后,单击它以打开“服务器信息”页面。(如果您看到一条说明您的服务器可能仍在完成安装的注释,则可以忽略此操作,因为您的服务器很可能已从ISO引导启动。)单击右上角看起来像计算机监视器的图标,在鼠标悬停时显示“ View Console”。

按下ENTER“ Boot Arch Linux (x86_64)”,稍后您将以root用户身份登录。(您可能需要调整窗口大小以显示整个控制台。)

ISO使用DHCP自动配置网络,该网络可与Vultr的设置正常配合使用。验证此工作。

# ping -c 1 archlinux.org

同步时钟

确保系统时钟准确。

# timedatectl set-ntp true

更新密钥环

Arch服务器上的软件包可以使用比ISO上新的加密密钥签名,因此可以更新到最新的受信任密钥集。

# pacman -Sy archlinux-keyring

分区磁盘

查看检测到的块设备。

# lsblk

ISO CD可能是sr0,并且loop0已用于安装ISO的一部分。本教程假定您选择了具有单个硬盘驱动器的标准Vultr服务器,因此还假定您的硬盘驱动器为vda。这是因为Vultr标准服务器使用QEMU提供了虚拟硬盘驱动器,virtio_blk以提高性能。

分区磁盘。

# fdisk /dev/vda

您现在需要确定是否需要交换分区。如果不确定,请仔细阅读标题为“创建交换空间”的部分。

注意:如果要使用GPT而不是DOS分区表,则需要为GRUB创建1MB BIOS引导分区。

没有交换分区

按N其次是ENTER5次创造最大尺寸的单个分区。按,W然后按ENTER写入分区表。您的系统分区为/dev/vda1。

带交换分区

按,N然后按ENTER4次。接下来输入+<SIZE>(例如:)+512M,然后ENTER创建交换分区。按T,ENTER然后输入82,然后ENTER再次将其标记为交换分区。按N其次是ENTER5倍创建系统分区。按W,然后ENTER写入分区表。您的系统分区为/dev/vda2。

创建一个文件系统

Btrfs

Btrfs基于写时复制。当写入更改的数据时,不像其他文件系统那样简单地写入它来覆盖原始数据。更改后的块将写入其他位置,只有成功写入后,这些新块的“指针”才会更新。这样可以提高容错能力,因此,如果在写入过程中出现问题,则不会丢失原始数据。它允许文件系统提供快照。在后台,它在每个块上维护校验和,以自动检测并有时以静默方式纠正损坏的数据。与大多数其他要求脱机的文件相比,Btrfs允许大多数文件系统级的修改在安装和使用时进行。Btrfs在开发过程中遇到了一些困难,但是由于Arch将运行最新的内核,

# mkfs.btrfs --label arch <SYSTEM_PARTITION>

分机4

Ext4没有最新的文件系统功能,性能也不尽人意,但是自2008年以来一直存在,并且基于ext3(自2001年以来一直存在)。它的代码库相当稳定,因此有人认为它比新的文件系统更稳定,但是随着其他文件系统的日趋成熟,这种观点变得不那么重要了。

# mkfs.ext4 -L arch <SYSTEM_PARTITION>

XFS文件

XFS是围绕并行IO设计的,着重于可伸缩性。它提供了比ext4更好的性能,并且视情况而定,与btrfs相比提供了稍微更好或更差的性能。XFS不使用写时复制,而仅在其元数据而不是数据本身上维护校验和。

# mkfs.xfs -L arch <SYSTEM_PARTITION>

挂载文件系统

使用以下命令来挂载文件系统:

# mount /dev/disk/by-label/arch /mnt

创建交换空间

交换空间不是严格必需的。与2 GB的内存和1 GB的交换空间相比,使用2 GB的内存和无交换空间的运行效果更好。交换空间占用的内存少于系统及其所有程序所需的实际内存。应该避免在Linux上用完内存,因为内核将通过终止进程来自动尝试释放内存。

如果要在没有交换空间的情况下运行,则可以跳过本节的其余部分。

如果要使用交换空间运行,则可以使用交换分区或交换文件。交换分区的优点是不受文件系统的影响,因此它永远不会碎片化,如果文件系统出现暂时性问题,也不会被束缚。交换文件的优点是可以轻松调整大小,或在需要时删除和添加。

注意btrfs仅预期在Linux 5.0+中支持交换文件,预计在2019年初至中期出现。

交换分区

# mkswap /dev/vda1 # swapon /dev/vda1

交换文件

# dd if=/dev/zero of=/mnt/swapfile bs=1M count=<SIZE IN MB> status=progress # chmod 600 /mnt/swapfile # mkswap /mnt/swapfile # swapon /mnt/swapfile

安装基本软件包组

如果您正在运行btrfs,请使用以下命令。

# pacstrap /mnt base btrfs-progs

否则,请使用此命令。

# pacstrap /mnt base

这样就安装了Arch假定在每个系统上都安装的最少数量的软件包,并且让其中的任何一个冒着损坏事情的风险,后果自负。请注意,ISO包含的软件包比“基本”组中的软件包更多。基本组将仅占用约1.4GB。

请注意,您可能会注意到WARNING: Possibly missing firmware for module: aic94xx和wd719x。这些可能会被忽略。

配置新系统

自动生成/etc/fstab文件(自动挂载文件系统)。

# genfstab -L /mnt >> /mnt/etc/fstab

现在,您可以将root更改为新安装,基本上将您的新安装/mnt/视为/。在chroot环境中,它将运行安装在硬盘驱动器而不是ISO上的程序,因为其中看不到ISO文件系统。

# arch-chroot /mnt

您的系统将使用UTC在内部跟踪时间,但是您可以选择在显示日期和时间时应使用的时区。确定要使用的区域。

# ls /usr/share/zoneinfo

假设您将使用America,确定要使用的城市。

# ls /usr/share/zoneinfo/America

假设您将使用New_York,选择该时区。

# ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime # hwclock --systohc

选择一个UTF-8语言环境。

# sed 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' -i /etc/locale.gen # locale-gen # echo 'LANG=en_US.UTF-8' > /etc/locale.conf

配置网络

在Vultr服务器上配置网络的最简单方法是通过DHCP。Vultr的DHCP服务器仍将为您提供一个公共的静态IP地址。

查看检测到的网络设备。

# ip addr

环回设备标记为lo。在Vultr服务器上,您可能会看到网络设备为ens3。

# cat <<EOF > /etc/systemd/network/ens3.network > [Match] > Name=ens3 > > [Network] > DHCP=ipv4 > EOF

使DHCP在引导时自动运行。

# systemctl enable systemd-networkd

使DNS解析在启动时自动运行。

# systemctl enable systemd-resolved

请/etc/resolv.conf转发请求systemd-resolved。

# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

设置服务器的主机名。

# echo '<YOUR_HOSTNAME>' > /etc/hostname

使用您选择的主机名,并在<YOUR_STATIC_IP>运行时显示静态IP地址ip addr,来设置主机文件。

$ cat <<EOF > /etc/hosts > <YOUR_STATIC_IP>   localhost > ::1                localhost > <YOUR_STATIC_IP>   <YOUR_HOSTNAME>.localdomain  <YOUR_HOSTNAME> > EOF

设置您的root密码

使用以下命令设置密码。系统将提示您输入两次新密码。

# passwd

配置引导加载程序

安装grub软件包。

# pacman -S grub

将其安装到硬盘驱动器。

# grub-install --target=i386-pc /dev/vda

注意:参数是磁盘本身,而不是系统分区。

默认情况下,启动时,grub将等待5秒钟,然后再选择默认选项。要禁用此等待,请使用以下命令。

# sed 's/^GRUB_TIMEOUT=5$/GRUB_TIMEOUT=0/' -i /etc/default/grub

注意:如果仍要访问grub引导菜单,则可能需要将其设置为1秒而不是0秒。

默认情况下,grub为内核提供了以下quiet选项systemd。使用以下内容显示启动和关闭消息。

# sed 's/^GRUB_CMDLINE_LINUX_DEFAULT="quiet"$/GRUB_CMDLINE_LINUX_DEFAULT=""/' -i /etc/default/grub

创建grub配置。

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

重新启动进入硬盘

退出chroot环境。

# exit

关闭服务器电源。

# systemctl poweroff

返回服务器的Vultr的“服务器信息”页面。在“设置”选项卡上,单击“自定义ISO”,然后单击“删除ISO”。单击“服务器重新启动”图标,然后单击“ View Console”。

创建用户

以root用户身份登录,并使用您之前选择的密码。

安装sudo。

# pacman -S sudo

允许组中的成员wheel使用sudo。

# cp /etc/sudoers /etc/sudoers.new # sed 's/# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/' -i /etc/sudoers.new # visudo -c -f /etc/sudoers.new && mv /etc/sudoers.new /etc/sudoers

创建一个用户帐户。

# useradd --create-home --groups wheel <USERNAME>

设置用户密码。

# passwd <USERNAME>

以root身份注销。

# exit

以新创建的用户身份登录。

仍然需要以下命令以root身份运行,因此仍以前缀#。建议以root用户身份运行命令的方法是,以普通用户的身份为每个命令添加前缀sudo。运行时sudo,它要求您输入的密码是用户密码,而不是root密码。

配置时间同步

对于精度较差的轻量级时间同步客户端,请使用以下内容。

# systemctl enable --now systemd-timesyncd

如果您希望更好的准确性。

# pacman -S ntp # systemctl enable --now ntpd

配置SSH

安装SSH服务器,以便您可以使用SSH连接到Arch系统,而不是使用Vultr的虚拟控制台。

# pacman -S openssh # sed 's/#Port 22/Port 22/' -i /etc/ssh/sshd_config # systemctl enable --now sshd

此时,您可以关闭虚拟控制台,并使用SSH连接。注意,默认情况下,sshd不允许您以root用户身份登录。

升级中

因为Arch是一个“滚动版本”,所以您可以随时升级所有已安装的软件包。用户可以每天,每周等按自己的时间表进行升级。如果您经常升级,则无需一次升级很多软件包,并且可能会遇到的任何潜在问题将更容易确定。一次升级所有软件包非常重要,如以下命令所示。容易想象为什么在没有使用glibc的程序的情况下单独升级“ glibc”会引起问题。

# pacman -Syu

升级后,重要的是要仔细查看输出中提供给您的消息。它可能会告诉您您需要做的事情。因此,请勿设置自动升级。

请注意,在重新启动之前,升级之前所有已经运行的程序都不会是较新的版本。在这种情况下,当无法重启的真正基础的东西(例如linux内核,glibc或systemd)被更新时,重新启动是个好主意。

保留启动消息

要显示成功的启动和关闭消息,您需要quiet从grub配置中删除上面的内核参数。(如果您没有这样做,现在仍然可以重新创建grub配置。)请注意,这些消息仅通过Vultr的虚拟控制台显示,而不是在ssh会话上显示。在启动过程的一部分过程中,系统将切换到KMS(内核模式设置图形模式),然后在此之前丢失消息。您可以将切换到KMS的时间提前,以保留所有消息。

# sed 's/^MODULES=()$/MODULES=(cirrus)/' -i /etc/mkinitcpio.conf # mkinitcpio -p linux

默认情况下,系统启动并初始化tty后,它将清除屏幕。尽管从美学上来说这是令人愉悦的,但是它阻止您在引导过程中仅查看消息。您可以关闭此行为。

# mkdir /etc/systemd/system/getty@tty1.service.d

重定向输出sudo cat将不使用root权限,因此这是一种解决方法。(您无需在cat命令本身前面加上sudo前缀,因此它的前缀为$)

$ cat <<EOF | sudo tee /etc/systemd/system/getty@tty1.service.d/noclear.conf > [Service] > TTYVTDisallocate=no > EOF


Vultr 服务器购买:https://www.vultr.com/?ref=8314429-4F


文章贡献,写文章赚钱,注册地址:https://www.vultr.com/?ref=8314427




作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇: zblog php页面提速插件PageSpeeder
下一篇:linux查看磁盘使用情况命令

发表评论

阿里云2021年 618 年中钜惠活动