CelestialCosmic / themeblog

blog articles by Celestial_Cosmic,source code by chanshiyucx
0 stars 0 forks source link

转换 ubuntu 到 archlinux #32

Open CelestialCosmic opened 2 years ago

CelestialCosmic commented 2 years ago

第二台云服务器,不过用途会多很多

一点废话

买的腾讯云,虽然 Y7n05h 一直推荐阿里云,但是和 120r/年的腾讯云比起来还是肉疼。

这个服务器是用来做穿透的,然后还可以承载一些别的东西,比如中转和开服

但是买了才注意到,只有寥寥几个发行版,如 ubuntu 和 centOS ,还有闻所未闻的 tencentOS ,我因为对 arch 重度依赖而企图更换 ubuntu 为 arch

我才不想折腾这么多,但是它不给上传自定义镜像啊

初次尝试的时候,vps2arch 的脚本和无 VNC 的方式相继失败了

所以我又换了有 VNC 的方法,也算是弄成了

获取镜像并修改 grub

在 / 下操作

因为旧系统会直接消失,所以直接用 root 也不是不行,反正迟早要用的。

su
wget https://mirrors.cloud.tencent.com/archlinux/iso/latest/archlinux-2022.04.05-x86_64.iso

放到 / 下面并重命名为 arch.iso

mv archlinux-2022.04.05-x86_64.iso /arch.iso

编辑 grub 的设置,为 grub 添加一个 arch 安装介质的引导入口

nano /boot/grub/grub.cfg

添加如下内容

menuentry "Archlinux Live (x86_64)" {
    insmod iso9660
    set isofile=/arch.iso
    loopback lo0 ${isofile}
    linux (lo0)/arch/boot/x86_64/vmlinuz-linux archisolabel=ARCH_202204 img_dev=/dev/vda1 img_loop=${isofile} earlymodules=loop
    initrd (lo0)/arch/boot/x86_64/initramfs-linux.img
}

这一段要改的点:

其他要修改的地方

将超时时间尽量延长,延长到有充足的时间来人工干预的地步,最简单和暴力的方式是把所有的 timeout 后的数字修改为 300

到此,完成了基本的引导操作,重启设备并在 VNC 中选择安装介质

重启后,使用 ssh 前的操作(非必要)

如果要一路用 VNC 的话,这一节不是必要的

在 grub 中选择安装介质,进入熟悉的安装介质界面

To install Arch Linux follow the installation guide:
https://wiki.archlinux.org/title/Installation_guide

For Wi-Fi, authenticate to the wireless network using the iwctl utility.
For mobile broadband (WWAN) modems, connect with the mmcli utility.
Ethernet, WLAN and WWAN interfaces using DHCP should work automatically.

After connecting to the internet, the installation guide can be accessed
via the convenience script Installation_guide.

在 VNC 中开启 sshd ,然后就可以抛掉 VNC ,换成 ssh 了

systemctl start sshd

安装 arch

获取硬盘的信息

lsblk -f

输出如下

NAME   FSTYPE   FSVER            LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
loop0  iso9660  Joliet Extension ARCH_202204 2022-04-05-16-02-52-00                     0   100% /run/archiso/bootmnt
loop1  squashfs 4.0                                                                     0   100% /run/archiso/airootfs
sr0    iso9660  Joliet Extension config-2    2022-04-20-21-24-41-00
vda
├─vda1
└─vda2 ext4     1.0                          b986dc3b-6b82-44d5-acb8-6cbad5e357d5   51.9G     8% /run/archiso/img_dev

接着获取网络并挂载硬盘(最后提一次,灵活挂载硬盘)

dhcpcd
mount -o rw,remount /dev/vda2

转移到新的位置

cd /run/archiso/img_dev

然后删除曾经的系统,再把新的根目录挂载上来

rm -rf [b-z]*
mount /dev/vda2 /mnt

注意完成这一步以后,在完成前不能重启,否则就只能在控制台重装系统并重新来过了

编辑镜像源

nano /etc/pacman.d/mirrorlist

用 pacstrap 安装基本组件

pacstrap /mnt base linux-lts linux-firmware

和基础软件

pacstrap /mnt base-devel grub openssh nano man dhcpcd

到此,最基础的环境就已经完成了,之后就和正常的安装 archlinux 的操作相同了。(但还是不能重启!)

因此只讲步骤,其余的不再赘述

  • 生成 fstab

  • 生成 locale

  • 确定时区

  • 编辑 sudoers

  • 添加用户并修改密码

  • 执行 grub-install 并生成 grub.cfg

  • 提前开启 ssh 和 dhcp 客户端

  • 重启

在重启前强烈建议检查一次 fstab 的生成是否正确,不建议使用附加模式生成 fstab

重启后在本机上要做的事

编辑 ~/.ssh 下的 known_hosts,删除原来保存的密钥,否则会被当作受到中间人攻击而拒绝连接。

一些意外发现

我一直以为 nano 没有语法高亮,或者没有在意过 nano 的语法高亮,然而我在使用 ubuntu 的 nano 时,发现它其实是有的。

启用方式也很简单:

nano ~/.nanorc

输入形如如下所写的内容

include /usr/share/nano/lang.nanorc

一行一个,按需写就行

具体支持什么可以在 /usr/share/nano 下看到

参考依据

V2EX

知乎 一豆羹

archwiki