这篇blog写于2016年。之前的 blog 丢失后,拯救出来的数据中,只有这一篇是我觉得值得放出来的。那个青涩的时候写出来的 blog 质量实在时有点低……但是看着那些之前的积累还是有些感慨。

最近在折腾linux。原先的ubuntu多少有些玩腻了。其实这样说多少有点问题。因为我甚至不能算真正有“玩”过ubuntu。我很快就把系统搞得几乎崩溃,之后干脆利落地格掉了它,最终导致window无法引导。于是我干脆格掉了整个磁盘,一切从新开始。

然后就转向了arch。说起来我已经忘记了为什么会有这样一个版本——在我甚至不知道Debian的时候,就已经知道arch了。现在想来,必然有一些人在linux相关的帖子里无形安利了一波。多亏了诸位,我实在是好好折腾了一番。

通常认为新手不适合一开始就上arch。但在我看来,arch才是真正适合新手的发行版。它会强迫新人不停地折腾,从而明白linux到底是什么样的一个东西。最重要的是要有足够的耐心来一点一点搭建自己的系统,并从中获得乐趣。至于那些被命令行吓跑的人,就让他们跑了呗...给他们用ubuntu也只是增加谈资而已。“linux啊,我用过,也就是那样嘛。”

因为它一开始什么都没有。所有的痛苦和乐趣都从这里开始。

我是纯小白。如果希望找到一篇详细的教程,请见wiki:

Installation guide (简体中文)

还有这些文章:

Arch Linux 怎么安装?

给 GNU/Linux 萌新的 Arch Linux 安装指南

ArchLinux安装配置

Achlinux安装教程及美化教程

Archlinux和Win 10 在 UEFI下 双启动

博主的场景

先装了win10。

安装前为arch预留了一个分区。

用u盘安装,grub引导双系统。

制作U盘启动盘

我没有多折腾,直接用的工具。

ultraiso很可能不会有效。至少就我的情况是没用的。最后用的是这个工具:usbwriter

当然,是win上的。

制作好后进入系统

检查网络

在虚拟机上一般都是好的。但是在pc上安装就要自己连接。

有线

很简单。DHCP一般是默认开启的。如果没有的话:

$ systemctl start dhcpcd

无线

查看无线网卡是否被正常驱动。最终要的:记住网卡名称。以下假设wlp4s0为网卡名。注意:这些命令大多需要root权限,分配用户名后请用sudo启动

$ iwconfig

创建wpa配置文件

$ vim /etc/wpa_supplicant/wifi.conf

写入配置信息

# wifi.conf ctrl_interface=/run/wpa_supplicant update_config=1 network={ ssid="wifiname" psk="passwrod" }

启用配置文件

$ wpa_supplicant -B -i wlp0 -c /etc/wpa_supplicant/wifi.conf

获取ip

$ dhcpcd wlp0

通常这样就行了。如果你还是没有解决,可以尝试:

查看网卡是否被rf锁定

$ rfkill list

如果有rf锁

$ rfkill unblock all

启动无线网卡

$ ip link set wlp0 up

如果还是不行,可以尝试:

用wpa_cli连接

$ wpa_cli > scan OK <3>CTRL-EVENT-SCAN-RESULTS > scan_results bssid / frequency / signal level / flags / ssid 00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MYSSID 11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] ANOTHERSSID > add_network 0 > set_network 0 ssid "wifiname" ok > set_network 0 psk "password" ok > enable_network 0 <2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=] > save_config

参见:

wiki:PA supplicant (简体中文)

ArchLinux 安装简明教程(一)

分区

单纯记录命令。按自己的需要分区即可。

创建

$ lsblk # 查看磁盘分区

可以用两种方法分区:fdiskparted

  • fidisk:

    fdisk -l # 查看本地硬盘和分区情况 fdisk /dev/sda # 对sda进行分区。进去后p列出分区,n创建新分区
  • parted:

    $ parted /dev/sda #进入parted交互界面 # mklabel <name> 创建mbr/msdos分区表。 (parted) mklabel msdos # mkpart <disk-type> <fs-type> <start> <end> (parted) mkpart primary ext4 1m 1g (parted) set 1 boot on # 设置 boot 为启动目录 (parted) mkpart primary ext4 1g 11g (parted) mkpart primary linux-swap 11g 13g (parted) mkpart primary ext4 13g 100% (parted) print #查看分区是否正确 (parted) quit #退出parted交互界面

格式化

$ mkfs.ext4 /dev/sda1 $ mkswap /dev/sda3 $ swapon /dev/sda3

挂载分区

$ mount /dev/sda1 /mnt $ mkdir /mnt/{boot, home} $ mount /dev/sda1 /mnt/boot $ mount /dev/sda4 /mnt/home

