[随记]-我安装 arch linux 的记录

一、下载安装包

  1. archlinux-x86_64.iso

    下载传送门:Arch Linux

    BitTorrent Download 是磁链和种子下载,往下拉,找到 HTTP Direct Downloads , 选择 China ,选择适合自己的国内镜像进行下载

  2. Vmware

    下载传传送门:VMware Workstation Player

    个人免费,兼容性上,个人觉得比 VirtualBox 优秀一些

二、安装虚拟机并创建虚拟机实例

大家选的虚拟机不太一样,这里不再具体说明,需要注意的是,在 Windows 宿主机上,如果不是 Hyper-V 系列虚拟机,一定要完全关闭 Hyper-V,VT-x (Intel虚拟技术)或者(AMD-v)(AMD虚拟技术)才能使用,虚拟机实例才能正常启动

三、安装 Arch Linux 到虚拟机实例

3.1 装载安装镜像

打开虚拟机设置,把下载好的 archlinux-x86_64.iso 装载到虚拟机实例里,并运行,开机就是 Arch 的 Live 系统 的安装界面

3.2 检查网络

Arch 的安装过程依赖网络进行软件包的下载,执行命令:

ping www.baidu.com

如果得到百度的回应证明网络没有问题,不通的情况极少,我在安装的过程中从来没有遇见过网络不通的问题

3.3 时间&时区设置

更新时间

timedatectl set-ntp true

查看时间状态:

timedatectl status

如果时区不对,执行以下命令

timedatectl set-timezone "Asia/Shanghai"

3.4 硬盘分区

3.4.1 设备扫描

使用 fsdisk扫描可用的硬盘,忽略以 romloopairoot 结尾的设备,通常,设备为 /dev/sda

fdisk -l

3.4.2 分区格式选择

使用 fdisk 对扫描出来的设备进行分区之前,要先看一下系统的引导方式,以便选择对应的分区格式

引导方式 分区格式
UEFI GPT
BIOS MBR

查询引导方式

ls /sys/firmware/efi/efivars

如果命令结果显示了目录且没有报告错误,则系统以 UEFI 模式引导,此时选择 GPT 分区格式。

如果目录不存在,则非 UEFI 引导模式,此时选择 MBR 分区格式

我这里选择分区格式为 MBR

3.4.3 分区及其大小、对应挂载目录

目录 大小 分区编号 说明 分区
/boot 200M 1 存储内核及在引导过程中使用文件 /dev/sda1
swap 512M 2 内存交换区 /dev/sda2
/var 8G 3 系统运行后渐渐占用硬盘容量的目录,如pacman缓存,容量不够可以清理 /dev/sda3
/ 剩余容量 4 根目录 /dev/sda4

3.4.4 使用 fdisk 进行分区

  1. 执行 fdisk /dev/sda ,对扫描到的硬盘进行分区

  2. 输入 n 创建一个新分区

  3. 输入 p1回车+200M 分别进行主分区、分区编号 1、分区大小 200M 的设定,对应上章中的表格第一行 /boot 目录 对应的分区

  4. 重复步骤 2 、3 ,分别进行 swap 、/var 、/ 所需进行分区

因为分区 2 对应的是内存交换区,所以这里在分区完毕后,要修改一下分区 2 的文件类型为 swap,执行如下命令即可

  1. 输入 t,输入 2 选择分区2

  2. 输入 82 ,可以输入 L 查询所有的文件类型

最后输入 w 保存退出即可

3.4.5 格式化分区

分区分完之后,必须格式化,才能挂载使用

普通分区执行如下命令进行格式化:

mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4

交换分区执行如下命令:

mkswap /dev/sda2

3.4.5 挂载分区

对应 3.3.3 章节,把准备好的分区进行挂载,这里需要注意的是,一定要先挂载根目录,

即先执行:mount /dev/sda4 /mnt

然后在执行剩余分区的挂载时候,先创建目录

mkdir /mnt/boot
mkdir /mnt/var
目录 挂载命令
/ mount /dev/sda4 /mnt
/boot mount /dev/sda1 /mnt/boot
/var mount /dev/sda3 /mnt/var

交换分区无须挂载,直接启用即可

swapon /dev/sda2

3.5 安装

3.5.1 添加国内源

使用 vim 编辑 /etc/pacman.d/mirrorlist 文件,在文件 Server = xxxxx 第一行添加

Server = http://mirrors.163.com/archlinux/$repo/os/$arch

3.5.2 安装内核、硬件固件和基础软件包

官方文档示例是这样子的:

pacstrap /mnt base linux linux-firmware

但是其中基础软件包(base包)并不完全,如缺失常用文本编辑器、网络管理程序,我们也可以这样安装

pacstrap /mnt base linux linux-firmware vim dhcpcd

这样在进入新系统时候,就有了网络管理软件和文本编辑器,方便我们联网安装其他软件和编辑配置

