如何把Arch Linux装入一块移动硬盘

Arch Linux 安装配置流程

1. 说明

此流程用于在一块单独硬盘、USB存储设备中配置一个 Arch Linux系统。

为什么是Arch Linux?
我自己同时在使用的操作系统有很多,家里玩游戏的win10,去学校办公、敲代码的是Macbook Pro,学校电脑是Kubuntu(之前装过Manjaro被显卡驱动劝退了),实验设备都是树莓派(Raspberry Pi OS 和 Ubuntu Server 18.04-ROS Melodic)系统玩的多了就会发现一个问题,发行版操作系统的预装以及linux上python2的遗体问题很让人头疼。当然有办法卸载删除,但是总觉得很臃肿,而且永远的会留下隐患,特别是Python2的问题。我已经无数次被坑在ROS、PX4、Ardupilot 编译报错上了,8成的原因是Python多版本打架。所以就选了Arch,当然也是在尝试和学习,不过从零到1的过程很实用,而且一步一步只添加需要的软件这是最重要的。

为什么要写这个教程?
能找到的文字版教程不能满足我的需求,我需要一个可以随时带走的Arch Linux,既可以保护电脑原有系统不用做任何删除处理,又可以保证一旦安装失败不会造成额外的损失。搜了很多Arch安装在移动设备的教程。但这些教程真的太难用了,不是各种转载导致的教程不详细,就是利用虚拟机设备安装配置(对于一个拒绝虚拟机的人来说简直太痛苦了)。我又不想直接看wiki(wiki内容十分强大,但是你要耐心的把每一步看完并且对linux系统整个架构有一定了解才行)。下面这个教程相对于你一步步看wiki会简单粗暴的多,帮你把好多坑都太好了。

2. 准备工作——Arch Linux Live 制作过程

安装前准备:

  • Arch Linux 镜像文件 (Arch Linux Link)
  • 1 个usb 存储 ——用于制作Arch Linux Live
  • 1 个 硬盘或者USB存储设备(容量至少16GB,紧建议)
  • Arch wiki (学会用wiki好过其他的教程)

使用balenaEtcher或者其他的可以将iso镜像烧录在usb存储的软件

首推balenaEtcher Link 这个是开源免费的。另外提醒一句,一定要更新到最新的stable版,要不然烧录可能失败。

在这里插入图片描述

3步操作:1、选择镜像;2、选择USB存储; 3、烧录

3. Arch Linux 安装配置

将上一步中制作完成的Arch Linux Live USB 和准备装系统的硬盘连接电脑,Boot Menu中选择Arch Linux Live USB,选择第一个进入Arch Linux Live

3.1 第一步:硬盘分区

首先查看硬盘相关信息

 $ fdisk -l
  1. 找到用于安装arch的硬盘名字 一般为 /dev/sdX 注意: sdX可能是任意名字 完全取决于fdsik指令后打印的列表内容,下面均以sdX为例 
    说明:硬盘格式MBR或者GPT 需要进行二选一完全取决于之后以哪种方式进行启动;这里推荐GPT,后面配置允许此硬盘既可以UEFI,又可以Legacy启动。

  2. 硬盘扇区设置

$ dd if=/dev/zero of=/dev/sdX bs=1k count=2048
  1. 设置硬盘为GPT 注意:此处使用sgdisk指令,也可以fdisk分区,需要教程自行度娘
$ sgdisk -z /dev/sdX
$ sgdisk -o /dev/sdX 
  1. 设置分区
$ sgdisk -n 1:0:409600        #创建一个200M分区 挂在/boot 用于启动
$ sgdisk -n 2:409601:17186817 #创建一个SWAP分区 这里大小为8G 根据需要自行修改
$ sgdisk -n 3:17186818:-0     #创建一个文件跟目录分区 挂在/
  1. 对分区进行格式化 注意:sdX1代表刚才的分区方式
$ mkfs.fat -F32 /dev/sdX1 #第一个分区设置为FAT32格式 即UEFI必须的ESP
$ mkfs.swap /dev/sdX2     #第二个分区是SWAP交换空间
$ mkfs.ext4 /dev/sdX3     #第三个分区是Linux的文件分区 ext4

3.2 分区挂在

将对应分区进行挂载

$ mount /dev/sdX3 /mnt      #挂载根目录
$ mkdir /mnt/boot/efi       #创建引导目录
$ mount /dev/sdX1 /mnt/boot #挂载引导分区
$ swapon /dev/sdX2          #挂载swap空间

3.3 安装基本系统

$ pacstrap /mnt base 
# 其他的包——推荐一下 直接添加到 base 后面即可
linux linux-firmware base-devel nano dialog git sudo 
# hostname
inetutils 
# 网络管理
dhcpcd wpa_supplicant

