进入 BBR 时代!提前给 Arch Linux 装上 4.9 内核

BBR 是一个 Google 开发的开源 TCP 拥塞控制算法,作用和锐速相似。
BBR 首页:https://github.com/google/bbr

目前,包含了 BBR 的 Linux 4.9 已经发布,然而 Arch Linux 上,4.9 还只在 testing 源中。那怎么安装它呢?

首先运行以下命令安装 testing 源中的 4.9 内核:

pacman -U https://mirrors.kernel.org/archlinux/testing/os/x86_64/linux-4.9-1-x86_64.pkg.tar.xz --noconfirm

注意:使用 testing 有风险,请仔细考虑

将以下内容

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

存入 /etc/sysctl.d/99-bbr.conf

重启,享受 BBR 吧

在 Arch Linux 上安装锐速

锐速是一个在服务端增强 TCP 性能的软件。
现在越来越多的 VPS 用户都在部署锐速,我也在想给我的 Arch 服务器上安装锐速。

装过锐速的都知道,锐速支持的内核一般都是 CentOS 或者 Debian 的古老内核。
所以我们这里要给 Arch 装上一个相对旧版的内核。
还好有一位不明 Ubuntu 锐速用户在锐速的网站申请适配了 4.2 版本的内核。我们在这里感谢一下那位用户。
我们在 Arch 下也可以使用这个内核。
经过一番折腾,我制作了这个内核的 Arch 二进制包。
然后是制作锐速的包,可惜锐速官方已经不能注册了,只能去下一个注册机了Orz

这里是制作好的二进制包的下载:
https://mega.nz/#F!oA0zBaKS!Lws6_QmX5-x4IEAtV6f0Rw

安装方法:(以下步骤需以 root 用户运行)

  1. 先下载上面的三个二进制包
  2. 确认你的网卡名是 eth0,而不是形如 enoXensXenpXsY 之类的名字。
    不是的话请执行这个命令:
ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
  1. 如果你是 Linode 用户,请切换内核为 4.4.0-x86_64-linode63 并跳过下一步
  2. 安装内核包
pacman -U linux-lotserver-4.2.0_35-1-x86_64.pkg.tar.xz
pacman -U linux-lotserver-headers-4.2.0_35-1-x86_64.pkg.tar.xz
  1. 重启服务器

  2. 安装锐速本体并启动服务

pacman -U lotserver-1.0-6-x86_64.pkg.tar.xz
systemctl enable lotserver
systemctl start lotserver

这样锐速就安装完成了

查看锐速状态:

/appex/bin/lotServer.sh status

查看锐速实时信息:

/appex/bin/lotServer.sh stats

注意:lotserver 包仅用作研究使用,请下载者于 24 小时内删除

一年过去了

上一学期还是非常忙的……离散数学,算法,计算机组织与结构,形式语言与自动机,都是很难学的科目。
又因为 Typecho 0.9 的一个 bug,结果这半年都没登上 blog,更别提更新文章了……
嗯,升级成功了 Typecho 1.0,终于可以用 Markdown 了~
说起 Markdown,一年之前我还以为那是一种懒得写 HTML 的人喜欢用的异端,现在就比较喜欢了,大概是因为 MacDown 比较好用的原因吧。
其实用 Markdown 也是因为要在 GitHub 上写东西才学的。这一年在 git 上还是提交了很多代码的(虽然大都是 private repository),对 git 也有了一点的了解。感觉 githug 这个项目挺适合用来学习 git 的。由于 git 用的多了,SVN 现在也只用 git-svn 来替代了,同样地,也是一年的时间,就让我从 SVN 的支持者转到了 git,当时的我真是 too young too simple 啊。
快到春节了,祝各位新年愉快~

安装 Arch Linux

嗯,在说安装步骤之前,先说一下机器,已安装 Windows 8.1 和 OS X Yosemite 的 MacBook Pro 15'' (Mid 2014)。
可见大家可以知道这个机子是有很多坑的……
安装步骤大体上是参照了 Arch Linux 安装向导

