[KDE] FAT32ファイルシステムをログイン時に自動マウントする

2008/09/20PC::Linux/BSD

X41のWindows XP領域とKubuntu領域両方で利用できるストレージとして、FAT32ファイルシステムのパーティションを用意しています。が、Kubuntuから自動マウントさせても所有者がrootとなってしまうため、root以外のユーザが自由にファイル等を書き込むことに制限が生じてしまっています。それを解決したときのメモ。

環境

  • Kubuntu 8.04.1 日本語ローカライズド
  • FAT32共有領域: /dev/sda8
  • マウントポイント: /mnt/fat32

自動マウントできるようになるまで

UUIDを調べる

/etc/fstabで上記のFAT32共有領域を指定するためにUUIDを調べます。
以下は/dev/sda8のUUIDを調べる場合は以下の通り。

$ ls -la /dev/disk/by-uuid | grep sda8

その他、tune2fs, blkid, vol_idなどの方法で調べることが出来るようです。→ubulog: UUIDを調べる方法

/etc/fstabの編集

一般ユーザでも書込権限付きでマウントできるように/dev/sda8を編集する

# /dev/sda8
<file system>        <mount point> <type> <options>                                           <dump> <pass>
UUID=調べたsda8のUUID  /mnt/fat32  vfat user,rw,noauto,exec,codepage=932,iocharset=utf8        0       0

これで、任意のユーザで書込権限付きでマウントするための準備が整いました。

自動マウントする

KDE環境ではログイン時に~/.kde/Autostart/以下に配置したスクリプト等を自動実行してくれるので、ここに以下の様なシェルスクリプトを作成します。

#!/bin/sh
mount /mnt/fat32

シェルスクリプトの名前は自由なので、自分がわかりやすい名前をつけるといいでしょう。*1シェルスクリプトを作成したら実行権限を付けることを忘れないで下さい。

$ chmod 755 ./automount.sh

*1 : ちなみに、かえでは"automount.sh"としています

参考

LinuxにおけるFAT32フォーマットの方法

2008/09/12PC::Linux/BSD

Linuxであっても、リムーバブルメディアの類を利用する場合はFAT/FAT32のフォーマットを行う必要があります*1。その際のメモ。

*1 : 理想を言えば、ジャーナリングを採用したファイルシステム(NTFS/ext3等)を用いたいところである。が、NTFSはMSが詳細仕様を公開していないためにLinuxの読み書きは危険とされており、筆者のようなLinux環境をメインで使用する場合には推奨されない。一方、ext3などのファイルシステムでは世の大半を占めるWindows環境では標準で読み込むことが出来ない。このため、仕方なくFAT32で運用している。MSは仕様を公開しるー。FAT32じゃファイルが壊れやすいんじゃー

環境

OS
Kubuntu 8.04.1 日本語ローカライズド
リムーバブルメディア
SONY POCKETBIT (8GB)*2

POCKETBIT (8GB)の詳細

$ sudo fdisk /dev/sde
コマンド (m でヘルプ): p

Disk /dev/sde: 8119 MB, 8119648256 bytes
250 heads, 62 sectors/track, 1023 cylinders
Units = シリンダ数 of 15500 * 512 = 7936000 bytes
Disk identifier: 0x********

*2 : 容量と値段に惹かれて購入したUSBメモリ。同一の価格で東芝製のものがあったのだが、デザインで選んでしまい今非常に後悔している。その一番の理由が読み書きのパフォーマンスが非常に悪い。せっかくある8GBの領域のほとんどが無駄となってしまっている。ReadyBoost対応を謳っている東芝製ならこんな事にはならなかっただろう(TT) もう二度とSONYのUSBメモリには手を出しません

作ってみる

1. パーティション分割

まずはパーティション分割から。通常、市販のUSBメモリなどを購入した場合は基本パーティションが1つだけあるような状態となっているはずですので、特に問題がない場合はそのまま運用します。

ちなみにWindowsではUSBメモリのパーティションを分割することは出来ませんが、Linuxのfdiskでは通常のディスクと同じように扱うことが可能です。

2. 領域タイプの設定

以下の様な場合を例とする

デバイス Boot      Start         End      Blocks   Id  System
/dev/sde1               1        1023     7928219   83  Linux

fdiskでパーティションを分割したときの新規パーティションの領域タイプは0x83(Linux)となる。このため、今回の様にFAT32でフォーマットし運用する場合はこの領域タイプを変更する必要がある。

FAT32を表す領域タイプとして0x0B(FAT32)、0x0C(FAT32 (LBA))がある。これらの使い分けは以下の通り。

0x0B (FAT32)
パーティションの終了シリンダが1023、ディスクの先頭から8GBまでの領域にパーティションが収まる場合に利用してもよい。
0x0C (FAT32 (LBA))
LBA対応版。パーティションが終了シリンダが1023を超える場合にこちらを利用する。

3. フォーマット

実際にmkfsコマンドを利用してフォーマットする。

$ sudo mkfs.vfat -v -c -F 32 /dev/sde1

後はまったりとフォーマットが完了するまで待つだけです。

オプションの解説
-v
詳細な進捗を表示
-c
不良ブロックの精査を行う
-F 32
FAT32形式でのフォーマットの指定。-FだとFAT(16)となる。

参考

VMware Toolsのインストール @ Ubuntu 8.04 (Hardy) VM

2008/09/10PC::VMware

UbuntuのリポジトリにはVMware Toolsのパッケージが用意されているので、Debian VMにVMware Toolsをインストールする方法ではなく、aptで導入する方法が楽です。

導入するパッケージは以下の通り。

  • open-vm-tools
  • open-vm-tools-gui