3.6 系统配置

3.6.1 Fstab

用以下命令生成 fstab 文件

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

执行完毕后,使用 cat 命令检查一下生产的文件中分区关系是否正确

cat /mnt/etc/fstab

3.6.2 Chroot

chroot 到新安装的系统,以便把下面的配置写入到新系统

arch-chroot /mnt

3.6.3 时区

设置时区为上海时区

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

然后生成 /etc/adjtime

hwclock --systohc

3.6.4 设置root密码

执行 passwd 命令,然后输入你要设置的密码即可,输入完毕回车,会有2次输入确认。

3.6.5 最重要的一步,安装引导程序

这里我们使用 grub 引导程序

安装 grub

pacman -S grub

安装引导,注意这里的 /dev/sda 是上面检测出来的硬盘名字,不是分区名字

grub-install --target=i386-pc /dev/sda

然后生成主配置文件 /boot/grub/grub.cfg

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

3.7 安装结束

输入 exit 或者 Ctrl+d 退出 chroot 环境。

可以使用 umount -R /mnt 手动卸载被挂载的分区,来检测是否所有分区都已准备完毕

最后,通过执行 reboot 重启系统

四、安装后的工作

  1. 网络管理软件只是安装完毕,新系统进入后无法联网,需要根据实际环境进行网络配置

  2. 创建非 root 用户

  3. 有需要安装图形用户界面的可以选择安装图形用户界面

  4. 本地化设置

4.1 网络配置

因为 arch 是安装在虚拟机里面,采用的是NAT方式连接,所以要在 Vmware 当中配置好网关和子网信息,Vmware workstation player 中默认如下:

- -
子网段 192.168.8.0
子网掩码 255.255.255.0
子网范围 192.168.8.128 - 192.168.8.254
广播地址 192.168.8.255
网关(路由) 192.168.8.2

在 arch 内部,我这里使用内置的 systemd-networkd 来配置网络,因为我要在arch 里面部署各种中间件服务,配置起来很麻烦,需要固定 ip,所以这里选择配置静态 ip

4.1.1 配置静态ip

systemd-networkd 通过 /etc/systemd/network/ 目录里的 network文件来配置网络,静态 ip 需要的配置文件如下:

[Match]
Name=你的网卡名字

[Network]
Address=192.168.8.128/24
Gateway=192.168.8.2
DNS=192.168.8.2

其中查询网卡名字的命令为:ip addressnetworkctl list ,结果中的 lo 是网卡回环名字,不是这里需要的网卡名字

配置文件确定好之后,执行如下操作:

  1. 启动 arch 网络管理程序: systemctl start systemd-networkd.service

  2. 使用 vim 编辑上述网络配置文件

  3. 重启网络管理程序,以使配置文件生效 systemctl restart systemd-netrowkd.service

然后 ping www.baidu.com 地址,确定网络、连接正常,最后把网络管理程序加入系统自启动即可:systemctl enable systemd-netrowkd.service

4.2 账户管理

不管是开发环境,还是测试环境 ,更甚至生产环境,永远不要把 root 权限下放给业务方

这个没什么好说的,都是血泪史,有过一定研发规模的经历的开发、运维,基本都明白这个道理,记好这句话,将来你会感激它的。

4.2.1 创建分组

账户管理,要分门别类,比如中间件归到运维方,业务应用归到开发方,那我就可以划分两个组,分别叫 devop ,这里因为就我一个人在维护应用和中间件,加上这么做,与特权用户分离的目标已经完成,所以我这里新增一个 dev 分组即可

groupadd dev

然后查询我们的分组是否创建成功:

cat /etc/group

输出:

dev:x:1000:

在最后一行,会看到我们创建的 dev 分组和其分组编号,到这里就创建完毕了

4.2.2 创建用户

分组有了,接下来我们给某个业务线的开发人员创建一个用户,方便他在开发环境部署、调试自己的应用

添加用户:

useradd -m -g dev yx

创建用户密码:

passwd yx

然后根据要求,输入两遍要设置的密码即可,最后我们用 cat /etc/passwd 查询我们创建的用户及其分组是否正确,这里的分组编号是 1000,和上面是对的上的

yx:x:1000:1000::/home/yx:/bin/bash

这里的格式为:account:password:UID:GID:GECOS:directory:shell

其中 passwordx 代表密码存储在 /etc/shadow 文件里

也可以直接使用 id 命令查询:

id yx

输出一目了然:

uid=1000(yx) gid=1000(dev) groups=1000(dev)

4.2.3 收尾

这时候账户、分组都有了,再根据公司业务部署情况,给这个开发人员创建他的工作目录,并把目录相应权限下放给他的账号或分组即可

posted @ 2022-09-09 11:30  去哪里吃鱼  阅读(289)  评论(0编辑  收藏  举报