云服务器/VPS 安装Arch Linux (二)
云服务器/VPS 安装Arch Linux (二)
Sitao适用于: 内存512MB以上的机器
我将使用一台512MB内存的机器进行演示,也是预装了Debian系统
预装其他系统也可以,我更推荐Debian
前言
从上一篇文章可以知道,整个过程中主要用到的就是airootfs文件,它一般是.sfs格式的.
我们先看看官方ISO镜像中airootfs.sfs文件的大小:
793MB的airootfs.sfs复制到2GB的内存中,完全没问题,可是对于内存低于1GB的机器,强行把793MB的airootfs.sfs文件复制到内存中进程会被kill掉。所以我就想,airootfs.sfs文件的大小再小些不就可以复制进内存了吗?于是我用archiso工具自制了ISO镜像,将整个镜像大小控制到400MB左右(镜像不断更新中),其中airootfs.sfs才318MB,现在就可以复制进512MB的内存中了.
所以第二种方法的核心步骤就是自制ISO镜像了,你可以根据官方的文档来构建,但我更推荐直接用我自制的(能帮你省不少时间):
准备工作
1. 确定启动方式:传统BIOS还是UEFI?
1 | ls /sys/firmware/efi |
如果提示No such file or directory就是传统BIOS启动,否则就是UEFI
我这台机器是传统BIOS启动
2. 确定当前系统的根分区
使用 df -hT
命令查看
可以看到根分区是 /dev/sda1
,即第一个硬盘的第二个分区,在grub中表示为(hd0,1)
3.确定是DHCP还是静态IP
执行 ip addr
查看网卡
如果活动网卡有dynamic字眼说明是DHCP,否则是静态IP
如果是静态IP,把ip地址,子网掩码以及网关记下来
我这台机器是静态IP
使用自制ISO镜像
将你构建好的镜像拷贝到需要安装arch linux机的器上,或者直接下载我自制的archlinux的ISO镜像文件(推荐)
使用ssh工具连接你的VPS
1 | mkdir /iso && cd /iso |
配置GRUB
接下来,为了能够从ISO启动,我们需要编辑GRUB配置.
在 /etc/grub.d/40_custom
文件中添加Arch Linux启动条目(根据你的情况修改,不能照搬):
1 | cat << EOF >> /etc/grub.d/40_custom |
copytoram=y这个选项是非常必要的,其作用是将airootfs文件(初始的根文件系统)复制到内存中运行,这样才能给硬盘重新分区和格式化!想了解更多启动参数请查阅: README.bootparams
copytoram_size=300M:设置300M的tmpfs,存放296MB的airootfs.sfs
cow_spacesize=100M:Cow 是 Copy on Write。它使用内存来获得额外的空间,可以设置小一点,我这里是100MB
更新GRUB配置
如果是Debian或者Ubuntu系统,执行 update-grub
其他系统: grub-mkconfig -o /boot/grub/grub.cfg
VNC控制台操作
在你的VPS商家官网的控制面板找到VNC控制台并打开,先等VNC窗口加载出来
VNC窗口加载出来后,然后 reboot
重启机器,接着立即在VNC窗口里按键盘上下箭头,会看到GRUB的菜单
按键盘向下箭头选择我们自定义配置的”Arch Linux Sitao ISO”,回车启动
稍等一会后会看到:
接下来我们可以开始安装arch linux了
我自制的镜像默认root密码为taoge233
可以 passwd
修改密码,输入一个能记住的密码就好
商家提供的VNC窗口敲命令不太舒服,接下来用ssh工具以root用户和刚才修改的密码登陆机器
注意,如果你发现这时候ping不通机器,多半是因为你的机器用静态ip,需要在VNC里手动配置一下网卡
1 | vim /etc/systemd/network/20-ethernet.network |
输入以下内容
1 | [Match] |
:wq 保存退出
1 | systemctl restart systemd-networkd #重新加载网络 |
安装过程
硬盘分区并格式化
使用 fdisk
工具进行分区,这里将分三个区
1 | fdisk /dev/sda |
如果是UEFI模式,按g创建gpt分区标签; 如果是传统BIOS模式,按o创建dos分区标签;剩下的步骤都一样
如果你机器内存也是512MB,那么此刻的内存资源是非常紧张的,必须启动swap
1 | Command (m for help): o |
按p输出分区结果,按w保存分区信息
/dev/sda1是引导分区, /dev/sda2是swap, /dev/sda3是根分区
[其实在传统BIOS启动模式下 划分根分区就够了。这里我还是按UEFI启动来划分了,仅供参考]
按q退出fdisk
格式化分区
1 | mkfs.fat -F32 /dev/sda1 |
/dev/sda1是引导分区,必须是fat格式
/dev/sda3是将来系统的根分区
/dev/sda2则是swap分区,缓解内存压力
挂载根分区,准备开始正式安装
1 | mount /dev/sda3 /mnt |
配置镜像源
1 | vim /etc/pacman.d/mirrorlist |
选择一个合适的镜像源即可
初始化 Pacman 密钥:
1 | pacman-key --init |
同步软件包数据库并安装基础系统
1 | pacman -Sy |
生成文件系统表
1 | genfstab -U /mnt > /mnt/etc/fstab |
切换到新系统的根目录
1 | arch-chroot /mnt |
配置 DNS
1 | echo 'nameserver 8.8.8.8' > /etc/resolv.conf |
安装常用软件包
1 | pacman -S vim openssh grub bash-completion htop curl wget |
SSH服务开机自启
1 | systemctl enable sshd |
设置时区和硬件时钟
1 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
配置主机名和 hosts 文件
1 | echo "archlinux" > /etc/hostname |
1 | cat << EOF > /etc/hosts |
配置 GRUB 引导加载程序(最重要)
根据 BIOS 或 UEFI 配置 GRUB
传统BIOS
1 | grub-install /dev/sda |
UEFI
1 | pacman -S efibootmgr |
网络配置
根据实际情况配置:
DHCP 配置
1 | cat << EOF > /etc/systemd/network/20-ethernet.network |
静态 IP 配置
1 | cat << EOF > /etc/systemd/network/20-ethernet.network |
网络服务开机自启
1 | systemctl enable systemd-networkd |
passwd设置root用户密码
确保每次启动时 DNS 配置正确(个人喜好)
1 | echo "echo 'nameserver 8.8.8.8' > /etc/resolv.conf" >> /etc/profile |
至此,Arch Linux 安装和基本配置已完成
exit
退出arch-chroot环境
reboot -f
重启系统后就能够正常启动!
期间阅读的文档:
https://wiki.archlinuxcn.org/wiki/Archiso
https://github.com/archlinux/archiso/blob/master/docs/README.profile.rst