改造笔记本,使用光驱位托架安装第二块硬盘

这是我在11年底进行的一次改装,今天又改回去了,把整个过程及需要的部件记录一下。

更新:(2013年2月7日)文章末尾添加了这种改造方法的一些评价和感受。

首先上图介绍一下我在改装过程中用到的硬件:(手机晚上拍的,效果不好请见谅)

我的笔记本是华硕的 K42 型号(或者是 A42 X42 都是同一个系列),图中的 (1) 是笔记本右下方光驱插槽的位置。(2) 是在附近科技市场买的外置光驱盒,包括外壳、一个平挡板、两条线。

图中 (3) 是我从淘宝买的光驱托架,包含托架本身、(4) 硬盘挡板和 (6) 四颗防震螺丝钉,以及一些小螺丝刀等。(5) 是我从淘宝买的一块 OCZ Agility 3 60G SSD(固态硬盘),支持 SATA-3 6Gb/s 的传输规格,其他参数略。

图中 (7) 是笔记本自带的光驱,DVD-RW 刻录、擦写功能。(8) 是光驱本身的挡板,(9) 是光驱自带的一个固定板。

以上就是需要用到的或者购买的硬件。在笔记本原装的结构为:(7) 光驱–(8) 挡板–(9) 固定板,安装在接口 (1) 内,并用两颗螺丝钉固定。下面说一下改装的步骤:

「注:不同型号的笔记本电脑,在光驱 (7)、固定架 (9) 及其他一些小地方会不同,但是大概方法是相通的!」

1. 将固定光驱 (7) 的两颗螺丝钉(在笔记本 D 面,孔周围有“光盘”标志)拆下,轻抽出光驱。将 (7) 与 (9) 连接的四颗螺丝钉拆下分离,将 (7) 与 (8) 连接的卡子也轻拆分离。

2. 将托架自带的减震钉 (6) 拧到硬盘 (5) 的两侧四个孔里,将硬盘放到托架 (3) 中,插到 SATA 插口里并安好挡板 (4)。

3. 将刚才拆下的挡板 (8) 和固定板 (9) 都重新安装到新的托架 (3) 上,并将整个托架再推回 (1) 口中,上紧螺丝。

4. 将拆下的光驱 (7) 安装到外置光驱盒 (2) 中,即可使用外置 USB 光驱。

(更新内容)以下是这样改造之后的一些感受和评价,因为我已经这样使用了一年多,最近又换回去原配的光驱。

1. 这种改造方法,如果使用的新硬盘是 SSD,一定注意光驱位的接口通常速度较低,或者甚至整个主板的 SATA 接口都是 SATA-2 3Gb/s 的接口。如果是前一种情况,可以考虑将 SSD 装在原硬盘位(但是不一定好装);后一种就是我的情况,只能凑合用咯。

2. 双硬盘(即使不是 SSD)都会有性能上的飞跃,因为系统和用户文件的隔离,可以在开机时间、并行处理、大文件读写等方面发现系统性能不下降或明显上升。

3. 这样装好的硬盘,在 BIOS 引导时需要进行配置,这里我不细讲,懂的自然懂。

4. 如果是 SSD + HDD 的配置,建议 SSD 上只放系统和应用程序,并且将写入较大的数据文件夹移动到其他分区,以避免对 SSD 寿命造成影响。在我的博客里有 Windows 系统的教程,Linux 用户也可以自己做类似的迁移。

Compiling Custom Linux Kernel With PAE And PF-Patch On Arch Linux

The x86 Linux kernel in the official Arch Linux repository oddly doesn’t have PAE enabled by default. So I decided to compile my own with PAE as well as -pf patch set.

WARNING: Compiling and installing your own kernel can / will take VERY LOOOONG and be DANGEROUS. There are pre-compiled PAE kernels available as well as -pf ones, if that’s only what you want. If you are a regular user who don’t want to take that risk, or even don’t know what Linux kernel is, just follow these links and enjoy your life.

So you still decided to do it manually, huh? Very brave and good choice. So let’s begin.

First let me introduce the kernel we’re going to compile. PAE (Physical Address Extension) makes it possible to use as many as 64GB of physical RAM with 32-bit kernel. PF patch set includes “-ck” patch set, BFS scheduler, BFQ I/O sched, TuxOnIce feature and UKSM patch (the last one comes from China).

1) Get PKGBUILD for “linux-pf” package from AUR. Use yaourt or download here then $ makepkg.

We can also (optionally) edit the PKGBUILD before really start using it. You can change the URL to download Linux kernel, for example to a local mirror. That’ll save you some time. Change the first line of “source” as you want and save.

