标签 linux 下的文章

有时候我也在想,为什么我以前无法做到在 Linux 下工作,而现在却能做到。

正好那天和别人谈起,我干脆就列出我用过的所有 Linux 发行版好了。

小学

  • Red Hat 9 / GNOME 2

按道理讲这个不算,因为就装上去用了几天而已。实在不会安装软件。当时主流的软件分发方式还是丢一个 tar 包让你自己编译,于是当时安装 Real Player 都用了很久——而根本没有其它好用的播放器。

初中

  • Fedora 7? / GNOME 2

作为双系统的第二系统。那时候有一台 Athlon 64 2800 处理器的电脑。

高中

  • Ubuntu 9.10? / GNOME 2
  • Xubuntu 10.04? / Xfce
  • Lubuntu 10.04? / LXDE

基本都是作为双系统的第二系统,或是一台老旧的笔记本的唯一系统。那天老旧的笔记本常被我用来写东西和看毛片。

大学

  • Linux Mint ? / Cinnamon
  • Arch Linux / Xfce
  • Linux Mint ? / MATE
  • Xubuntu 13.04? / Xfce
  • OpenSUSE ? / KDE
  • Kubuntu 14.04? / KDE

大学里前后换了三台笔记本。系统也一直在换来换去。Arch 和 SUSE 都很可爱,但是用起来实在不省心。而且 zypperpacman 真的很难用(比起 apt-getyum 来说)。

毕业

  • Xubuntu 15.04 / Xfce
  • Debian 8 / GNOME 3

毕业以后基本没时间折腾了,Xfce 简单、稳定,并且在那台老旧的笔记本上也能舒畅的运行。后来公司发了台好笔记本,于是打算换炫一点的 GNOME Shell。而之前的经历告诉我,网上太多 binary 包都只有 deb 版,于是装 Debian 系的系统是最好的选择。一开始试了试 Ubuntu GNOME,发现中文输入法一直有问题。于是就换了 Debian unstable,很是舒畅。

自己电脑上各种资源实在太多,硬盘空间紧张。此时搭建一个 NAS 放在家里就显得很有必要了。于是今年终于动手了。

硬件

IMG_8828.jpg

由于专门的 NAS 硬件太贵,动辄好几千。我便在淘宝上四百多块钱买了一块 12 * 12 cm 的主板,上面带一块 J1800 双核赛扬(有的 Atom 主板尺寸更小功耗更低,然而价格贵了些)。单独购买外置的 12 V 电源时,考虑到可能同时带一块 3.5" 硬盘和一块 2.5" 硬盘,于是买了 7 A 的适配器。又在淘宝上买了一块 3T 的西数红盘(WD30EFRX)作为硬盘。最后,把老笔记本上的 2G SO-DIMM 内存条拆下来装到主板上。

IMG_8844.jpg

现在硬盘和主板直接放在柜子里,不过有个「机箱」更好。我于是拿卡尺量了一下它们的尺寸和螺丝孔的位置,画了一个外壳:由四片亚克力拼成,硬盘放下面,主板放上面。准备到淘宝上找商家切亚克力板,自己拿螺纹塞规钻出螺纹。

frame.png

软件

软件上考虑使用 NFS 实现文件访问。借用办公室的显示器和键盘安装 Ubuntu 15.04 后将 NAS 拿回家,搭建 NFS 服务器。

考虑到网络读写不稳定,且 NAS 很大作用是保证数据即使在其它客户端被攻陷后也不丢失损坏,便想到用 union mount。Union mount 简而言之就是把一个只读目录(lower)和一个可读写目录(upper)映射到同一个目录(union)里。用户读取 union 中的文件时,实际就是从 upper 或 lower 中读取,而用户修改 union 中的文件时,所有改动都会被存进 upper 里。这样 union 看起来就是一个完全可读写的普通目录,然而 lower 目录实际并不会被更改,因此处于相对安全的境地。我只要定期 ssh 到 NAS 上看看具体修改了哪些内容,把确定需要保留改动从 upper 里写入 lower 里就好。

