[随记]-我安装 arch linux 的记录
一、下载安装包
-
archlinux-x86_64.iso
下载传送门:Arch Linux
BitTorrent Download
是磁链和种子下载,往下拉,找到HTTP Direct Downloads
, 选择China
,选择适合自己的国内镜像进行下载 -
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
扫描可用的硬盘,忽略以 rom
、loop
、airoot
结尾的设备,通常,设备为 /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 进行分区
-
执行
fdisk /dev/sda
,对扫描到的硬盘进行分区 -
输入
n
创建一个新分区 -
输入
p
、1
、回车
、+200M
分别进行主分区、分区编号 1、分区大小 200M 的设定,对应上章中的表格第一行 /boot 目录 对应的分区 -
重复步骤 2 、3 ,分别进行 swap 、/var 、/ 所需进行分区
因为分区 2 对应的是内存交换区,所以这里在分区完毕后,要修改一下分区 2 的文件类型为 swap,执行如下命令即可
-
输入
t
,输入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
重启系统
四、安装后的工作
-
网络管理软件只是安装完毕,新系统进入后无法联网,需要根据实际环境进行网络配置
-
创建非 root 用户
-
有需要安装图形用户界面的可以选择安装图形用户界面
-
本地化设置
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 address
或 networkctl list
,结果中的 lo
是网卡回环名字,不是这里需要的网卡名字
配置文件确定好之后,执行如下操作:
-
启动 arch 网络管理程序:
systemctl start systemd-networkd.service
-
使用
vim
编辑上述网络配置文件 -
重启网络管理程序,以使配置文件生效
systemctl restart systemd-netrowkd.service
然后 ping www.baidu.com
地址,确定网络、连接正常,最后把网络管理程序加入系统自启动即可:systemctl enable systemd-netrowkd.service
4.2 账户管理
不管是开发环境,还是测试环境 ,更甚至生产环境,永远不要把 root 权限下放给业务方
这个没什么好说的,都是血泪史,有过一定研发规模的经历的开发、运维,基本都明白这个道理,记好这句话,将来你会感激它的。
4.2.1 创建分组
账户管理,要分门别类,比如中间件归到运维方,业务应用归到开发方,那我就可以划分两个组,分别叫 dev
和 op
,这里因为就我一个人在维护应用和中间件,加上这么做,与特权用户分离的目标已经完成,所以我这里新增一个 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
其中 password
为 x
代表密码存储在 /etc/shadow
文件里
也可以直接使用 id 命令查询:
id yx
输出一目了然:
uid=1000(yx) gid=1000(dev) groups=1000(dev)
4.2.3 收尾
这时候账户、分组都有了,再根据公司业务部署情况,给这个开发人员创建他的工作目录,并把目录相应权限下放给他的账号或分组即可