2) Start compiling and building package.

 — 2.a Choosing base config:

        First you will be asked whether to use “your running kernel’s config”, “make localmodconfig” or “build an all-inclusive kernel like stock -ARCH“.

The second choice should be used with caution, because it means that you only compile the drivers you loaded now, and if you add a new device later (even a USB mouse you don’t use now), it will NOT get recognized and run by your custom kernel.

Here I recommend the last choice, though it’ll take longer than the second, it’s the best choice for most people.

— 2.b Manually config:

  Since the default config for “linux-pf” still comes with PAE (CONFIG_HIGHMEM64G) disabled, we need to alter that choice. Here we can use “make menuconfig” (you can also use GUI-based ones), and change “Process type and features” — “High Memory Support” to the 64G choice. (You can also manually modify “.config” file and change “CONFIG_HIGHMEM64G” to “y”.)

 — 2.c Wait for compiling.

If it’s not too late to say it now (which it definitely is, ha~ha), you can change “/etc/makepkg.conf” (before you start the whole thing) and make the compiling multithreaded (useful for systems with Dual/Quad core CPUs). Read the docs for how.

3) Install the compiled kernel.

There should be two packages, for kernel and its headers. After installiation, (backup your grub.cfg and) # mkinitcpio -p linux-pf , # grub-mkconfig -o /boot/grub/grub.cfg , then restart the computer to use the new kernel.


This is the first time I post here in English. Hope it is English anyway.

Linux 下 GNOME 声音设置里只有“假输出”

这几天换用 Arch Linux 之后遇到两次了,今天终于找到了解决方法。

在网上查了相关资料,在中文社区没有找到比较靠谱的解释。于是查了一下这个假输出,英文原文是 “Dummy Output”(在 Launchpad 的翻译站上找到的),换用英文 Google 后得到了以下解决方法(适用于 GNOME 3 / Unity 等桌面环境)。

Reference: http://forums.opensuse.org/english/get-technical-help-here/tumbleweed/465124-pulseaudio-only-dummy-output.html

遇到这个问题的原因是,我用 gnome-session-quit –logout 注销了,再进来就没有声音了,查看上面的声音设置,只有一个“假输出”(图是恢复后的了)。

解决方法就是——将你的用户加入 audio 组,并重启 pulseaudio。

sudo gpasswd -a $USER audio
sudo killall pulseaudio

顺便说一句:Infinality 补丁版的 FreeType 渲染效果太 TMD 好了!麻麻再也不用担心 Linux 上的字体丑了~

在 Linux 下配置罗技 V470 鼠标的滚轮横向按钮功能

由于罗技的 SetPoint 驱动没有 Linux 版,也就没办法自定义横向滚轮的功能。这里介绍一下如何通过 X.org 自带的配置功能来实现。

我想要实现的是横向滚轮后退和前进网页的功能,有些复杂的功能是不能通过修改配置实现的。测试环境:Ubuntu 12.10 x86,X.Org X Server 1.13.0 / X Protocol Version 11,鼠标设备是罗技 V470 蓝牙鼠标。当然,理论上这些配置也都适用于任何使用 X 的操作系统,以及任何使用标准 X.org 输入驱动的鼠标设备,也可以调整包括左右键、滚轮上下以及大部分自带按键。

1. 使用 xev 检查需要调整的键号。在 Xorg 下的终端中启动 xev,在弹出的白色框中,按下想要调整的鼠标按钮(我这里就是横向滚轮咯),会看到终端中出现类似下面的信息:

ButtonPress event, serial 41, synthetic NO, window 0x4400001,
    root 0xaf, subw 0x0, time 41339809, (78,81), root:(794,134),
    state 0x10, button 6, same_screen YES

ButtonRelease event, serial 41, synthetic NO, window 0x4400001,
    root 0xaf, subw 0x0, time 41339809, (78,81), root:(794,134),
    state 0x10, button 6, same_screen YES

ButtonPress event, serial 41, synthetic NO, window 0x4400001,
    root 0xaf, subw 0x0, time 41340743, (78,81), root:(794,134),
    state 0x10, button 7, same_screen YES

ButtonRelease event, serial 41, synthetic NO, window 0x4400001,
    root 0xaf, subw 0x0, time 41340743, (78,81), root:(794,134),
    state 0x10, button 7, same_screen YES

