这篇blog写于2016年。之前的 blog 丢失后,拯救出来的数据中,只有这一篇是我觉得值得放出来的。那个青涩的时候写出来的 blog 质量实在时有点低……但是看着那些之前的积累还是有些感慨。
最近在折腾linux。原先的ubuntu多少有些玩腻了。其实这样说多少有点问题。因为我甚至不能算真正有“玩”过ubuntu。我很快就把系统搞得几乎崩溃,之后干脆利落地格掉了它,最终导致window无法引导。于是我干脆格掉了整个磁盘,一切从新开始。
然后就转向了arch。说起来我已经忘记了为什么会有这样一个版本——在我甚至不知道Debian的时候,就已经知道arch了。现在想来,必然有一些人在linux相关的帖子里无形安利了一波。多亏了诸位,我实在是好好折腾了一番。
通常认为新手不适合一开始就上arch。但在我看来,arch才是真正适合新手的发行版。它会强迫新人不停地折腾,从而明白linux到底是什么样的一个东西。最重要的是要有足够的耐心来一点一点搭建自己的系统,并从中获得乐趣。至于那些被命令行吓跑的人,就让他们跑了呗...给他们用ubuntu也只是增加谈资而已。“linux啊,我用过,也就是那样嘛。”
因为它一开始什么都没有。所有的痛苦和乐趣都从这里开始。
我是纯小白。如果希望找到一篇详细的教程,请见wiki:
还有这些文章:
给 GNU/Linux 萌新的 Arch Linux 安装指南
博主的场景
先装了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
参见:
分区
单纯记录命令。按自己的需要分区即可。
创建
$ lsblk # 查看磁盘分区
可以用两种方法分区:fdisk
和 parted
-
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
至此,系统安装就算完成了。重启拔掉u盘,应该可以见到grub的界面了。以root权限登录,只要能脸上无线,系统就安装成功了。
基本配置
配置语言环境(编码)
编辑 /etc/locale.gen
,解注en_US.UTF-8
和zh_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