一年多以前,我不再使用Linux作为我的主要桌面,因为我们使用的许多程序都依赖于Windows。尽管运行了coLinux,但我对设置从未完全满意。我错过了使用鼠标中键进行粘贴的机会,并且在PuTTY和Windows应用程序之间来回粘贴时,我经常遇到字符编码问题,无法在我的coLinux和Windows分区之间轻松访问邮件,总的来说,我觉得我正在失去一些东西通过不将本机linux环境作为我的主要操作系统来提高生产力。
上周,我们在工作中进行了基础架构更改,我基本上意识到我的Windows+coLinux设置会影响工作效率——而且,在这一点上,现在有Windows应用程序将我绑定到该操作系统.所以,我决定是时候回到Linux了。
在开始使用Zend之前,我使用Linux作为我的主要操作系统已有五年,并且使用过许多发行版:SuSE、Mandrake(当时还是Mandrake)、RedHat、Slackware、Debian、Gentoo和Ubuntu。都曾在我的机器上出现过。我非常喜欢Gentoo,但它在桌面上很痛苦,您可能需要每隔几个月或几年更频繁地升级一次。基于Debian的发行版是我最喜欢的台式机发行版,因为打包机制是一流的,而且它们往往有大量可用的开发人员包。所以,我决定再次使用Ubuntu,因为自从我上次使用它以来,我听说过关于他们的安装程序的好消息。我选择了最新的稳定版EdgyEft;由于FeistyFawn仍在孵化,我不想在人们完成软件包时冒着日常工作环境不稳定的风险。另一方面,我也想要一个合理的最新系统。由于Ubuntu致力于定期发布周期,我认为使用EdgyEft可以两全其美。
我没有失望。我在大约30分钟内安装了一个工作桌面,只需重新启动一次——这只是从liveCD进入实际安装的操作系统。更好的是:初始安装立即识别出我的所有硬件,包括内置无线硬件,这是我以前在任何Linux操作系统中从未体验过的。
也就是说,我需要纠正三个小问题:
- 我在编译任何东西时遇到了问题;我运行的每个配置脚本最终都会报告shell转义问题或其他相关错误。
- 我有一台带有“Trackpoint”鼠标的IBMT43Thinkpad笔记本电脑——基本上是“G”和“H”键之间的一个小操纵杆在空格键下方有鼠标按钮。在Windows上,您可以将鼠标中键用作滚轮锁定,从而可以使用鼠标滚动。此功能在Linux中未启用,而且我不确定如何启用它。
- Suspend和hibernate的行为非常时髦。基本上,恢复从未完全发生,恢复后我通常无法访问无线网络。
- 无法将麦克风静音。
幸运的是,我能够相对轻松地找到所有这三个问题的解决方案,我将在下面分享解决方案:
编译问题:shell转义
我总是手动编译apache和PHP,因为这样我就可以精确地控制我得到的东西。这很重要,因为它允许我在需要时拥有多个版本的PHP,每个版本都调整到不同的服务器。但是,当我尝试为其中任何一个运行配置脚本时,我收到一条错误消息,指出由于shell未正确转义字符,sed行为不正常。
我做了一些研究,发现一些帖子声称Ubuntu附带的bash版本有一个错误,唯一的办法是升级bash。当然,版本库中没有新版本,而且由于shell的问题,我无法编译更新的版本。
所以,我决定看看是否有另一个shell我可以符号链接/bin/sh
以便我可以重新编译bash。这就是问题所在:/bin/sh
被符号链接到/bin/dash
–debian和ubuntu使用的精简外壳。当我将它符号链接到/bin/bash
相反,所有的错误都消失了。
总结:如果您需要在Ubuntu上编译程序,请将/bin/sh
重新链接到/bin/bash
。
轨迹点使用
我找到了几个专门针对运行Linux的笔记本电脑的网站,还有一个专门针对运行Linux的ThinkPad的网站。他们每个人都建议我需要(a)重新编译X.org,和/或(b)添加内核级驱动程序。完成这些后,我就可以向我的X配置添加一些指令,以便启用我的滚轮按钮。
我不确定我在哪里找到这些指令,但我决定简单地尝试一下并重新启动X。它们在这里:
# In /etc/X11/xorg.conf: Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ExplorerPS/2" Option "ZAxisMapping" "4 5" Option "EmulateWheel" "on" Option "EmulateWheelButton" "2" Option "EmulateWheelInertia" "50" Option "EmulateWheelTimeOut" "200" Option "EmulateWheelClickToo" "true" Option "YAxisMapping" "4 5" Option "XAxisMapping" "6 7" EndSection
完成这些设置后,重新启动您的X服务器(Ctrl-Alt-Backspace
),您就可以开始工作了。我发现这实际上提供了比在Windows上更好的功能;我现在可以做所有的事情:
- 将第二个按钮用作滚轮锁,允许垂直滚动
- 也可以进行水平滚动(在Windows中永远做不到)
- 和将其用作鼠标中键,允许我粘贴X
暂停和休眠
正如我之前所说,当我恢复时,每一个都会导致奇怪的问题。小小的“睡眠”指示灯会不断闪烁,无线适配器永远不会工作,而且,如果我尝试连接我的vpn客户端,我的机器就会死机。而且挂起从未真正挂起机器;它会关闭显示器,但机器仍然充满电。这是一场噩梦。
我记得去年尝试过suspend2,但结果好坏参半。我决定再调查一下,看看这个项目是否已经成熟。起初我很失望,因为看起来我需要构建自己的内核,而且我不想做任何可能影响我工作能力的事情。然后我看到提到了“休眠”程序。
我快速搜索了apt存储库,发现它可用:
$ apt-cache search hibernate $ apt-get install hibernate
安装后,我还有一些配置要做。GNOME有一些用于电池/电源管理的实用程序,可以启动挂起和休眠,GDM当然也有。但是,它们与acpid进程交互。我需要弄清楚如何让acpid与休眠一起工作。
事实证明这很容易。首先,将/etc/acpi/sleep.sh
替换为以下内容:
#!/bin/sh /usr/sbin/hibernate --config-file=/etc/hibernate/ram.conf
将/etc/acpi/hibernate.sh
和/etc/acpi/powerbtn.sh
替换为:
#!/bin/bash # Skip if we're in the middle of resuming test -f /var/lock/acpisleep && exit 0 /usr/sbin/hibernate --config-file=/etc/hibernate/disk.conf
然而,这只是问题的一半;当我真正挂起、休眠和恢复时,无线适配器仍未自行启动。
hibernate
带有许多配置文件。一个叫做blacklisted-modules
。我在其中放置了以下内容:
ath_pci wlan_scan_sta wlan
我需要向/etc/hibernate/common.conf
添加一些额外的指令以使其正常工作,并使适配器关闭和启动:
# Unload and load modules from the blacklist. These were already set. UnloadBlacklistedModules yes LoadModules auto # Bring down and restart networking: DownInterfaces ath0 UpInterfaces ath0
很好的解决了无线网卡的问题。
由于我的机器配置,还有一些其他的/etc/hibernate/common.conf
指令我改变了:
# This is an IBM laptop, so turn this on: IbmAcpi yes # I use GNOME; lock the screen on resume: LockGnomeScreenSaver yes # I don't use vbe in my X configuration, so I turned these off: EnableVbetool no # And I wanted to display some messages: Xstatus gnome XSuspendText Preparing to suspend... XResumeText Resuming from suspend...
还有最后一期。您可能还记得之前关于VPN客户端的讨论。好吧,我发现当我从挂起或休眠状态恢复后尝试启动它时,我的机器会锁定。VPN客户端的工作方式是adaemon在机器启动时运行,加载内核模块;显然,从暂停状态恢复会导致某种问题。幸运的是,hibernate对此有一些指令,我将其添加到/etc/hibernate/common.conf
:
StopServices vpnclient_init StartServices vpnclient_init
StopServices停止位于/etc/init.d/
中的服务,就在挂起者休眠进程之前;StartServices做相反的事情。有了这些指令,一切对我来说都很完美。
将麦克风静音
我经常使用Skype,通常在会议中当其他人发言时我会将麦克风静音。一开始我找不到一种方法来轻松地做到这一点。
解决方案是您需要启用音量控制的一些额外属性。
首先,右键单击系统托盘中的音量控制小程序,然后选择“打开音量控制”。然后选择“编辑”菜单项,然后选择其下的“首选项”。您要选择“捕获”和“麦克风捕获”。选择这些后,关闭对话框。
您现在将在音量控制小程序中有一个“捕获”选项卡。它显示了一对标记为“捕获”的滑块;下面是一些图标,其中一个是麦克风。要使麦克风静音,请单击它;它上面的红色“X”表明它已被静音。再次单击它可取消麦克风静音。
总结
我现在拥有Windows的所有功能,而且还有一些。插入myflash驱动器会立即将其加载到桌面上,并打开一个Nautilus窗口。我有全系列的unix实用程序可用于我的所有文档。我已经安装了beagle,可以说,桌面搜索比使用Google桌面时更好。Xbindkeys允许我创建用于启动常用应用程序的热键。如果我愿意,我可以使用Gvim而不是vim,并且仍然可以访问其中的shell。邮件通知小程序允许我查询我的本地maildir存储以及gmail。我可以使用zenity和atd为自己创建警报。
我发现应用程序运行得更快。我一直在抱怨ZendStudio,它在Java上运行,它的运行速度比我运行过的Windows版本快得多——这意味着我实际上可以给它更多的东西,而不是粗略的尝试。
回到Linux真好!