安装系统

$ sed -i '/Score/{/China/!{n;s/^/#/}}' /etc/pacman.d/mirrorlist # 注释所有非中国的软件源 $ pacman -Syy # 更新本地数据库 $ pacstrap /mnt base base-devel # 安装基本系统 $ pacstrap -i /mnt wireless_tools wpa_supplicant dhclient //在没有有线条件下,这很重要。 $ genfstab -U -p /mnt > /mnt/etc/fstab //生成fstab文件 $ arch-chroot /mnt // 切换根目录 $ pacman -S net-tools //安装网络工具,这样就可以使用dhcpd来自动获取ip了

引导

$ pacman -S dosfstools grub efibootmgr $ mkdir /boot/efi $ mount /dev/sda1 /boot/efi // sda1为efi分区


把EFI分区挂载到系统上,然后安装GRUB. ​

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck # grub-mkconfig -o /boot/grub/grub.cfg

生成的grub.cfg里面并没有Windows的启动菜单,我们需要手动写.

menuentry "Microsoft Windows 10" { insmod part_gpt insmod fat insmod search_fs_uuid insmod chain search --fs-uuid --set=root $hints_string $fs_uuid chainloader /EFI/Microsoft/Boot/bootmgfw.efi }

用两个命令的输出替换$hints_string$fs_uuid

# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi > --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 # grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi > 1ce5-7f28

可以使用sed

sed -i "s/\$hints_string\`grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi`\" /boot/grub/grub.cfg

参见开头那篇文章Archlinux和Win 10 在 UEFI下 双启动的引导部分,以及万能的wiki

GRUB

至此,系统安装就算完成了。重启拔掉u盘,应该可以见到grub的界面了。以root权限登录,只要能脸上无线,系统就安装成功了。

基本配置

配置语言环境(编码)

编辑 /etc/locale.gen,解注en_US.UTF-8zh_CN.UTF-8,然后用locale-gen生成编码,接着用

echo LANG=en_US.UTF-8 > /etc/locale.conf

配置系统优先语言环境为英文。

配置时间

date命令查看时间。如果有误的话

rm /etc/localtime ls -s /usr/share.zoneinfo/Asia/Shanggai /etc/localtime

配置主机名

echo hostname > /etc/hostname

用户管理

$ useradd -m -G wheel -s /bin/bash <用户名> $ passwd <用户名>

-m是创建的用户默认生成/home/xxx 的用户目录

-G是追加到一个组里面去在此是wheel组,这个组是接下来我们要配置的拥有sudo权限的组

-s是使用哪种shell,在此呢,我们先使用bash,接下来我们也会改掉它

$ pacman -S sudo visudo

解注 %wheel ALL = (ALL)ALL

桌面环境

这里使用xinit,没有安装sddm

sudo pacman -Syu xorg xorg-xinit xorg-utils dbus

或者

sudo pacman -Syu xorg-server xorg-server-utils xorg-xinit

驱动

详情请见wiki...这里装的是开源驱动

编辑 /etc/pacman.conf 解注multilib的源

sudo pacman -S nvidia-304xx lib32-nvidia-304xx-libgl

这里只介绍gnome和kde,两种de安装自己喜欢的一种就可以

gnome

sudo pacman -Syu gnome gnome-extra

kde5

pacman -S plasma

startx启动图形界面

安装完毕之后,拷贝一份xinit的初始化配置文件到用户目录下

cp /etc/X11/xinit/xinitrc ~/.xinitrc

删掉最后这段内容

twm & xclock -geometry 50x50-1+1 & xterm -geometry 80x50+494+51 & xterm -geometry 80x20+494-0 & exec xterm -geometry 80x66+0+0 -name login

xinitrc只能有一个exec,而它也会完成你希望他做的事情。在最后加上:

exec gnome-session

如果里安装了kde就这样配置

exec startkde

启动

startx

后续优化

中文字体

pacman -S wqy-microhei

yaourt(重要)

/etc/pacman.conf后加入

[archlinuxcn] #The Chinese Arch Linux communities packages. SigLevel = Optional TrustAll Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

然后

pacman -Syu yaourt

中文输入法

安装fcitx:

sudo pacman -S fcitx-im fcitx-configtool

同样的,在~/.bashrc写入

export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=“@im=fcitx”

然后执行

gsettings set \ org.gnome.settings-daemon.plugins.xsettings overrides \ "{'Gtk/IMModule':<'fcitx'>}"

安装google输入法

yaourt -S fcitx-googlepinyin

chrome

yaourt -S chrome

gnome美化

图标

yaourt -S numix-circle-icon-theme-git

主题

yaourt -S gtk-theme-arc-git

配置

gnome-tweak-tool