跳至主要内容

博文

目前显示的是标签为“Linux”的博文

Fedora 40 on my old laptop

由于去年CentOS RIP的事情,很多企业都改用了另一种发行版。自用的一台老旧的MBP (2012年)已经很久没有更新了,干脆装了Fedora Linux。 时隔多年又安装Fedora,实际上是去年底就用了38,中间升级到了39但是年初的时候不知为何kernel出了问题,grub也没法回退到可用的状态。前几周有时间干脆完全重装了Fedora 40。还刚好试了试 [Ventoy](https://www.ventoy.net/) 的 Multi ISO files 特性,挺好。 ## 已解决的配置 1. Yakuake terminal 习惯了使用快捷键来触发下拉式命令窗口,参考[搜索结果](https://fedoramagazine.org/use-a-drop-down-terminal-for-fast-commands-in-fedora/)试了试 Yakuake 还不错。它还是基于 Kconsole 的,用户不需要做太多改动,直接就可以上手。 2. 倒腾 Git Repo 遇到了小问题 为了速度转移一些 Git Projects,没有逐个 clone,而是直接从另一台笔记本弄了 tar.gz 过去。不知道是不是 MacOS 自带的 tar 命令与 GNU 的水土不服,过去之后,除了一致的额外隐藏文件 (ie .DS_Store) 居然Git还报了另一种问题 “index file is too small”! 仔细查找后总算是找到了[解决方法](https://joemaller.com/1283/git-error-index-file-is-too-small/)。 ``` git config repack.usedeletabaoffset false git repack -a -d ``` 3. 安装一些趁手的工具 `dnf install exa bat ripgrep fzf pass` 配上已有的 dot files 基本解决了问题。这套配置在 MacOS 和 Linux 差别度不大。 4. 外接显示器分辨率的设置 不知为何,外接显示器居然找不到应有的 ratio。参考[一篇博客文章](https://www.wenjinyu.me/solve-the-problem-of-gnome-des...

Archlinux Desktop Setup - Bumblebee issue caused by NVIDIA driver

不知道何时起,我的老 Dell 笔记本上的 Bumblebee service 就停止工作了。想要跑个 `optirun glxgears -info` 居然提示说 Bumblebee 服务没有启动…… 找到以前的blog以及Arch的wiki仔细研究了一下,发现大概是曾经安装的nvidia驱动在某次系统更新后就出问题了。按照 [这个人的说法](https://www.reddit.com/r/archlinux/comments/a5nw93/cant_find_nvidia_module_when_doing_modprobe_nvidia/),我又回到wiki里面仔细对比了自己的设备型号,发现貌似不应该安装 `nvidia-390xx`: > For GeForce 400/500/600 series cards [NVCx and NVDx] from around 2010-2011, > install the nvidia-390xx-dkmsAUR package. 于是抱着试一试的心态,重新安装了这个包,中间自然将原本的那个 package 给删除了: ➜ ~ yay -S nvidia-390xx-dkms :: Checking for conflicts... :: Checking for inner conflicts... ==> Package conflicts found: -> Installing nvidia-390xx-dkms will remove: nvidia-390xx ==> Conflicting packages will have to be confirmed manually [Repo: 1] dkms-2.8.1-3 [Aur: 1] nvidia-390xx-390.132-37 (nvidia-390xx-dkms) :: Downloaded PKGBUILD (1/1): nvidia-390xx (nvidia-390xx-dkms) 1 nvidia-390xx (nvidia-390xx-dkms) (Build Files E...

Spotify 和 Amazon Music 的服务试用小结

最近两个月在对比 Amazon 的 Unlimited Music Service 和 Spotify。 之前买了一对 Echo Dot 小音箱,可以通过蓝牙连接作为播放音箱,更秒的是可以通过 Alexa 声控。另外,台式机的桌面上还藏着一枚不起眼但是音质很过瘾的 Sony SRS ZR7,它可以支持 Chrome Cast 以及 WIFI 连接。所以主要是针对这两种不同类的音箱。 巧的是,Amazon和Spotify都提供了差不多一个月的免费试用期,于是在电脑、手机上都安装了两家的播放器,有空就放来听听。最后体验下来 Spotify 取得了压倒性的胜利: 1. 播放软件的操控性极佳 Spotify 为每个用户提供一个“唯一”的播放队列,当你正在聆听手机上播放的歌曲时,如果通过电脑切换到 WIFI 音箱播放,那么切换的过程是非常顺的——手机上声音停止,电脑里的播放器看得到正在转到新的目标播放器,短暂停顿之后在音箱里就继续播放了。 坦白说一开始我对于这个“唯一的播放队列”有点不太适应,还想着应该每个终端都有一个当前播放的列表。但是使用了几天之后立即适应了这个模型,觉得操作也非常直观。Amazon 的播放器貌似就没有这种顺滑的操作体验,基本上不同终端之间几乎是互不可见的状态…… 2. 平台支持超级丰富 无论是哪一个终端设备都有支持,iphone、android,Web 界面,在到传统的台式机领域——从 Windows 到 MacOS,甚至到 Linux 都有播放器可以安装!而 Amazon 的 Music 在手机和 Windows 上都有,主要是因为在 Android 和 Windows 的体验都不乍的,别的平台我后来都没有兴趣去仔细找。 3. 价格也差不多 二者在土澳的价格差不多都是 `11.99/month`,不过 Echo 设备可以订阅量身定制的简约套餐,大概是 5/month 左右吧。可惜由于上面的对比,就失去了性价比。 客观的说,Spotify 也不是一个缺点都没有—— Echo 设备可以播放 Spotify,可是 Alexa 的整合程度不高,我可以说歌手名或是歌曲名,可以 "Play Next",别的貌似就没了……对比之下,Echo 播放 Amazon Music 的整合优势是相当明...

Archlinux Desktop Setup - Bumblebee to bridge IGA and NVIDIA

不满足于新安装的 Archlinux/Xfce4 里面仅能使用 Intel 的集成显卡,于是开始折腾如何启用 Nvidia 的独立显卡,我的这台老本本里带的是 GeForce GT500M。 先是卸载了之前误装的 nouveau,不过它的wiki相当不错,配套的 [freedesktop.org 页面](https://nouveau.freedesktop.org/wiki/CodeNames/#NVC0) 提供了完整的 Code Names,我的 GT500M 属于 NVC0 Family (Fermi 架构) 的 `NVD9 (GF119)` 。 在 Nvidia 的官网页面上 [Legacy Driver](https://www.nvidia.com/object/IO_32667.html) 里面可以看到 `390.xx Driver` 可以支持这款显卡。[Archlinux Nvidia 的 wiki](https://wiki.archlinux.org/index.php/NVIDIA#Minimal_configuration) 上也写得很清楚: > For GeForce 400/500 series cards [NVCx and NVDx] from around 2010-2011, install the nvidia-390xx or nvidia-390xx-lts package. 于是执行最简步骤,顺利地安装了以下packages: yay -S xf86-video-intel yay -S mesa xf86-input-mouse xf86-input-evdev xf86-input-keyboard yay -S nvidia-390xx nvidia-390xx-utils 接着安装 [“大黄蜂” 【bumblebee】](https://wiki.archlinux.org/index.php/Bumblebee),它是相当于 Nvidia Optimus 的一种技术,针对笔记本电脑的显卡切换提供无缝的支持,大多数情况下使用 Intel 的集成显卡来渲染,当需要的时候(例如游戏或是OpenGL调用)可以切换为 NVIDIA 独立显卡提供高帧率的渲染。 早期的计算机不具...

Archlinux Desktop Setup - Clock Timezone and System Time

安装好 XFCE4 之后,桌面的右上角有desktop panel,也有clock,wifi和power的托盘图标等。 结果发现clock显示的时间居然不是按照当前的时区来的,尽管我已经做好了 `/etc/localtime` 的软连接到 `/usr/share/zoneinfo` 下面的时区文件。 后来查了查和clock有关的资料,发现这些小widget都是配置在 `~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml` 里面的。在其中查找关键字 "clock" 就可以定位到对应的 `plugin` 的 id。 在我的桌面下,clock对应的是 `plugin-5`。于是可以执行 `xfconf-query -c xfce4-panel --list | grep plugin-5` 来列举所有与这个空间相关的配置项。结果意外的发现居然没有显式配置。 参考 [这篇BBS的讨论](https://bbs.archlinux.org/viewtopic.php?id=233651), <property name="plugin-5" type="string" value="clock"> <property name="timezone" type="string" value="EST"/> <property name="mode" type="uint" value="2"/> <property name="show-military" type="bool" value="false"/> <property name="show-seconds" type="bool" value="true"/> <pro...

Archlinux Desktop Setup - XFCE4

安装 Desktop 是很方便的, 1. `sudo pacman -S xorg-server xorg-xinit xterm` 2. `sudo pacman -S xfce4 xfce4-goodies` 可以先尝试进入 X 系统,再进入 XFCE: 3. `exec startx` 4. `exec startxfce4` 然后开始解决没有声音的问题,可以安装以下的包,并为系统添加一个可以调节音量的控件: 5. `sudo pacman -S alsa-utils pulseaudio pulseaudio-alsa` 6. `sudo pacman -S pavucontrol` 针对 Desktop 显示中文方框的问题,需要安装几个字体,包括 `ttf-dejavu`、 `ttf-droid` 和 `wqy-microhei`、 `wqy-zenhei` 等。 如果喜欢使用中文界面,可以在 `/etc/xprofile` 中 `export LANG=zh_CN.UTF-8`,重启之后可以看到所有菜单都已经是熟悉的中文了。 搞定桌面之后可以安装一个 Desktop Display Manager,例如 `sddm`。 > Simple Desktop Display Manager (SDDM) 是用于X11和wayland视窗系统的显示管理器(图形登录界面)。 > SDDM 使用C++11重写并且支持通过 QML 改变主题。它是KDM的接替者并且与 KDE Frameworks 5, > KDE Plasma 5 和 KDE Applications 5协同使用。 启用服务 `sudo systemctl enable sddm.service`。这样下一次登录就直接进入GUI模式而不再是console。

ArchLinux in Laptop - Dual OS Boot

手头有一台老笔记本,是2013年买的 Dell XPS14z。去年为她更换过 SSD ,将老的光驱拆了下来挂上了原本的 HDD。这样一共有`700+ GB` 的磁盘空间。去年更新了硬件之后也重灌了 Windows 10系统,时常更新,到目前位置体验都还不错。今天忽然心血来潮,想要做双系统——除了 Win10之外再弄一个 Linux。 14-16年之间在公司的机器上用 Virtualbox安装了 ArchLinux 作为开发环境,Desktop Manager 用的是 XFCE,体验挺不错,因此这次依旧想要使用这套配置。 于是先在 Windows 的 `compmgmt.msc` 里将磁盘卷压缩了一下,SSD 分出了80GB;HDD 上分出了23GB 。然后做了一个 ArchLinux 20190401 ISO 的优盘。Windows 电源选项里取消了关机的快速选项,然后重启,按 F12 到 boot options里面选择优盘进入。 以前在 VirtualBox 里只是一个 partition 挂载为 root(`/`)。这次稍微特殊化了一下,将分区做的多了几个: * `/usr` 推荐大小为12GB - 20GB * `/var` 推荐大小为10GB 左右 * `/home` 自行估计大小 * `/boot` 建议至少 100MB,如果考虑多内核的话,可以到300MB 左右。 用 `fdisk` 分了这几个 partitions,SSD 由于之前已经是4个 primary 所以不能直接 (n)ew,必须先 (d)elete 再创建一个 (e)xtensive 作为容器,在其中可以创建多个 logical partitions。 * `/dev/sda5` (extensive & container, total size 80GB) * `/dev/sda6` (for boot partition, 320MB) * `/dev/sda7` (for root partition, 50GB) * `/dev/sda8` (for usr partition, 18GB) * `/dev/sda9` (for var partition, 12GB) * `/dev/sdb3` (extensive & cont...

Archlinux in Virtualbox - Basic system

参考 [Josh Braun 的博客](http://wideaperture.net/blog/?p=3851) 来在 VirtualBox 上安装 Arch Linux。 ## 准备磁盘 使用 VirtualBox 来创建虚拟机的第一件事就是挂载一块虚拟磁盘和一张 Linux 发行版的 ISO 文件。为这块虚拟磁盘划分空间并格式化存储区很自然就成为了第一道坎。 先根据磁盘的总大小做规划,例如,我的虚拟磁盘一共是 16GB,被划分为这么几个分区: + Boot loader partition BIOS启动的时候需要查找一些程序用于计算机自举。Boot loader partition 就是存放这类程序的地方。通常BIOS会在 MBR (Master Boot Record) 查找boot loader,MBR 是在驱动器开始处的一块小区域。 + /boot partition lilo 和 grub 都是 boot loader,后者比较大一些。BIOS 在找到这块区域之后,会读入一些代码,继而从磁盘分区(通常是 `/boot` 分区)内读入更多的代码。 + root partition 这就是最基本的 `/` 分区,如果不特别创建 `/var`、`/usr` 或是 `/home` 等挂载点的话,大部分文件都是存放在这个分区内的。 ## 分区 使用 `gdisk` 来创建新的 partition tables, + `?` - print the help information + `l` - list all types + `n` - create a new partition, required arguments include partition number, first sector, last sector and hex code for type + `w` - write the partition tables to disk 可以参考[这里](http://www.taylorbyte.com/docs/wiki/archlinux/arch-install-gpt-ssd) /dev/sda 12G sda1 16MB for boot loader...

My CentOS in VirtualBox

1. Install JDK8 on CentOS - follow [this post](http://www.if-not-true-then-false.com/2014/install-oracle-java-8-on-fedora-centos-rhel/) 2. Download Scala from [Scala-lang.org](http://www.scala-lang.org/download/), and run the following commands tar xvf scala-2.11.5.tgz sudo mv ~/Downloads/scala-2.11.5 /usr/scala/ sudo ln -s /usr/scala/scala-2.11.5 /usr/scala/latest sudo alternatives --install /usr/bin/scala scala /usr/scala/latest/bin/scala 100 sudo alternatives --install /usr/bin/scalac scalac /usr/scala/latest/bin/scalac 100 sudo alternatives --install /usr/bin/scalap scalap /usr/scala/latest/bin/scalap 100

Paths in Linux

无意中找到的一个帖子,讲的是Linux系统中[几个 PATH 的区别](http://unix.stackexchange.com/questions/8656/usr-bin-vs-usr-local-bin-on-linux). 1. `/bin` (and `/sbin`) were intended for programs that needed to be on a small `/` partition before the larger `/usr`, etc. partitions were mounted. These days, it mostly serves as a standard location for key programs like `/bin/sh`, although the original intent may still be relevant for e.g. installations on small embedded devices. 2. `/sbin`, as distinct from `/bin`, is for system management programs (not normally used by ordinary users) needed before `/usr` is mounted. 3. `/usr/bin` is for distribution-managed normal user programs. 4. There is a `/usr/sbin` with the same relationship to `/usr/bin` as `/sbin` has to `/bin`. 5. `/usr/local/bin` is for normal user programs not managed by the distribution package manager, e.g. locally compiled packages. You should not install them into `/usr/bin` because future distribution upgrades may modify or delete them withou...

改写一段自启动服务的脚本

用了一年多的Ubuntu,平时写脚本读脚本渐渐的已经习惯了Debian风格的函数调用,最近因为工作需要,在Fedora服务器上要加入一个自启动服务,花了两天时间重写一段脚本。po上来以备有相同需要的筒子参考。 无论是在Ubuntu还是Fedora下面,我用的shell都是bash,所以基本的命令都是想通的。只是在/etc/init.d里面有几个函数族不太一样。以下先将最终写好的Fedora脚本贴出来,然后再罗嗦几句…… # !/bin/bash # # chkcofig: 35 -80 50 # Description: Company Application Server Implementation # # Check the privilege if [ `id -u` -ne 0 ]; then echo "You need root privileges to run this script" exit 1 fi # Source function library. . /etc/init.d/functions . /lib/lsb/init-functions # Configurations (could be defined in /etc/sysconfig/mvas) APP_NAME=mvas PID_FILE=/var/run/${APP_NAME}.pid LOCK_FILE=/var/lock/subsys/${APP_NAME} CATALINA_HOME=/usr/share/tomcat5 APPSERVER_HOME=${MVAS_HOME-/etc/comp/privaty} pidof_mvas() { local pids=`pidof /usr/bin/java` echo "pid = $pids" for ii in $pids; do echo "testing $ii " if [ -d /proc/$ii ]; then hit=`ps ax | grep $ii | grep appsrv\/conf` [ -n "$hi...

Living in Hardy Heron (5)

新大陆 神说,天下的水要聚在一处,使旱地露出来。事就这样成了。 神称旱地为地,称水的聚处为海。神看是好的。 神说,地要发生青草,和结种子的菜蔬,并结果子的树木,各从其类,果子都包着核。事就这样成了。 于是地发生了青草,和结种子的菜蔬,各从其类,并结果子的树木,各从其类,果子都包着核。神看着是好的。 有晚上,有早晨,是第三日。 Eclipse开发平台对于绝大多数Java程序员来说是必不可少的(华丽的忽视JBuilder的拥蹙…… :P)。对于已经安装好了Sun-JDK或是IBM-JDK的筒子而言,这个安装过程简单的可以——下载、解压缩、创建桌面链接(即对应于Windows下的快捷方式)。创建快捷方式只要先在GNOME的目录中新建一个eclipse.desktop文件,然后输入如下内容(这里懒人J的eclipse是解压缩在/opt/eclipse目录中): [Desktop Entry] Encoding=UTF-8 Name=Eclipse 3.4 Comment=Eclipse IDE V3.4 Exec=eclipse Icon=/opt/eclipse/icon.xpm Terminal=false Type=Application Categories=GNOME;Application;Development; StartupNotify=true 可惜,对于偶的系统(Ubuntu 8.04 AMD64bit)来说,eclipse有一个致命的问题——在运行时会突然莫名地crash!!查了不少帖子之后终于找到了解决方法,貌似是Eclipse在AMD64位平台上必须屏蔽掉一处JDK对于编译器的优化。我dump了crash的log(一般出现在$HOME目录中,名字是类似于hs_err_pidXXXXX.log,这里XXXXX就是刚刚crash掉的eclipse的进程标识数),其中可以找到这样的蛛丝马迹—— Current CompileTask: C2:2717      org.eclipse.core.internal.dtree.DataTreeNode.forwardDeltaWith([Lorg/eclipse/core/internal/dtree/AbstractDataTreeNode;[Lorg/eclips...

Living in Hardy Heron (4)

美丽苍穹 神说:诸水之间要有空气,将水分为上下。 神造了苍穹,把苍穹之下的水和苍穹以上的水分开了。 神称苍穹为天。 有晚上,有早晨,这是第二日。 刚安装好的Ubuntu的界面是以橘黄色作为基调的,8.04里的默认壁纸是一只抽象的鹭(对,就是代码名字Hardy Heron里说的爱吃青蛙的Heron,一开始我还以为是鹤,不过Crane一般都是白色的……)默认的简体中文字体是文泉驿。老实说,整体看来界面还是有不小的改进空间的。不过不要紧,已经有很多老鸟为我们指明了方向——使用更为漂亮的商业字体(当然少不了从盖茨大叔留下的那家大公司里面“搬”出来的),还有更绚的3D引擎来美化工作空间。毕竟如果要以Ubuntu作为日常使用的操作系统的话,将整个UI做个养眼的美容还是很有必要的。 字体方面,可以下载微软雅黑和苹果的LiHeiPro字体文件。二者都是TTF字体,使用方法如下: # Goto the system folder where the fonts are stored cd /usr/share/fonts # Make dirs for the new fonts cd ./truetypes sudo mkdir ttf-msyh/ ttf-liheipro/ # Copy the fonts into the new folder and make sure they have proper permissions cd ttf-msyh/ sudo cp ~/downloads/msyh*.ttf . sudo chown root:root *.ttf sudo chmod 644 *.ttf # And generate the scales and dirs configuration sudo mkfontscale sudo mkfontdir # Finally, after both fonts are done, we fresh the system cache of fonts # the command fc-cache is called, with options to force refresh, and # write verbose output to console. sudo fc-cache -fv 安装完字体文件之后,具体...

Living in Hardy Heron (3)

创世纪 神说,要有光,于是就有了光。 神看光是好的,于是就把光暗分开了。 神称光为昼,称暗为夜。有晚上,有早晨,这是头一日。 在Ubuntu Live DVD安装完毕之后,马不停蹄地继续安装必备的系统软件。众所周知,在Linux系统下,即便有了Debian一族的dpkg、apt-get,或是Fedora/Redhat所打造的rpm、yum,软件还是有无法安装的可能。开放源代码的好处就是source code compilation,这才是王道~ 默认的情况下,基本的内核源代码和编译工具是不被安装的。所以必须使用apt-get直接安装: sudo apt-get install build-essential automake linux-headers-`uname -r` 这里linux-header-`uname -r`的uname -r是获取系统的内核版本号。虽然并不经常用到,不过在这个时候``命令还是非常很有用的。 有了基于C/C++构建的编译系统,当然也不能缺少跨平台的Java。由于版权原因,linux下默认提供的java实现并不是Sun的java实现,而是OpenJDK。安装Sun的JDK需要自行到”升阳“的站点去下载bin文件。而我一直偏爱IBM的JDK,以前在Windows下作class obfuscation的时候就发现Sun出品的JDK的性能的确要稍逊IBM一筹。同样的,如果要使用IBM的JDK,也需要自行下载。下载的地址就不多写了,google一下就有了,重要的是看清32bit还是64bit再下载。 chmod +x sun-java-1.6.0r6.bin . sun-java-1.6.0r6.bin 安装后实际上就是解压缩一个目录出来,需要移动到系统的jvm目录中。 sudo mv -t /usr/lib/jvm/ ~/java-6-sun-1.6.0.06/ sudo mv -t /usr/lib/jvm/ ~/ibm-java-x86_64-60 sudo update-alternatives --config java 最后的这个命令是用于设定默认的JDK。当然,手动修改文件/etc/jvm也是可以的。 参考资料 APT/YUM Server 出自鸟哥的私房菜 OpenJDK Project in java.net

Ubuntu下的nvidia硬件加速

在老PC里装上Ubuntu 7.10已经有一段日子了,平时上班主要用ACER的laptop,回家有时候开着PC下aMule或是Azureus。本来也曾经试着用PC来看片,可惜有时候CPU占用率偏高,遇到解码率较高的片子,如HD的片子就会卡…… 今晚在google是否有linux的土豆加速器版本,无意中看见了一个安装nvidia驱动的帖子——打开菜单『系统』|『系统管理』|『受限驱动管理器』,启用nvidia驱动程序即可。打开了nvidia驱动之后的视频果然强悍了不少:Firefox里头的控件多了shade;Flash看土豆的CPU使用率降低了不少;整个desktop的view变得更细致了,估计是抗锯齿打开了的好处。 看来以后买硬件还是大牌比较好,至少linux下面驱动的支持找得到~

File Mode in Linux (1)

Linux中的文件具有三种访问权限:read(读)、write(写)和execute(执行)。每一个文件都属于一个指定的user(用户)和group(群组)。对于文件访问的控制是依据user、group和other来分开定义的。所谓的other,指的是既不是拥有该文件的用户(owner),也不是属于拥有该文件的群组的用户。 使用命令 ls -l 可以列出文件的长列表,在有的linux主机上,定义了该命令的alias别名为ll。其中以10个字符来标记一个文件的类型和权限——drwxrwxrwx。其中,第一个字符标识的是文件的类型,如d表示目录,-表示普通文件,c表示字符设备,b表示块设备,l表示符号链接,p表示管道文件,s表示套接字文件等;后面的九个字符每三个为一组,一次表示owner、group和other的权限;每一组的三个字符又一次表示read、write和execute的权限。此外,s表示setuid,该标志位仅对可执行的文件有效。如果ll命令显示的权限中有'-',则表示对应该位的权限没有被授予。 提到文件的权限,就必须要说到chmod。这个命令就是用于改变一个文件的模式(change mode)的。具体的用法参考man chmod,这里只介绍几个常见的用法: chmod g+x [filename] # grant the Execute privilege to Group chmod g+s [filename] # set the group id to the executable file chmod 755 [filename] # set the mode as rwxr-xr-x

在Fedora下自动挂载移动硬盘

(一)从Mount到fstab 最早使用Linux的时候,我遇 到的第一个难题就是如何将Windows下的硬盘分区挂载到Linux中。当时用的是mount。指定了文件系统 vfat,字符编码codepage=936等参数之后,mount一下就ok了。不过偶是个懒人,所以不情愿每次进入系统都输入一遍命令(不过必须承 认,对于当时还是个新手的偶而言,多用几次命令行还是很有好处的 ^_^ )。 Google之后了解到 /etc/fstab 文件的好处。Linux中/etc目录下的fstab文件是一个文件系统表 (File System Table file ),它维护着mount point条目。这些条目是根据HAL事件自动增添或是删除的──fstab文件不是指望靠用户手动修改的,有个程序 fstab-sync 可以自动修改fstab文件。当系统的HAL服务启动之后,上一次增加的所有条目都会被删除,而后根据需要,fstab-sync 会被调用若干次,加入合适的条目。 (二)fstab-sync和policy 了解到了这里,就要知道fstab-sync是如何知道应该增添什么条目的? # man fstab-sync 文 档说主要是参考storage.policy和volume.policy的属性。缺省的属性是存放在系统配置文件中的,在偶的Fedora 4系统中,放在 /usr/share/hal/fdi/policy/10osvendor/10-storage-policy.fdi里面。别心急修改──这个文件 是osvendor提供的,在升级的时候可能会被更新,正确的作法是在policy目录中放入单独的文件,例如,为了自动挂载移动硬盘,我新建了文件: /usr/share/hal/fdi/policy/95user.fdi。 以下是这个fdi文件的内容: <?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --> <deviceinfo version="0.2">  <device>   <match key="@block.storage_device:storage.remo...

心机

陪伴了偶四年多的手机坏了,上周末到美罗城精心挑选了半天,最后将Moto ROKR E2带回了家。四年前选择手机的时候,对于各式各样不同功能、型号的手机是完全没有概念的,更不用说广告里面一排一排的参数了。如今,由于从事的工作就是和手机打交道,而且公司里几乎有市面上所有百宝箱支持的Java手机,所以认知程度不可同日而语。连续2周,偶一直都在研究手机,打算把个人经验记录一下,于是就有了几篇小结。 标题取为“心机”,是因为移动的这个广告太寒…… 因此偶也乱写一记,当做饭后8g。 购买前的选择 这次选择机型时候,首先考虑了以下几个因素: (一)类别:智能机或是半智能机 不选择非智能机的原因在于工作需要,Nokia S40系列基本上性能都比较稳定,可惜缺乏扩展性。目前市场上最多的就是Symbian, Windows Mobile和Linux三个平台的智能手机。 Symbian,包括UIQ主要使用在Nokia S60系统和SE的中高端手机上,早期的Symbian系统是很不错的,稳定简洁,不过现在的Symbian为了支持各种各样的设备,提供越来越多的花哨功能,所以稳定性不够。 Windows Mobile的主要供货商则是多普达,以及Sharp和国内品牌的部分机型。Windows Mobile主要分为Smart Phone和Pocket PC两类,前者使用键盘操作而后者是触摸屏系列。目前市面上能见到的应该是Windows Mobile 5.0的机器,6.0的样机貌似只有内部机型,没有上市。和PC平台一样,手机的硬件配置都不错,可惜价格太高。 Linux基本上是Motorola主推,当然国内厂商也有自己研发的,不过那种质量就避而不谈了。Moto在2006年在中国连续发布了4款基于Linux操作系统的手机,像是“明”——A1200,ROKR E6等,都是触摸屏系列,惟独ROKR E2是非触屏的,深得我心。 :) (二)品牌:Nokia, Motorola和SonyEricsson 日韩的手机像是NEC和Samsung从一开始就不在候选之列,一小部分是因为排日情绪,使用感受不佳是重要原因。说实话,我不知道为啥那么多小姑娘“稀饭”三星的机子,使用习惯就不够人性化,而且大概自己对JVM部分的要求太高,感觉三星中低端的手机(如E108,E708等)在运行Java程序的时候效率是令我非常无语的,...