新一代的快速启动脚本——quick-init
好吧,这又是一篇 Arch Linux 专用的文章,使用其他发行版的 TX 们请瞪眼看着吧……
还记得上次说的 Finit-ARC 么?quick-init 系列脚本就是 Finit-ARC 的延续,其实这不是什么新的东西,自从我发了那两篇文章,Finit-ARC 就停止了,据说是出于安全性考虑,不再开发使用 C 语言的 Finit-ARC,而是使用像 Arch Linux 原生的 init-scripts 一样的 Shell 脚本。
那么 quick-init 的原理是什么呢?
The reimplementation of init-scripts consists in the modification of the inittab runlevels and the start of system and Xorg without udev.
The first system level contains the creation of static devices necessary to boot system until fscheck. Then Xorg is started and in runlevel 3 it starts udev, swapon, all services etc...
大意说就是加载必要的设备和配置,然后在 udev 没有启动的情况下马上启动 Xorg,然后再启动 udev,swapon 和其他服务等等。
我们通常所说的启动时间都是进入 Xorg 的时间,这样启动速度就快了很多了~
quick-init 的安装很简单,直接 yaourt -S quick-init 即可,重启就可以看到效果,如果你对 init-scripts 比较熟悉,还可以自行修改,去掉一些用不到的设置,比如 lvm、raid、其他显卡的配置,你还可以通过参考《启动后自动进入X》这篇文章来绕过 GDM、KDM 等显示管理器,更加快速的启动电脑。
来看看我优化的效果吧~(这是启用了自动加载模块的效果,如果手动加载的话,可能会更快)
Arch Linux 消息三则
来自上游(Upstream)的修改:
http://kernelnewbies.org/LinuxChanges
来自 Arch Linux 的修改:
- 移除了 acpi-dsdt-initramfs.patch,目前没有能够起作用的补丁,如果你需要一个自定义的 DSDT,请自行编译进你自定义的内核。
- 移除了 snd-pcspkr 模块 #14958
- 增加了 dccp #15071
- 增加了 SCHED_DEBUG=y
- 修改为 lzma 内核压缩算法
- 移除了 rt2500 模块,它已被内核驱动支持
[core] 仓库中的 portmap 已经被 rpcbind 所替代,rpcbind 有更多的特性,例如 ipv6 和 nfs4 的支持,请相应地修改你的 /etc/rc.conf 文件。
NFS4 支持现在已被应用。
这是一个相当重要的更新,你将不得不手动修改配置文件。
/etc/rc.conf 守护进程(daemons)修改:
1) 修改 portmap 为 rpcbind
2) 修改 nfslock 为 nfs-common
3) 修改 nfsd 为 nfs-server
NFS(客户端和服务器端)扩展配置在:
/etc/conf.d/nfs-common
/etc/conf.d/nfs-server
请根据需要自行修改。
在 64 位 Arch Linux 下安装 Chromium 并启用中文输入法
虽然今天 Chromium 浏览器 For Linux 的 Dev 版才正式“发布”,不过此前 Google 一直提供了 Chromium 的 snapshots。
当然,目前的 Chromium 功能还很不完善,Flash 等功能都不能使用,项目处于有条不紊的开发中。
尤其对于 64 位 Linux 用户来说,更是这样。因为 snapshots 都是 32 位的,看了官方的 DEB 包,也是依赖 ia32-libs,也就是说,现在没有官方编译的 64 位 Chromium For Linux。这在 64 位 Linux 下会引发输入法不能正常使用等问题。
先说说安装方法吧。在 Arch Linux 安装很简单,AUR 里早已经有了 snapshots 的包,安装即可。这个包的维护者很勤奋,每天都会更新一两次。
yaourt -S chromium-snapshot
其他发行版的可以到这里自行下载安装。
安装后会发现 ibus 输入法不能使用(据说 fcitx 也不行),联想到 QQ 也是这样,所以直接把 coderoar 兄那个 qq 脚本照搬过来,果然,输入法也能用了~脚本如下:
#!/bin/sh GTK_IM_MODULE="xim" QT_IM_MODULE="xim" XIM_PROGRAM="/usr/bin/ibus-daemon" XIM="ibus" XMODIFIERS="@im=ibus" export GTK_IM_MODULE QT_IM_MODULE XIM_PROGRAM XIM XMODIFIERS GCONV_PATH=/opt/lib32/usr/lib/gconv/ GDK_PIXBUF_MODULE_FILE=/opt/lib32/config/gdk/gdk-pixbuf.loaders GTK_IM_MODULE_FILE=/etc/gtk-2.0/gtk.immodules.32 GTK_PATH=/opt/lib32/usr/lib/gtk-2.0/ LD_LIBRARY_PATH="/opt/lib32/usr/lib/:/opt/lib32/lib/:$LD_LIBRARY_PATH" PANGO_RC_FILE=/opt/lib32/config/pango/pangorc export GCONV_PATH GDK_PIXBUF_MODULE_FILE GTK_IM_MODULE_FILE GTK_PATH LD_LIBRARY_PATH PANGO_RC_FILE chromium-browser
这个是针对 ibus 的,其他输入法可能要做相应修改。
在 Arch Linux 下启用 RGBA 透明窗口
看了 Ubuntu 9.04 那么炫,突然感觉自己的 Arch 好像缺了什么,哎?窗口怎么不是透明的啊……
这个东西是由 RGBA 控制的,大家知道 RGB 是通常所说的三原色:红绿蓝,那么 A 是什么呢?不错,就是 Alpha,透明。
Arch 里面默认没有启用透明的引擎,所以窗口都是 RGB 的,看起来当然不如 Ubuntu 那么炫啦~
那么怎么在 Arch 里面启用透明呢?
先来看一下效果图:
其实启用方法很简单,只要从 AUR 里安装 librgba-gtk-module 这个包就可以了:
yaourt -S librgba-gtk-module
然后按照提示,运行:
gnome-color-chooser
在弹出的窗口里选择“引擎”-“全局”-“Murrine”-“首选项”,勾上 Enable/Disable RGBA support 的两个勾就行了。
应用的时候,可能会等待一会儿,之后就可以看到透明窗口和控件啦!
值得一提的是,并非所有窗口都支持透明效果,这要看软件的源代码启没启用支持哦~
以上方法在 Arch Linux、Gnome 2.26.2 下验证通过。
Finit-ARC 多项更新:我的快速启动终于完美了~
上次说的 Finit-ARC 快速启动方案,就像文中所说,其实在我这里根本用不了。
这是当时论坛上已经确认的 Finit-ARC 的 BUG,好在作者 adriano 更新很是勤奋,一天内在 github 上提交了十多次更新,不但解决了 hald 段错误的问题,还有很多的改进。
主要的改进有:
- 增加新的静态设备
- 支持 LVM
- 启动顺序调整(udev 和 hal 可以用了)
- 修复时钟 BUG
- 增加 swap 挂载功能
- 为 Xorg 热插拔支持自动开启 HAL 和 DBUS
现在作者似乎想放弃 Finit-ARC,开始一个新的、与 Arch Linux 完美兼容的 init 项目,拭目以待吧。
另外,如果你关注 Finit-ARC,或者想要帮忙,可以去这里看看。
下面是我现在的启动图,虽然比不好使的时候长了一秒钟。
Finit-ARC: 让你的 Arch Linux 4 秒启动!
感谢 YCF 兄在 twitter 上的推荐。
Finit-ARC 是什么呢?这是一个加快 Linux 系统启动的程序,它的前身是大名鼎鼎的 fast-init。
我们知道,通常 Linux 启动是靠脚本来控制的,这可能是 /etc/rc.sysinit,大家知道,Shell 脚本是解释性的,速度很慢(相对编译性的语言来说),那么,何不用一种编译性的语言来操纵系统的启动呢?
Finit_ARC 就是基于这一原理,它采用纯 C 语言写成,设置环境变量等等操作所调用的都是系统的 API,还有一些使用 system() 函数执行的程序,并且处理的时候还用了多进程,这样效率岂不是有很大的提高?
是的,经过实验,使用 Finit_ARC 启动的电脑,从 GRUB 到 Shell 登录,可能达到只需要 3-5 秒!
请注意:Finit-ARC 目前还是 Beta 版本,并且只能用于 Arch Linux!
那么,怎样安装 Finit-ARC 呢?
1.从这里安装相对稳定版:
http://aur.archlinux.org/packages.php?ID=25159
或者从这里安装 git 版(仅用于测试目的!)
http://aur.archlinux.org/packages.php?ID=26314
2.安装完成后务必正常启动(或重启)系统一次。
3.编辑 /boot/grub/menu.lst,把 init=/sbin/finit-arc 作为内核参数加入进去。
重要!Finit-ARC 不支持 UUID,所以在 /boot/grub/menu.lst 和 /etc/fstab 中,应该把所有 UUID 形式改成 /dev/sd** 的格式!
更详细的介绍和一些注意事项,可以参考 Arch Linux 官方论坛。
下面说说我的情况:
我的电脑启动速度没有经过任何优化,有的话也仅仅是开机不让 NTFS 分区挂载,模块用的是 AUTOLOAD,所以比较费时间。
使用 Finit-ARC 之前,我的启动时间是 21 秒。
使用 Finit-ARC 之后,启动时间是 13 秒。
不过,很悲惨的,遇到了 hald 段错误的问题,开机后键盘鼠标都不能用……论坛上其他人也出现了此问题,所以,优化要谨慎啊……
不过其实也没啥风险,只要 fallback 那个条目的内核参数没被你改了,出了问题从 fallback 进系统改回来就行了。
有没有想要试一下的呢?召唤小白!
让 Arch Linux 也使用 Ubuntu 9.04 的新通知机制
看到 TualatriX 兄在 Gentoo 下使用 Ubuntu 的新通知机制 notify-osd,心里很痒啊,在 Arch 下能不能用呢?
首先想到的是看看 TX 兄是怎么改的,不过没用过 Gentoo,Ebuild 也看不出所以然来,想自己改是不可能了。
Google 一下吧,"arch linux notify-osd",晕,发现 AUR 里面已经有了,还不止一个……
[iven@~]$ yaourt notify-osd 1 aur/banshee-notify-osd 1.4.3-3 (15) Patched banshee version for notify-osd 2 aur/gajim-notify-osd 0.12.1-1 (2) Jabber client written in PyGTK 3 aur/gnome-mount-notify-osd 0.8-2 (11) GNOME mount program 4 aur/gnome-power-manager-notify-osd 2.24.4-5 (Out of Date) (18) Session daemon that makes it easy to manage your laptop or desktop system. 5 aur/libnetworkmanager-notify-osd 0.7.1-1 (5) The Network Manager Library 6 aur/networkmanager-notify-osd 0.7.1-1 (5) Network Management daemon 7 aur/nm-applet-notify-osd 0.7.1-1 (3) GNOME frontends to NetWorkmanager 8 aur/notify-osd 0.9.12-1 (25) daemon that displays passive pop-up notifications 9 aur/notify-osd-bzr 311-1 [312-1 installed] (45) Canonical's on-screen notification display agent, implementing the FreeDesktop.org notification specification with semi-transparent click-through bubbles. 10 aur/pidgin-libnotify-notify-osd 0.14-2 (25) Patched pidgin-libnotify version for notify-osd
可以看到,不但有 notify-osd,还有 bzr 版的,还有针对 pidgin 各种应用的 hack 版。
我不用 pidgin,所以直接安 notify-osd-bzr,这个包与 notification-daemon 和 notify-osd 冲突,我没有安 notify-osd,所以应该先:
yaourt -Rd notification-daemon
然后:
yaourt -S notify-osd-bzr
最后注销一下即可。
下面是骨头兄的 lrcdis 的效果(Arch 里面没有 gnome-osd,怨念……):
呵呵,Arch 还是群众力量大啊,AUR 这个平台简直神了!
Arch Linux 下 texlive 2008 的安装
最近忙里偷闲,想学学一直放在藏书阁里的 LATEX Notes,于是边看边装 texlive ……
pacman -S texlive-bin
先来个 hello world:
%hello_world.tex
\documentclass{article}
\begin{document}
Hello, World!
\end{document}
生成 dvi 文件:
latex hello_world
很无情地给出错误: 查了半天,发现 texlive-core 才是正主,texlive-bin 只是它的一个依赖,汗……
这下终于通过了…… 以下是某高手解释 tex、latex 等的关系,转自这里:
Latex error: I can't find the format file `latex.fmt'!
pacman -S texlive-core
这才明白 texlive 果然是个庞然大物,texlive-bin 就 16M 了,texlive-core 有 50 多M,又安个 texlive-cjk 又是 50M,真不知道 texlive-most 有多大……
Arch Linux 中 Xorg 1.6 将转移到 extra 源
Xorg-server 1.6.0 及其相关驱动将被移往 extra 源。
这一版本带来了输入设备属性(input device properties),DRI2 和 内核模式设置(KMS)的特性。注意目前只有 Intel 驱动实现了 DRI2 和 KMS 的支持。
这一版本也带来了一个新的驱动: xf86-video-intel-legacy。这是一个添加了补丁以支持新版 xorg-server 的旧版 Intel 驱动。此驱动适用于使用新的 xf86-video-intel 驱动遇到问题的用户。
仍在使用 xorg-server 1.4.2 的用户建议升级一下,并使用 legacy 驱动来代替 intel 和 i810 驱动。
Xorg-server 1.6.0 and its related drivers will make their move to extra.
This new release features input device properties, DRI2 and kernel
modesetting (KMS). Note that DRI2 and KMS are only implemented by the
Intel driver at this moment.
This release also comes with a new driver: xf86-video-intel-legacy. This
driver is an old intel driver version, patched to support recent
xorg-server versions. This driver should be used by people having
problems with the newer xf86-video-intel driver.
People still using xorg-server 1.4.2 are advised to upgrade and replace intel or i810 drivers with the legacy driver.










