前言
经历了「Fedora,从安装到放弃」之后,我对那些所谓「开箱即用」的 Linux 桌面彻底失去了信心。它们的确是开箱即用的,只不过对于我而言,它们开箱后很难用。
我想念 Gentoo。虽然它就在我身边的工作站里运行着,但是这台笔记本里却没有。在这台十年前的笔记本上安装 Gentoo,会显得我太变态,更何况这台笔记本是我自己出资买的,敝本自珍。我想试试 Debian。
多年以前,曾用过 Debian,浅尝辙止。可能是因为那时 too young, too simple, 理解不了 Debian 的厚重与沉淀。现在有机会尝试一下。如果还是不觉得它的好,就准备与 Gentoo 终老相伴了。
将 U 盘作为安装介质
写此文时,Debian 最新的稳定版是 8.5,代号 Jessie。没看过《玩具总动员》,所以也不知道 Jessie 是谁。Debian 矢志不渝的使用《玩具总动员》中的角色的名字作为稳定版的代号,它是个玩具级的 Linux 发行版吗?
一开始就遇到了一个障碍。为了追求自由软件血统的纯正,Debian 官方提供的系统安装光盘镜像文件未包含无线网卡的固件部分。如果我坚持使用无线网络安装的方式安装 Debian,事情会变得有些麻烦。
一筹莫展之时,搜到一篇文章。作者也跟我差不多情况,他指出最省事的办法是下载非 Debian 官方制作的含有无线网卡固件的光盘镜像文件,亦即:
$ wget http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/8.5.0+nonfree/amd64/iso-cd/firmware-8.5.0-amd64-netinst.iso
虽然这份光盘镜像文件不到 300 MB,但是下载速度堪称龟速。找了好大一会,发现了对岸有一台服务器,下载速度很快:
$ wget http://debian.nctu.edu.tw/debian-cd-unofficial/cd-including-firmware/current/amd64/iso-cd/firmware-8.5.0-amd64-netinst.iso
将光盘镜像文件拖下来之后,将其写入 FAT32 分区的 U 盘(假设它是 /dev/sdb
):
$ sudo dd if=firmware-8.5.0-amd64-netinst.iso of=/dev/sdb
如果非要跟着 Debian 官方的步子走,需要手动向 U 盘中写 syslinux,然后再找到非 Debian 官方提供固件文件,将它们放到 U 盘的根目录下,而这个过程,本质上就是在制作 firmware-8.5.0-amd64-netinst.iso……因此,并没有什么 Debian 官方的步子。
安装
折腾好了 U 盘,开始安装了。一路很太平,没再出幺蛾子,只有几个我觉得是要点的要点需要强调一下。
语言和键盘,选择英文,而国别或地区选择中国大陆。
硬盘分区,选择手动分区。由于我的硬盘只有 80GB,LVM 与 RAID 之类的高端技术,我不了解,但也用不着,省了点事。为
/
分区(EXT4)分配了 40GB,为/boot
分区(EXT2)分配了 500 MB EXT2,为swap
分配了 4.5 GB,剩下的都给了/home
分区(BTRFS)。只安装基本系统。也就是在让你选择软件包的时候,什么都不选,直接 Continue。
配置无线网络
系统安装完毕后,重启机器。因为没有装桌面,所以系统会进入终端环境。
如果使用基于 firmware-8.5.0-amd64-netinst.iso 制作的 U 盘,在安装 Debian 基本系统的过程中,无线网络可正常使用,那么系统装好后,无线网卡的驱动部分不会有什么问题,但是网络设定还需要自己动手。
可参考 Debian Wiki 提供的「无线网络配置」文档的「WPA-PSK and WPA2-PSK」一节所述方法配置无线网络。
更新系统
所安装的基本系统是 Debian 8.5 的稳定版本。虽然它够稳定,但是软件包太老了。接下来,我还要在这个基本系统上安装桌面,还要在桌面环境中写一些程序。太老的系统,适合做服务器,不适合桌面用户。
Debian 8.5 稳定版本提供的软件包,大概是 2 年前的版本。想想 Windows XP 现在依然有很多用户,所以 Debian 8.5 稳定版本还是很年轻的。新的版本未必好,虽然它们可能修复了老版本的一些 Bug,但是也可能引入了新的不为人知的 Bug。
Debian 提供了非稳定版本软件包的源,要使用它们,需要修改 /etc/apt/source.list 文件:
# cat << EOF > /etc/apt/source.list
deb http://ftp.cn.debian.org/debian/ sid main non-free contrib
deb-src http://ftp.cn.debian.org/debian/ sid main non-free contrib
EOF
注:上述命令使用了 Bash 的「Here Document」语法。也可以用可在终端中运行的文本编辑器 nano 或 vi 进行文件编辑。
然后将系统由稳定版本升级为非稳定版本(Sid):
# apt-get update # 更新软件包列表
# apt-get dist-upgrade # 系统升级
Debian 的稳定版与非稳定版本,类似于 Gentoo 的 amd64
与 ~amd64
。不过,Debian 在稳定版本与非稳定版本之间还有一个过渡版本,叫测试版本(Testing)。我想先试试一段时间的 Sid,频繁遇到问题,就切换到测试版本。
sudo
# apt-get install sudo
# echo "[用户名] ALL=(ALL:ALL) ALL" >> /etc/sudoers
添加中文 Locale
装系统的时候,语言与键盘皆为英文。此时,系统只支持英文环境。有些程序,譬如 Emacs,要想在其中输入中文,前提是需要系统中具备中文 Locale。
使用以下命令增加中文 Loclae:
$ sudo dpkg-reconfigure locales
将 Locale 列表滚动到底部,选择 zh_CN.UTF-8 UTF-8
,然后 Ok
确认。
这样一来,系统就有了两个 Locale 环境,en_US.UTF-8 与 zh_CN.UTF-8。我建议继续使用 en_US.UTF-8 作为默认的 Locale,中文 Locale 可以在需要的时候临时启用。
安装 LXDE
$ sudo apt-get install lxde
$ sudo reboot
不建议为了追求精简而只安装 lxde-core
。因为 lxde 本身已经是非常小型的桌面系统了,将它的相关组件全都装上,也占用不了太多的系统资源。不需要的一些软件包,安装结束后,可酌情删减。
快捷键
LXDE 未提供设置桌面快捷键的 GUI 程序。要设置快捷键,需要修改桌面配置文件。
可在 $HOME/.config/openbox/lxde-rc.xml 文件的 <keyboard> ... </keyboard> 部分添加以下内容:
<!-- run terminal -->
<keybind key="F12">
<action name="Execute">
<command>lxterminal</command>
</action>
</keybind>
<!-- Vertical tiling -->
<keybind key="C-W-v">
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo">
<width>50%</width>
</action>
<action name="MaximizeVert"/>
<action name="MoveResizeTo">
<x>0</x>
<y>0</y>
</action>
<action name="NextWindow">
<interactive>no</interactive>
<dialog>none</dialog>
<finalactions>
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo">
<width>50%</width>
</action>
<action name="MaximizeVert"/>
<action name="MoveResizeTo">
<x>-0</x>
<y>0</y>
</action>
</finalactions>
</action>
</keybind>
<!-- Horizontal tiling -->
<keybind key="C-W-h">
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo">
<height>50%</height>
</action>
<action name="MaximizeHorz"/>
<action name="MoveResizeTo">
<x>0</x>
<y>0</y>
</action>
<action name="NextWindow">
<interactive>no</interactive>
<dialog>none</dialog>
<finalactions>
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo">
<height>50%</height>
</action>
<action name="MaximizeHorz"/>
<action name="MoveResizeTo">
<x>0</x>
<y>-0</y>
</action>
</finalactions>
</action>
</keybind>
<!-- Restore window dimensions -->
<keybind key="C-W-r">
<action name="UnmaximizeFull"/>
<action name="NextWindow">
<interactive>no</interactive>
<dialog>none</dialog>
<finalactions>
<action name="UnmaximizeFull"/>
</finalactions>
</action>
</keybind>
上述配置设定了 4 个快捷键:
F12:打开终端
Win + Ctrl + V:竖直分屏,最后打开的两个窗口分居左右,铺满屏幕
Win + Ctrl + H:水平分屏,最后打开的两个窗口分居上下,铺满屏幕
Win + Ctrl + R:将竖直或水平分屏摆放的窗口复原
还有一些快捷键是 LXDE 已经为我们配置好的。下面着几个快捷键较为常用:
Alt + 鼠标左键:窗口拖放
Alt + 鼠标右键:对窗口尺寸进行调整
Win + E:打开文件管理器
Print(PrtSc):打开 gnome-screenshot 截屏
中文输入
$ sudo apt-get install fcitx
使用桌面菜单「Perference」->「Input Method」打开输入法配置向导,将 fcitx 设为桌面环境的默认输入法。
由于系统 Locale 是 en_US.UTF-8,在 Emacs 中,fcitx 无法输入中文。但是若将 LANG 设为中文,然后再启动 Emacs,就可以输入中文了,即:
$ LANG=zh_CN.UTF-8 emacs
为了方便,我在 /usr/local/bin 目录建立一份 Bash 脚本 em,内容如下:
$ cat << EOF | sudo tee /usr/local/bin/em
#!/bin/bash
LANG=zh_CN.UTF-8
/usr/bin/emacs $@ 2>/dev/null &
EOF
$ sudo chmod +x /usr/local/bin/em
这样,在终端中可以用 em
来代替 emacs
命令。
触摸板模拟鼠标单击
$ sudo apt-get install xserver-xorg-input-synaptics
然后修改 /usr/share/X11/xorg.conf.d/70-synaptics.conf 文件,在「Identifier
」为「touchpad catchall
」的「InputClass
」节中增加:
Option "TapButton1" "1"
关闭蓝牙
笔记本支持蓝牙,但平时用不大着。编辑 /etc/rc.local,在「exit 0
」之前添加:
echo disable > /proc/acpi/ibm/bluetooth
这样,在系统启动后,蓝牙功能会被自动关闭。
后来,发现在 BIOS 里可以直接关掉,这样便不必修改 rc.local 文件了。
查看笔记本电池的电量
LXDE 没提供笔记本电池的电量显示功能。在终端中,可使用 acpi -b
命令查看。我喜欢这种方式。平时不需要看电量,只有在电池信号灯警示时,才需要看一下还剩多少电。
Nikola
不知道 Nikola 是什么的人,可忽略此节。
使用 virtualenv + python 3.5 + pip 安装 Nikola 时,会遇到 lxml 包装不上的问题。要解决这个问题,需要事先安装 libxml2-dev, libxslt1-dev 以及 python3-dev。
我常用的三维图形软件
$ sudo apt-get install freecad povray
C 编程工具
$ sudo apt-get gcc make autoconf automake libtool valgrind
如果要编译 zero 的源代码,还需要安装 libglib2.0-dev 包。不知道 zero 是什么?没关系。整个地球,可能只有我真正需要编译它的源代码。
中文字体
简单而粗暴的办法是从 Windows 系统中扒出微软雅黑字体 msyh.ttf,然后在 /usr/share/fonts 中建立 non-free 目录,并将 msyh.ttf 放在这个目录中。
接下来,修改 /etc/fonts/conf.d/65-nonlatin.conf,将其内容替换为:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Microsoft YaHei</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Microsoft YaHei</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Microsoft YaHei</family>
</prefer>
</alias>
</fontconfig>
这样,这样整个桌面环境的中文字体就统一于微软雅黑了。由于我不用 Libreoffice,所以对宋体字没需求。屏幕字体,微软雅黑足够看的。当然,如果为了追求对微软的不屑,可以换成那些自由或免费的黑体字体的一种。现在的 Linux,已经不是 10 年前穷得连一款像样的中文字体都没有的处境了。
后记
我非常满意目前这个运行于 Debian 环境中的 LXDE 桌面。我并没有将它配置到可以截屏向世人炫耀的程度。它的桌面风格停留在 Windows XP 时代,而且我还特意将它的窗口与 Panel 的外观改成了 Windows 2000 时代的风格。
令我满意的,它运行起来,只需要 200 MB 左右的内存。即使开启 Firefox 以及我常用的一些软件,内存占用不过 600 MB 左右。这台笔记本的内存共 2G,剩下来的内存,我可以用来编译程序,用来运行 povray,用来更新系统。剩下来的内存空间,即使我用不了,但它们也是属于我的。这种自由且随意的感觉,是 Fedora 提供的 GNOME 3 桌面没法给我的。
此外,在正常的工作状态下,即使开着 WIFI,现在这台笔记本的电池能够坚持两个小时,而此前在 Fedora 的 GNOME 3 环境中,它只能坚持 70 分钟左右。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。