Union mount 现在最常见的两个实现是 AuFS 和 OverlayFS。前者由于被 Docker 采用,前两年忽然又火了一阵,然而实现非常复杂。后者的原理和实现都非常简洁,且在 3.18 时被合并进了 Linux 内核。因此我选择了 OverlayFS,并且专门为其写了一个工具。事与愿违的是,我发现无法在 OverlayFS 之上建立 NFS 服务器(i.e. OverlayFS 无法被 export 到 NFS)。于是我只好改用 AuFS 了,毕竟 AuFS 官方主页里就有 export to NFS 的指南。

具体设置较为简单:AuFS 部分,在 /etc/fstab 中加入

none /mnt/aufs aufs noauto,x-systemd.automount,br=/var/userdata/upper=rw:/var/userdata/lower=ro 0 3

NFS 部分,安装 nfs-kernel-server 后在 /etc/exports 中加入

/mnt/aufs *(rw,async,fsid=0,crossmnt,root_squash,no_subtree_check)

外网访问

就此,NFS 就已经可以在家里的内网放问了。然而,要在外网访问,需要考虑安全的问题。NFSv4 开始支持使用 Kerberos 进行身份验证。然而搭建 Kerberos 相对麻烦,我便想到曲线救国,直接使用 ssh 进行端口转发完成加密和认证。虽然这样会带来一些 overhead,不过由于我在外网访问 NAS 的频率低于在家里访问,所以问题尚不算大。

接下来就是在路由上设置端口转发允许外网访问到 NAS 的 22 端口。首先想到的是 MiniUPnPc,这样不用进入路由器设置里也可以完成端口映射,且不需要 NAS 有固定的内网 IP。然而联通配的路由器没有开启 UPnP。进路由器设置界面,发现里面既无法直接设置端口映射,也无法打开 UPnP。好在根据网上找到的方法破解了它后,就可以设置端口转发了。既然已经进了路由器管理界面,干脆直接给 NAS 设置了固定的 IP,打开固定的端口映射。再配合上 DDNS,就可以畅快地从外网也访问 NAS 了。

用 Evernote 有三四年了。最早是因为 Google Notebook 关停才不得已转到 Evernote 的。

Evernote 免费版有一些限制,比如同步流量限制、Android 客户端不能离线、Android 客户端不能设置密码;要 Premium 才能使用;而 Premium 又太贵,于是去年我也用了一阵子的有道云笔记,但是后来由于用户体验、隐私等等原因,用了一个月也就没再用了,还是坚守 Evernote。

但是 Evernote 有几大问题,是即使购买 Premium 也无法解决的:一是没有 Linux 客户端,二是出现 conflict 时很傻逼,三是组织层级还是不够。

同时解决这三个问题的方法倒也简单:直接全部笔记用 Markdown 一类的文本写,然后 GitHub 上面弄个 private repo 来放。

缺点在于放短小的笔记即时同步不那么方便,但是那种情况下我用 Google Keep 就好了。

打算正式抛弃 Evernote。

Debian 自己最简安装以后装 Xfce,又很多小棱角(比如屏保、主题、GTK+ 引擎等等)需要自己打磨,太麻烦,索性装 Xubuntu 了。也许是传说中的“过了折腾的年纪了”。

装 Xubuntu 以后也陆陆续续做了很多事情才算顺手,记一下:

  • 卸载 Pidgin、Orage、xfce4-dict。
  • 卸载 Thunderbird(基本都用 Gmail 了)。
  • 卸载 Parole,换 VLC Media Player + GNOME MPlayer(gstreamer 还是太过阳春)。
  • 卸载 Thunar,换 Nautilus(Thunar 功能不够,并且根据测试,内存使用并不低)。记得装nautilus-open-terminal
  • 卸载 gMusicBrowser,换 DeaDBeeF(谁叫我是 FB2K 十年老用户)。
  • 卸载 Ristretto,换 Nomacs。
  • 安装 VirtualBox。
  • 安装 TeXworks(纯粹因为习惯)。
  • 安装 Intellij IDEA、WebStorm 等 JetBrains 全家桶(学生免费授权)。
  • 安装 Google Chrome(写前端,浏览器多多益善)。
  • 安装 Darktable(功能不如 Lightroom 强大,但是也算够用,处理相机 RAW 有用)。
  • 安装 Nomacs(快速查看相机 RAW 有用)。
  • 安装 BleachBit(类似以前在 Windows 下的 CCleaner)。
  • 安装 GNU Octave。
  • 安装 Rime。