说明:最简化的只需要 base ,后面可以根据自己需要添加修改。比如不用nano,用vi 就可以直接添加vi而不写nano。 下面是官方wiki对base的解释

在这里插入图片描述

3.4 配置系统

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

3.5 使用chroot进行基本配置

chroot是超级用户权限 相当于系统开发商,使用chroot以后算是正式进入硬盘开始配置你的专属arch了。

$ arch-chroot /mnt

# 开始

# 设置 root 的密码
$ passwd
 
#设置时区
$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#本地化
$ cd /etc
$ locale-gen 
$ nano /etc/locale.conf #如果是vi 就运行 vi /etc/locale.conf
## 添加 这里暂时都设置为英文,可以设置中文但是容易导致后续出错,后续可再更改
LANG=en_US.UTF-8
# LC_CTYPE= en_US.UTF-8 # 此处可不添加,如果之后安装了sublime text安装后运行软件会提示你需要设置 LC_CTYPE
## 键盘布局
$ nano /etc/vconsole.conf
KEYMAP=de-latin1

#设置主机名
$ nano /etc/hostname
myhostname(主机名)

$ nano /etc/hosts
127.0.0.1	localhost
::1		localhost
127.0.1.1	myhostname.localdomain	myhostname # 主机名.本地域名 主机名

# Initramfs
$ mkinitcpio -p linux # 如果报错 请检查/xxxx/linuxxx

# 有线网络设置
$ systemctl enable dhcpcd

#普通用户的添加
$ useradd -m -G wheel -s /bin/bash [username]
$ passwd [username]
$ nano /etc/sudoers
# 去掉下面这行#符号
 #%wheel ALL=(ALL) ALL
# 并在 root ALL=(ALL:ALL) ALL这行下面添加
[username] ALL=(ALL:ALL) ALL

3.6 系统引导配置

此处很关键,可选的有很多,需要的看wiki [Arch boot process (简体中文)]

推荐Clover,GRUB,Syslinux。Clover 就不用说了,黑苹果首推clover引导。GRUB最常见的引导方式,兼容性最好的选择。Syslinux 有较好的兼容性。这里我只需要对syslinux和GRUB进行二选一,其他的请自行移步wiki。

3.6.1 Syslinux

#安装syslinux
$ pacman -S syslinux
  1. 启动流程

下图为官方wiki对启动流程的描述,具体过程可理解可不理解,但是通过官方描述检查对应引导文件夹中是否缺失必要的启动的文件

在这里插入图片描述

必要文件列表:

  • mbr.bin / gptmbr.bin
  • ldlinux.sys
  • ldlinux.c32
  • syslinux.cfg / extlinux.conf
  • lib*.c32*.c32
  1. Legacy 启动
#BIOS 配置
$ mkdir /boot/syslinux
$ cp -r /usr/lib/syslinux/bios/* /boot/syslinux/

$ sgdisk /dev/sdX1 --attributes=1:set:2
$ sgdisk /dev/sdX1 --attributes=1:show
------------------------------------
1:2:1 (legacy BIOS bootable)

$ dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/gptmbr.bin of=/dev/sdX

$ extlinux --install /boot/syslinux

$ nano /boot/syslinux/syslinux.conf
  1. UEFI 启动
$ mkdir -p /boot/EFI/syslinux
$ cp -r /usr/lib/syslinux/efi64/* /boot/EFI/syslinux/

$ cd /boot/EFI
$ mv syslinux boot
$ cd boot
$ mv syslinux.efi bootx64.efi

$ nano /boot/syslinux/syslinux.conf
  1. 配置文件设置
* BIOS: /boot/syslinux/syslinux.cfg
* UEFI: esp/EFI/syslinux/syslinux.cfg
--------------------------------------------------------------------------------------
UI menu.c32
# UI vesamenu.c32
PROMPT 50

DEFAULT arch
MENU TITLE Boot Menu
# MENU BACKGROUND splash.png 图片link(https://gitlab.archlinux.org/archlinux/archiso/-/tree/master/configs/releng/syslinux/splash.png)
TIMEOUT 50

MENU RESOLUTION 800 600 # 万用分辨率
MENU WIDTH 78           
MENU VSHIFT 10         
MENU HSHIFT 10          

MENU MARGIN 4
MENU ROWS 5
MENU TIMEOUTROW 13
MENU TABMSGROW 11
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

# Refer to https://wiki.syslinux.org/wiki/index.php/Comboot/menu.c32

MENU COLOR border       30;44   #40ffffff #a0000000 std
MENU COLOR title        1;36;44 #9033ccff #a0000000 std
MENU COLOR sel          7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel        37;44   #50ffffff #a0000000 std
MENU COLOR help         37;40   #c0ffffff #a0000000 std
MENU COLOR timeout_msg  37;40   #80ffffff #00000000 std
MENU COLOR timeout      1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07        37;40   #90ffffff #a0000000 std
MENU COLOR tabmsg       31;40   #30ffffff #00000000 std

#注意:对每一个 LABEL 记录, APPEND 命令只能出现在一行内(就是说,把命令拆分成多行是无效的)。
LABEL arch
	LINUX ../vmlinuz-linux
	APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw #此处强烈建议用UUID 这样不会报错
	INITRD ../initramfs-linux.img

LABEL archfallback
	LINUX ../vmlinuz-linux
	APPEND root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw
	INITRD ../initramfs-linux-fallback.img

...
LABEL windows
	MENU LABEL Windows
	COM32 chain.c32
	APPEND mbr:0xffffffff #0xffffffff 通过指令fdisk -l 中widows 硬盘中Disk identifier 中的信息进行更改
...
#内存测试
...
LABEL memtest
	MENU LABEL Memtest86+
	LINUX ../memtest86+/memtest.bin
...
#硬盘检测工具
LABEL hdt
	MENU LABEL Hardware Info
	COM32 hdt.c32
#保证对应的syslinux文件夹下包含多有的*.c32和lib*.c32文件
#需要显示PCI总线信息,将 /usr/share/hwdata/pci.ids 复制到 */syslinux/pci.ids