導入するだけでVMware Toolsの基本機能及び、ゲストOSのウィンドウサイズへの追従などが自動的に有効になります。

動作確認環境

VMware環境
VMware Server 1.0.6
仮想マシンOS
Kubuntu 8.04.1 日本語ローカライズド

[Kubuntu/Ubuntu] VMware ServerでUSB機器を利用する

2008/08/31PC::VMware

Debianのサーバだけではなく、KubuntuのメインマシンにもVMware Serverを導入しているのだが、KubuntuマシンではどういうわけかUSBが利用できなかったので調べてみた。

環境

VMware Server環境1
Debian GNU/Linux 4.0(etch)
VMware Server環境2
Kubuntu 8.04.1 (Hardy Heron)
VMware Server
1.0.6
VMware Server Console
1.0.6

VMware ServerにおけるUSBデバイスの検出

VMware ServerはホストにUSBデバイス接続された際に、/proc/bus/usb/以下にUSBデバイスファイル*1が作成されることを期待しているようです。Debian etchではVMware Serverが期待するように/proc/bus/usb/以下にデバイスファイルが生成されますが、Kubuntuでは/dev/bus/usb/以下にデバイスファイルが生成され、/proc/bus/usb/以下には生成されません。このため、KubuntuをホストOSとする場合にVMware ServerはUSBデバイスを検出できず、結果としてゲストOSでUSBデバイスを利用できないということが起こっています。

*1 : 正式名称は何というのでしょうか?

解決策

/etc/init.d/mountdevsubfs.shを編集することで、/proc/bus/usb/以下にUSBデバイスファイル?が作成されるようにします。

#
# Magic to make /proc/bus/usb work
#
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount --rbind /dev/bus/usb /proc/bus/usb

上記部分のコメントを外す。

#
# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount --rbind /dev/bus/usb /proc/bus/usb

編集後に以下のコマンドを実行

$ sudo /etc/init.d/mountdevsubfs.sh

これでVMware Server Consoleで接続するとUSBデバイスが利用できるようになっているはずです。

参考

2008/08/30(土)Intel PRO/1000 CT Desktop Adapter

現在Kubuntuを導入し、メインマシンとして利用しているIntelliStation M Pro (6230)にはIntel PRO/1000CT Desktop Adapterがオンボードで実装されています。このIntel PRO/1000CT Desktop Adapterはその名の通り10BASE-T/100BASE-TX/1000BASE-Tとして利用できるのですが、どういうわけか最近GbEでリンクしなくなってしまい、100Mbps接続しか利用できなくなってしまっていました。

Intel PRO/1000CT Desktop Adapterに関連するdmesgは以下の通り。

kaede@reika:~$ dmesg | grep eth0
[   67.532079] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[   82.032159] e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
[   94.254838] bridge-eth0: enabling the bridge
[   94.254845] bridge-eth0: up
[   94.254848] bridge-eth0: already up
[   94.254852] bridge-eth0: attached

問題の切り分け

ネットワークの問題ですので、OSI参照モデルの下位層から順に調べていきます。

レイヤ1 物理層

スイッチをNETGEAR GS516Tに変更し、その際にケーブルも替えた為ケーブルを疑っていたのですが、CAT.6のケーブルに替えてもGbEで接続できることはなかったのでケーブルが問題ではないようです。

ちなみにケーブルはほとんど自作しており、どこの家庭にもあるような安物のかしめ工具で作っているのでかしめが甘かったのを疑っていたのですよ。作成自体に問題がなかったのでよかったよかった(笑。

レイヤ2 データリンク層

この層に該当するのはスイッチ(GS516T)とNIC(Intel PRO/1000 CT Desktop Adapter)となります。スイッチ側では他のGbE対応デバイスは当然のことながらGS516Tは無罪だと思われますが、念のため過去に接続していたGbE対応ルータ(MKZ-04G)に接続しても100Mbpsのまま。

ここまでくるとNICしか怪しいものが残らなくなってしまいました(汗。
仕方がないのでそこら辺に転がっていたIntel PRO/1000MT Desktop Adapterを増設して様子を見ることにします。
で、Intel PRO/1000MT Desktop Adapterのdmesgは以下の通り。

kaede@reika:~$ dmesg | grep eth1
[   67.818742] e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
[   80.125706] e1000: eth1: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rosi参照モデルX/TX
[   83.474369] e1000: eth1: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX

……何の問題もなくGbEでリンクしやがったΣ(∵)

第3層以上

あとはドライバの方の問題と考えられますが、Windows環境にてIntel純正ドライバを当ててもGbEでリンクすることは無かったので、NIC自体の問題と判断できる。

結論

  • Intel PRO/1000CT Desktop AdapterがGbEでリンクできなかったのは経年劣化か、その他の理由であるかは不明。
  • Intel PRO/1000CT Desktop AdapterでGbEでリンクしていたときもオートネゴシエーションにより、いつの間にか100Mbpsリンクになっていたことがあった。

上記のことからたまたまハズレを引かされていたのか、PRO/1000CTの性能が悪いのかは不明であるが、安定してGbEで利用するにはPRO/1000MTあたりに換装するのが良さそう。PRO/1000CTで同様の問題が発生している場合は、別のGbE NICを増設すると幸せになれるかもしれません。

おまけ

スイッチに利用しているGS516Tであるが、1つのマシンに2つも3つもNICがあるため早くも16ポート全て埋まりそうです(汗。と、いうか1ポートはノートPC接続用に予約されているし、もう1ポートはカスケード接続用なのでもう空きがありません(激汗

gs516t.jpg

これだけ見たらちょっとした事務所並み(苦笑