Appearance
云服务器安装 Arch Linux
服务器需要支持 VNC 连接,且服务器正在使用任意 Linux 操作系统,本文以 Ubuntu 18 为例
- 腾讯云:远程连接 - VNC 连接
- 阿里云:远程连接 - 救援模式,如果按键盘没反应,点击一次上方的“复制命令”
1. 准备工作
下载系统镜像,改名为 archlinux.iso 并放在根目录,有条件从内网下载
- 腾讯云内网
sh
wget mirrors.tencentyun.com/archlinux/iso/latest/archlinux-x86_64.iso -O /archlinux.iso- 阿里云内网
sh
wget mirrors.cloud.aliyuncs.com/archlinux/iso/latest/archlinux-x86_64.iso -O /archlinux.iso编辑 /boot/grub/grub.cfg,关闭自动选择启动项,并设置 30s 的等待时间
sh
cat << 'EOL' >> /etc/default/grub
GRUB_TIMEOUT=30
GRUB_TIMEOUT_STYLE=mune
EOL
update-grub添加引导,其中的 /dev/vda1 为 archlinux.iso 文件所在的硬盘分区
sh
cat << 'EOL' >> /boot/grub/grub.cfg
menuentry 'Arch Linux LiveCD' {
set isofile=/archlinux.iso
set imgdevpath=/dev/vda1
loopback lo0 $isofile
linux (lo0)/arch/boot/x86_64/vmlinuz-linux img_dev=$imgdevpath img_loop=$isofile
initrd (lo0)/arch/boot/x86_64/initramfs-linux.img
}
EOL2. 启动镜像环境
打开 VNC 界面,输入 reboot 重启系统,在开机的引导界面选择最后一项 ”Arch Linux LiveCD“
等待 LiveCD 系统启动结束
3. 连接镜像环境
VNC 界面毕竟不够友好,建议直接用本地终端 ssh 连接服务器,先在 VNC 界面临时设置 root 密码为 passwd
sh
echo "root:passwd" | chpasswd本地终端 ssh 连接,其中的 ip 就是服务器的 IP 地址
sh
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt root@ip输入刚刚设置的密码 passwd
3.5. Warning
现在反悔还来得及,直接重启就行。以下操作极为危险,请先理解自己到底在干什么!
4. 清空数据
格式化硬盘,再挂载到 /mnt
sh
mkfs.ext4 /dev/vda1
mount /dev/vda1 /mnt如果格式化硬盘失败了,尝试重设硬盘挂载权限,再挂载到 /mnt,手动删除数据
sh
mount -o rw,remount /dev/vda1
mount /dev/vda1 /mnt
rm -rf /mnt/*输入
fdisk -l命令查看硬盘分区表格式,本文需要确保使用 dos/mbr,而不是 gpt输入
dd if=/dev/zero of=/dev/vda bs=512K count=1命令可擦除硬盘分区表信息
5. 正式安装
关闭自动换源服务
sh
systemctl stop reflector手动换源,有条件使用内网源
- 腾讯云内网
sh
echo 'Server = http://mirrors.tencentyun.com/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist- 阿里云内网
sh
echo 'Server = http://mirrors.cloud.aliyuncs.com/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist安装基本软件包、内核、开机引导、远程连接,生成磁盘信息标识
sh
pacstrap /mnt base linux-lts grub openssh
genfstab -U /mnt >> /mnt/etc/fstab指定 nameserver 信息,有条件使用内网地址
- 腾讯云内网
sh
echo nameserver 183.60.82.98 > /mnt/etc/resolv.conf- 阿里云内网
sh
echo nameserver 100.100.2.136 > /mnt/etc/resolv.conf进入 chroot 环境
sh
arch-chroot /mnt使用 ip addr 命令查看网卡名称,此处示例为 ens5
配置时区,语言环境,网络连接信息,Name 值为刚刚查看的网卡 ens5
sh
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo zh_CN.UTF-8 UTF-8 > /etc/locale.gen
locale-gen
echo pcs > /etc/hostname
cat << EOL > /etc/systemd/network/20-wired.network
[Match]
Name=ens5
[Network]
DHCP=ipv4
EOL配置远程连接,此处设为必须使用密钥登陆,如果需要允许密码登录将 PasswordAuthentication 改为 yes
sh
cat << EOL > /etc/ssh/sshd_config.d/10-vps.conf
PermitRootLogin yes
PasswordAuthentication no
ClientAliveInterval 3600
PrintLastLog no
AddressFamily inet
UsePAM no
EOL
cat << EOL > /root/.ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPNwSU4IuTcE1fEkfooybSCM6gpChn7okmtBgblK1Bkx
EOL设置 root 密码,自行修改,此处假设为 passwd
sh
echo "root:passwd" | chpasswd配置自启动的基础系统服务和开机引导
sh
systemctl enable sshd systemd-networkd
grub-install --target=i386-pc /dev/vda
grub-mkconfig -o /boot/grub/grub.cfg退出 chroot,重启
sh
exit
reboot6. 其他
sh
fallocate -l 1G /boot/swapfile
chmod 600 /boot/swapfile
mkswap /boot/swapfile
swapon /boot/swapfile
echo '/boot/swapfile none swap defaults 0 0' >> /etc/fstab
pacman -S --noconfirm fish less
chsh -s /usr/bin/fish
mkdir -p /root/.config/fish/conf.d
cat << EOL > /root/.config/fish/conf.d/custom.fish
set fish_greeting
set LANG zh_CN.UTF-8
EOL
pacman -S --noconfirm nano
ln -sf /bin/nano /usr/local/bin/vim
cat << 'EOL' > /root/.nanorc
include "/usr/share/nano/*.nanorc"
set linenumbers
set tabstospaces
set constantshow
set tabsize 4
EOL
pacman -S --noconfirm fastfetch tree wget unzip lsof
mkdir -p /root/d