在移动硬盘上安装 ArchLinux
参考:
目标
制作一个
- 安装了可持续使用的,
- 能与任何计算机最大程度兼容的,
移动硬盘
准备
- 16G以上的移动硬盘用于安装ArchLinux
- 8G的闪存用于制作启动闪存
- 一台主机(台式或是笔记本)
开工
下载ArchLinux安装光盘镜像文件
制作【启动闪存】
Linux环境下
#dd bs=4M if=/[路径]/archlinux.iso of=/dev/[目标闪存] status=progress && sync
Windows环境下
下载 Rufus 并安装,使用Rufus制作
BIOS vs UEFI
简单地说,BIOS和UEFI就是主板用来沟通操作系统和主板固件的2个不同的系统。
- 旧的 # BIOS (basic input/output system)
- 新的 # UEFI (unified extensible firmware interface)
只有且仅有当主板的启动模式(BIOS或UEFI)和闪存的分区模式(BIOS或UEFI)是一致的时候,闪存才能被正确地启动。
而闪存可以同时设置 BIOS 和 UEFI 两个不同分区用来启动闪存上的同一个操作系统。
secure boot
请进入主板菜单简单粗暴地关掉它。
如果要使用secure boot,待续。。。
启动【启动闪存】
把【启动闪存】插到电脑USB口上并开机选择
Boot Arch Linux (x64_86) or (i686)
键盘布局和语言
万恶的美帝,别无选择,US 和 en_US.UTF-8 UTF-8,默认值,不需要更改。
链接网络
测试
# ping -c1 google.com
有线网络
查看
# ip link
启用ether接口
# ip link set [ether接口的识别码 例如:eno1, eno0] up
获取IP地址
# dhcpcd [ether接口的识别码 例如:eno1, eno0]
故障探测
1.查看所有dhcpcd实例
# systemctl list-units | grep dhcpcd
2.查看dhcpcd实例服务的状态
# systemctl status dhcpcd@[ether接口的识别码 例如:eno1, eno0].service
无线网络
选择一# 一步到位
# wifi-menu
选择二# 单步执行
- 查看无线接口的内核驱动是否已经加载
# lspci -k | grep -A3 'Network controller'
- 如果内核驱动已经加载,查看无线接口的名称
# iw dev
- 启动无线接口
# ip link set [wifiname] up
- 扫描有效网络
# iw dev [wifiname] scan | grep 'SSID:'
- 连接不加密无线网络
# iw dev [wifiname] connect ['networkname']
- 连接WPA/WPA2加密无线网络
# wpa_supplicant -i [wifiname] -c <(wpa_passphrase ['networkname'] ['password'])
- 连接WEP加密无线网络
# iw dev [wifiname] connect ['networkname'] key 0:['password']
-
建立连接后,按 [ctrl] + z 并运行 bg 将进程分叉到后台。
-
最后,尝试租用IP地址
# dhcpcd [wifiname]
- 确认网络连接成功
# ping -c1 archlinux.org
更新系统时间
# timedatectl set-ntp true
准备安装ArchLinux的闪存
如前文提到,这个在闪存上安装的ArchLinux是要同时兼容 BIOS 和 UEFI 两种启动模式。
- BIOS模式要求存储器的前512个字节必须包含MBR。
- UEFI模式要求有单独一个 ESP 分区。
查看设备模块
# lsblk
擦除移动硬盘上的数据(可选)
# dd if=/dev/zero of=/dev/sdX bs=logical-sector-size seek=0 count=sectors status=progress
分区
# gdisk /dev/sdX
输入 d 直到显示 No partitions,删除所有分区
Command (? for help): d
No partitions
创建GUID分区表
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y
创建MBR分区
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-XXXXXX), default = 64) or {+-}size{KMGTP}:
Last sector (64-XXXXXX), default = XXXXXX) or {+-}size{KMGTP}: +10MB
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF02
创建ESP分区
Command (? for help): n
Partition number (2-128, default 2):
First sector (34-XXXXXX), default = YYYY) or {+-}size{KMGTP}:
Last sector (64-XXXXXX), default = XXXXXX) or {+-}size{KMGTP}: +500MB
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF00
创建Linux root分区
Command (? for help): n
Partition number (3-128, default 3):
First sector (34-XXXXXX), default = YYYY) or {+-}size{KMGTP}:
Last sector (64-XXXXXX), default = XXXXXX) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
查看所有分区并确认
# Command (? for help): p
把分区表写入移动硬盘
Command (? for help): w
格式化
查看移动硬盘
# lsblk /dev/sdX
格式化ESP分区
# mkfs.fat -F32 /dev/sdX2
格式化Linux root分区
# mkfs.ext4 /dev/sdX3
安装基础包集
挂载
挂载Linux root分区
# mkdir -p /mnt/usb
# mount /dev/sdX3 /mnt/usb
挂载ESP分区
# mkdir /mnt/usb/boot
# mount /dev/sdX2 /mnt/usb/boot
pacstrap
安装基础包
# pacstrap /mnt/usb base base-devel
fstab
# genfstab -U /mnt/usb >> /mnt/usb/etc/fstab
配置新系统
chroot
进入新系统
# arch-chroot /mnt/usb
locale 本地化设置
使用Tab键选择[region]和[city]
# ln -sf /usr/share/zoneinfo/[region]/[city] /etc/localtime
设置 /etc/adjtime
# hwclock --systohc
编辑 /etc/locale.gen ,取消需要语言的注释符
# nano /etc/locale.gen
生产本地化信息
# locale-gen
设置 LANG
# echo LANG=[localeline] > /etc/locale.conf
hostname
# echo hostname > /etc/hostname
# nano /etc/hosts
127.0.1.1 hostname.localdomain hostname
RAM disk image
为了永久地从USB设备启动Linux内核,可能需要对初始RAM磁盘映像进行一些调整。 在尝试加载文件系统之前,我们需要确保正确加载块设备支持。 这并不总是在通用Linux安装中配置RAM磁盘映像的方式,这可能是其他Linux USB安装中的一个故障点。 要配置自定义RAM磁盘映像,请在编辑器中打开 /etc/mkinitcpio.conf:
# nano /etc/mkinitcpio.conf
确认 block 在 filesystems 之前 并且在 udev 之后
HOOKS=(base udev block filesystems keyboard fsck)
如有更改需重新生产RAM磁盘映像
# mkinitcpio -p linux
network interface names
Arch Linux的基本服务管理器systemd根据实际的设备硬件为网络接口分配可预测的名称。 这对于任何其他类型的安装来说都很棒,但是对于我们想要的便携式USB安装可能会带来一些问题。 要确保以太网和wifi接口始终分别命名为eth0和wlan0,请将Arch Linux USB恢复为传统设备命名:
# ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
日志设置
如果移动硬盘够大,不需要修改
# nano /etc/systemd/journald.conf
Storage=volatile
SystemMaxUse=16M
引导程序
安装程序包
# pacman -S grub efibootmgr
设置 GRUB 的 MBR/BIOS 启动模式
# grub-install --target=i386-pc --boot-directory /boot /dev/sdX
设置 GRUB 的 UEFI 启动模式
# grub-install --target=x86_64-efi --efi-directory /boot --boot-directory /boot --removable
生成GRUB设置信息
# grub-mkconfig -o /boot/grub/grub.cfg
网络支持
安装程序包 ifplugd IP地址自动续租
# pacman -S ifplugd
安装程序包用来提供wifi支持的命令行接口
# pacman -S iw wpa_supplicant dialog
视频驱动程序
# pacman -S xf86-video-ati xf86-video-intel xf86-video-nouveau xf86-video-vesa
触摸板支持
# pacman -S xf86-input-synaptics
电池支持
# pacman -S acpi
设置root密码
# passwd
添加用户
# useradd -m [user]
# passwd [user]
# echo '[user] ALL=(ALL) ALL' > /etc/sudoers.d/10-[user]
重启新系统
退出新系统
# exit
取消挂载
# umount /mnt/usb/boot /mnt/usb
关机
# poweroff
移除【启动闪存】并重新开机,以root登录
ifplugd有线网络设置
# cp /etc/netctl/examples/ethernet-dhcp /etc/netctl/eth0-arch_usb
# systemctl start netctl-ifplugd@eth0.service
# systemctl enable netctl-ifplugd@eth0.service
wifi-menu无线网络设置
# wifi-menu -o
同步网络时间
# timedatectl set-ntp true
退出
# logout
网友评论