LABEL reboot
	MENU LABEL Reboot
	COM32 reboot.c32

LABEL poweroff
	MENU LABEL Power Off
	COM32 poweroff.c32

MENU CLEAR #当退出时清空屏幕

以上的大部分人可能会用到的配置,其他的配置请参考wiki [Syslinux (简体中文)]

3.6.2 GRUB

GRUB全称 是GRand Unified Bootloader。 这里指的 GRUB 其实是 GRUB 2 并不是GRUB Legacy, GRUB Legacy不支持 UEFI启动。

  1. 首先安装grub 和 efibootmgr
$ pacman -S grub efibootmgr
  1. 安装grub
$ grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=Arch

注意 此处esp 应该是 /dev/sdX1 具体根据你自己的盘进行修改
3. 生成配置文件

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

说明 如果需要多系统请参考wiki中的配置说明。GRUB WIKI

因为我的移动硬盘同时装了4个linux(后续会发文章,(链接坑)) 所以我在对每个linux的gurb的默认文件进行了修改 每个linux的grub默认文件都在 /etc/default/grub 中,具体更改了两项:

GRUB_DEFAULT="6>7" #此处数字标示次Linux相关选项在grub列表中的位置

GRUB_CMDLINE_LINUX_DEFAULT="text" #默认一般为quiet splash即不打印启动信息,使用过场动画,此处可以不修改 但是如果第一次启动出现问题或者卡黑屏了你就什么错误信息就都不知道了 

另外 grub.cfg这个文件不建议第一尝试的人手动修改,一旦改错 对应启动选项就不可用了。如果你是高手,修改完保存后别忘了运行 sudo update-grub

3.6.3 小结

目前使用syslinux进行了BIOS 测试完全没有问题,GRUB 之安装了UEFI测试完全没问题。

3.7 退出&重启

完成以上配置以后,你已经拥有了一个带引导的Arch Linux。

$ exit # 退出chroot
$ umount -R /mnt # 卸载之前挂在的目录
$ reboot

最基本的配置已经完成了。之后就可以重启,从boot menu中启动你的Arch Linux了。

4. 小结

下一篇将讲述如何自定义桌面环境以及一些基础软件推荐。

参考链接

  1. https://wiki.archlinux.org/title/Install_Arch_Linux_on_a_removable_medium
  2. https://vhernando.github.io/archlinux-install-usb-from-debian-existing-linux
  3. https://gist.github.com/elerch/678941eb670324ffc3f261eabba81310