在按键过程中不要移动鼠标或按键盘(否则会产生很多事件),并记下上面的数据中 button 后面的数字,这就是你刚才按的键号。以上四个事件分别代表:按钮 6(滚轮左)按下、弹起、按钮 7(滚轮右)按下、弹起。

2. 使用 xinput 检查需要调整的设备名称。在连接鼠标的情况下,终端中运行 xinput 命令,即可获得类似下面的信息:

⎡ Virtual core pointer                     id=2  [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer               id=4  [slave  pointer  (2)]
⎜   ↳ Bluetooth Laser Travel Mouse             id=11 [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                 id=16 [slave  pointer  (2)]
⎣ Virtual core keyboard                    id=3  [master keyboard (2)]
...(以下省略)

从中很容易看出触摸板及鼠标的名称,复制下其中要调整的鼠标名称,我这里就是“Bluetooth Laser Travel Mouse”。

3. 修改 xorg.conf,调整鼠标的按键映射表(Button Mapping)。按照 X.org 的规范,用户配置文件应该放置在 /etc/X11/xorg.conf.d(如果没有请自行创建)文件夹下。在此创建一个配置文件 20-xiaodu-mouse.conf 并使用以下内容(点此下载):

Section "InputClass"
 Identifier "Xiaodu @ Du9L.com - Logitech Mouse Mapping"
 MatchProduct "Bluetooth Laser Travel Mouse"
 MatchDevicePath  "/dev/input/event*"
 Option "ButtonMapping" "1 2 3 4 5 8 9"
EndSection

其中,MatchProduct 后面是第二步获得的设备名称,而 Option “ButtonMapping” 后面就是我们要修改的映射表。一般用户可以直接搜索 “设备名称 + ButtonMapping” 获得自己的设备对应的值,这里讲一下该值的意义及手动修改的方法。

首先,默认的映射为 1 2 3 4 5 … 32 -> 1 2 3 4 5 … 32 的一一对应,即按下 Button 1 时触发 Button 1 的功能,以此类推。我们要修改的是映射的右边,即按键的功能表。常用的 1 至 9 分别对应着:

1–鼠标左(主)键,2–鼠标中键(现代鼠标通常为滚轮按下),3–鼠标右(副)键,4–滚轮向上滚动,5–滚轮向下滚动,6–滚轮向左滚动,7–滚轮向右滚动,8–鼠标后退键,9–鼠标前进键。

其他 10 以上的值我不知道,网上也没有查到相关资料,欢迎补充。接下来我们就是要把刚才获得的 6 和 7 号按钮映射到 8 和 9 号功能,因此映射表就是:”1 2 3 4 5 8 9″。建议先使用 xinput –set-button-map …(具体语法 man xinput) 命令进行测试,确定功能没错再填入配置文件中。

4. 重启 X server ( kill -KILL `pgrep X` ) 并测试新配置是否生效。

 

参考资料:

1. Disabling the mouse scroll wheel … — KLUDGE-O-MATIC

2. Mouse button mapping — Ubuntu Forums (@jbg7474)

 

emlog 插件 — 自定义代码 (du9l_emlog_code)

这是我之前做的一个小插件,用于在 emlog 的钩子处插入 HTML 代码,可以用来放置自己的 JavaScript、统计和广告代码。

插件下载:更新官网插件地址(推荐)点击打开,更新百度网盘(推荐)点击打开,本地下载—点击这里下载 0.3版本,发布于2012年11月3日。

注意:1. 下载服务器有防盗链,请链接百度网盘或官网地址。
2. 插件没有提交 emlog 官方列表。请谨慎使用。
3. 下载使用表明您遵守 GNU GPLv3 授权协议。注:官网版本要求 GPLv2 协议,因此两个协议均可以接受。
4. 可以用于 PHP 5.2 以上环境,未使用 5.3 特性。

后台截图:

支持以下钩子处的代码插入(钩子描述来自 emlog 官方博客):

  • index_head:前台头部扩展:可以用于增加前台css样式、加载js等
  • index_footer:首页底部扩展点
  • index_loglist_top:日志列表顶部扩展点,如显示公告等
  • log_related:阅读日志页面扩展点,用于增加日志相关内容(暂不支持参数)
  • navbar:用于扩展导航条,例如相册插件会利用这个挂载点生成一个相册的导航链接
  • comment_reply:回复评论扩展点
  • rss_display:Rss输出扩展
  • diff_side:侧边栏控制扩展点

使用方法:在 emlog 后台插件中上传,成功后在左侧的 “自定义代码” 功能中,点击相应条目编辑并保存即可。支持(不过滤)HTML 且不支持(不会运行)PHP 代码。