首先进行磁盘分区及格式化。
为了方便说明,贴一下我的 /dev/sda 分区:

Part. #     Size        Partition Type            Partition Name
----------------------------------------------------------------
   1        200.0 MiB   EFI System                EFI System Partition
   2        380.0 GiB   Apple HFS/HFS+            Customer
   3        619.9 MiB   Apple boot                Recovery HD
   4        128.0 MiB   Microsoft reserved        Microsoft reserved partition
   5        54.9 GiB    Microsoft basic data      Basic data partition
   6        27.7 GiB    Linux filesystem
   7        2.4 GiB     Linux swap

使用 cfdisk 可以进行比较人性化的磁盘分区(类似 DOS 的 fdisk)。
使用 mkfs.[disk_format] 可以对根分区进行格式化(也可以把 /home /boot 之类单分区)

mkfs.btrfs /dev/sda6 -L "Arch Linux"

使用 mkswap 生成 swap 分区,然后 swapon 启用 swap

mkswap /dev/sda7
swapon /dev/sda7

由于我使用 DHCP 访问网络,所以无需配置网络
挂载根分区到 /mnt,安装基本系统

mount /dev/sda6 /mnt
pacstrap /mnt base vim

生成 fstab(挂载配置)
genfstab -p /mnt >> /mnt/etc/fstab

进入 chroot 环境,进行更加详细的配置

arch-chroot /mnt
echo Computer-Name > /etc/hostname
ln -sf /usr/share/zoneinfo/zone/Asia/Harbin /etc/localtime

去掉 /etc/locale.gen 中你想要的 locale 的注释
建议保留 zh_CN.UTF-8 zh_CN.GB18030 zh_CN.GBK zh_CN.GB2312 及 en_US.UTF-8。
设置语言:echo LANG=zh_CN.UTF-8 > /etc/locale.conf
生成 initrd:mkinitcpio -p linux
设置 root 密码:passwd


以上都是一些细节,接下来是重点:安装引导器
先安装必要包:pacman -S grub efibootmgr osprober
挂载 EFI 系统分区(即 ESP):mount /dev/sda1 /boot/efi
安装 GRUB: grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub_uefi --recheck
生成 GRUB 配置:grub-mkconfig -o /boot/grub/grub.cfg


退出 chroot,重启,享受 Arch Linux

exit
reboot

如何进入 OS X?
在启动界面按 c,输入 exit 即可(前提是在 EFI 启动项中,Mac 在 Arch 之后)

我的第一个 OS X App

写第一个 OS X App 的时候,本来是想用 Xcode 做一个标准的 Mac App。(别闹,不会 C++ 怎么写 App)
但是当我随手打开桌面上的 Counter-Strike:Global Offensive 的时候,就不淡定了。OSX 软件 .app 结构真简单

OS X App 的结构很简单
声明各种属性的 Info.plist,其中有启动脚本/二进制程序、软件图标、是否支持 retina 屏幕等属性……
启动脚本和二进制程序存储在 MacOS 目录下
软件图标存储在 Resources 目录下

其中遇到了一个难点就是 icns 图标的生成,下面记录一下制作方法。

1.新建一个文件夹,里面添加如下的 PNG 文件,尺寸看名字。
icon_16x16.png
icon_16x16@2x.png
icon_32x32.png
icon_32x32@2x.png
icon_128x128.png
icon_128x128@2x.png
icon_256x256.png
icon_256x256@2x.png
icon_512x512.png
icon_512x512@2x.png
2.给文件夹添加扩展名 .iconset
3.打开终端,运行命令
iconutil -c icns abc.iconset
输出的 abc.icns 就是输出的图标文件。

还有一个难点就是用系统自带终端启动指定脚本,在 stackoverflow 搜索到了以下方法:
open -b com.apple.terminal someshell.sh

最后打包 DMG,设置背景图片和磁盘图标,在磁盘工具压缩 DMG。
这样,我的第一个 Mac App 就完成了。

嗯,以后再试试 pkg 格式的安装程序怎么制作。

继续阅读 →