<think>好的,我现在需要回答用户关于在Linux系统上安装和配置VNC的问题。用户已经提供了一些引用资料,我需要仔细查看这些引用来提取有用的步骤和方法。首先,我需要明确用户的需求:他们想要一个详细的指南,步骤清晰,适用于不同的Linux发行版。 首先,我应该回顾每个引用中的信息。引用[1]提到在Ubuntu 22.04上安装TightVNC并通过SSH隧道连接,引用了基本的步骤。引用[2]则给出了不同发行版的安装命令,比如Ubuntu/Debian使用apt安装,CentOS使用yum,Fedora使用dnf,Arch使用pacman,这很有帮助。引用[3]是关于Debian 9的安装,提到了需要桌面环境和VNC服务器的安装,比如XFCE或GNOME。引用[4]提到了防火墙配置,需要开放端口5901,这一点也很重要。 接下来,我需要将这些信息整合成一个通用的安装配置步骤,覆盖主要的发行版。用户可能需要分步指南,包括安装桌面环境、VNC服务器、设置密码、配置服务文件、防火墙设置以及通过SSH隧道连接等内容。同时,用户可能关心安全性,所以SSH隧道是必要的。 需要注意的是,不同的发行版可能使用不同的包管理器和服务管理工具,比如systemd。例如,在Ubuntu上安装tigervnc-standalone-server,而在CentOS上安装tigervnc-server。配置服务文件的位置也可能不同,比如CentOS需要复制lib/systemd/system下的文件,而Ubuntu可能需要创建新的服务文件。 另外,用户可能对如何启动和启用VNC服务感兴趣,包括设置开机自启。防火墙配置部分,可能需要使用ufw或firewalld,具体取决于发行版。例如,在Ubuntu上使用ufw allow,而CentOS使用firewall-cmd。 最后,生成相关问题需要考虑用户可能遇到的后续问题,比如连接失败、性能优化、安全性增强、不同桌面环境的选择以及自启动配置等。需要确保问题覆盖常见的后续疑问,帮助用户进一步解决问题。 现在,我需要组织这些信息,确保步骤清晰,语法正确,使用适当的中文表达,并正确应用LaTeX格式。同时,检查是否有遗漏的步骤,比如设置VNC密码、编辑xstartup文件配置桌面环境,以及测试连接等。还要注意引用标注的正确性,确保每个引用来源在回答中有对应的标记。</think>### 分步指南:在 Linux 系统上安装和配置 VNC #### 一、安装桌面环境(可选) 若系统未预装图形界面,需先安装轻量级桌面环境(如 XFCE 或 GNOME)。 **Ubuntu/Debian**: ```bash sudo apt update && sudo apt install xfce4 xfce4-goodies -y # XFCE 桌面 # 或 sudo apt install gnome-session gdm3 -y # GNOME 桌面 ``` **CentOS/RHEL**: ```bash sudo yum groupinstall "Server with GUI" -y # 安装基础图形环境 ``` #### 二、安装 VNC 服务器 根据发行版选择对应命令: **Ubuntu/Debian**: ```bash sudo apt install tigervnc-standalone-server tigervnc-common -y ``` **CentOS/RHEL/Fedora**: ```bash sudo yum install tigervnc-server -y # CentOS/RHEL sudo dnf install tigervnc-server -y # Fedora ``` **Arch Linux**: ```bash sudo pacman -S tigervnc ``` #### 三、配置 VNC 密码 1. 运行以下命令设置访问密码(密码长度需 6-8 位): ```bash vncpasswd ``` 2. 输入密码后生成配置文件,默认保存在 `~/.vnc` 目录[^2][^3]。 #### 四、配置 VNC 服务文件 1. **创建启动脚本**: 编辑 `~/.vnc/xstartup` 文件,指定桌面环境(以 XFCE 为例): ```bash #!/bin/bash unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4 ``` 赋予执行权限: ```bash chmod +x ~/.vnc/xstartup ``` 2. **配置 Systemd 服务**(以 Ubuntu 为例): ```bash sudo nano /etc/systemd/system/vncserver@.service ``` 添加以下内容(替换 `<USER>` 为实际用户名): ```ini [Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=simple User=<USER> ExecStart=/usr/bin/vncserver :%i -geometry 1280x800 -depth 24 ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target ``` 重载服务并启用开机启动: ```bash sudo systemctl daemon-reload sudo systemctl enable vncserver@1.service # 1 为显示编号,默认端口 5901 sudo systemctl start vncserver@1 ``` #### 五、配置防火墙 开放 VNC 默认端口(5901)或指定端口: **UFW(Ubuntu/Debian)**: ```bash sudo ufw allow 5901/tcp ``` **Firewalld(CentOS/RHEL)**: ```bash sudo firewall-cmd --permanent --add-port=5901/tcp sudo firewall-cmd --reload ``` #### 六、通过 SSH 隧道安全连接 1. 本地终端执行(将 `<SERVER_IP>` 替换为服务器 IP): ```bash ssh -L 5901:localhost:5901 user@<SERVER_IP> ``` 2. 使用 VNC 客户端(如 TightVNC、RealVNC)连接 `localhost:5901`,输入步骤三设置的密码[^1][^3]。 --- ### 常见问题解决 - **黑屏或无响应**:检查 `xstartup` 文件权限和桌面环境配置[^3]。 - **端口冲突**:修改服务文件中的显示编号(如 `:2` 对应端口 5902)。 - **性能优化**:降低颜色深度(如 `-depth 16`)或分辨率[^1]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值