2009年12月29日火曜日

Emacs で改行コードに置換する

Emacs で、ある文字列を改行コードに置換したいときがあります。
^j に置換してやれば良いです。

M-x replace-string または M-%

そのあとで、

置換文字列
C-q C-j

● Emacs, Meadow, 置換, 改行コード

2009年12月19日土曜日

Ubuntu: ブート時にメッセージを表示させる

Ubuntu は、起動時にメッセージが表示されません。
カーネルコンフィグをいじった後に再起動して、うまく起動できなかったときに、何が起こってるのかがわかりません。
そんなときの対処法。

■ 参考リンク
http://blog.livedoor.jp/sunatomo01/

1. grub の設定を変更する。

/boot/grub/menu.lst を編集します。

# vi /boot/grub/menu.lst
(kernel オプションの quiet, splash を削除)

2. /etc/default/rcS を編集します。

# vi /etc/default/rcS
VERBOSE=yes に変更

● boot, ブート, ログ, log, メッセージ, 表示, kernel, カーネル, デバッグ, debug, 起動ログ

2009年12月18日金曜日

Ubuntu で kernel をソースコードからビルドする (make 編)

Ubuntu で、linux kernel をソースコードからビルドする場合、
make-kpkg を使うとパッケージとして管理できますが、
パッケージ管理しなくてもいいや、という時もあります。
例えば、kernel コンフィグの変更を試行錯誤したい場合とか。
(make-kpkg でやる場合って、全部ビルドし直しになりますよね?)

make-kpkg を使うやり方はこちら。
Ubuntu で kernel をソースコードからビルドする (make-kpkg 編)

1. kernel ソースを kernel.org からダウンロードします。

2. ダウンロードしたソースを展開します。

# cd /usr/src
# tar jxvf linux-2.6.30.tar.bz2

3. 今起動している kernel のコンフィグファイルを /boot/ ディレクトリからコピーします。

# cd linux-2.6.30/
# cp /boot/config-2.6.27-11-generic .config

4. makemenuconfig を実行します。

ここで設定を変えてもいいです。
(変えたいときだけ変える程度)

# make menuconfig

5. ビルドします。

# make bzImage modules modules_install install

6. initramfs イメージを作成します。

# mkinitramfs -o /boot/initrd.img-2.6.30 2.6.30

7. /boot/grub/menu.lst を編集します。

# vi /boot/grub/menu.lst
エントリーを追加

title           Ubuntu 8.04.3 LTS, kernel 2.6.30
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.30 root=UUID=**************************** ro
initrd          /boot/initrd.img-2.6.30
quiet

● make, bzImage, modules, modules_install, install, kernel, build, カーネル, ビルド, grub, menu.lst, mkinitramfs, initrd.img, 作成

2009年12月16日水曜日

Ubuntu: hwclock で RTC が更新できない場合の対処法

先日、気づいたのですが、NTPd を動かさないで PC を起動すると、時刻がずれてました。
どうも RTC に時刻が反映されていない様子。
hwclockfirst.sh と hwclock.sh を編集すると RTC に時刻が反映されます。

# vi /etc/init.d/hwclockfirst.sh
# vi /etc/init.d/hwclock.sh
共に、下記の部分を編集。
(変更前)
HWCLOCKPARS=
(変更後)
HWCLOCKPARS=--directisa

● hwclock, RTC, NTP, 反映, 設定, 同期, directisa, hwclockfirst.sh, hwclock.sh

2009年12月6日日曜日

Emacs で、最近開いたファイルを開けるようにする

Emacs で、最近開いたファイルを開けるようにする設定。

■ ~/.emacs に、下記を追加。

毎回、M-x recentf を打つのは面倒なので、C-x F に割り当てます。
C-x f は Fill Region とかぶるので、大文字 F。

;;; 最近開いたファイルを開く
(require 'recentf)
(global-set-key "\C-xF" 'recentf-open-files)

● meadow, 最近開いたファイル, 開く, recentf

Ubuntu の ssh 接続が遅い場合の解決方法

Ubuntu で ssh デーモン (sshd) を起動している端末に、DNS 登録 (または hosts に登録) されていない端末からアクセスすると、
ログインできるようになるまでに時間がかかります。
これは、sshd が、接続端末の DNS 解決をしようとして、解決できずにタイムアウトするのに時間がかかってしまうからです。
sshd の設定を変更して、DNS 解決しないようにしてやると、この問題は解決できます。

1. /etc/ssh/sshd_config を編集。

# vi /etc/ssh/sshd_config
(下記を追加する)
UseDNS no

2. sshd をリスタートします。

# /etc/init.d/ssh restart

● ssh, sshd, ログイン, 接続, 遅い, DNS, 逆引き, 名前解決

2009年11月22日日曜日

Windows Xp : inSSIDer で無線 LAN をスキャンする

最近、自宅の無線 LAN の調子が悪く、しょっちゅう切れるので、
無線 LAN の電波状況をスキャンしてみる。

フリーソフトが無いか調べてみたところ、MOONGIFT で inSSIDer というフリーソフトが紹介されていました。
http://www.moongift.jp/2008/07/inssider/

早速ダウンロードして実行。
見つかったアクセスポイントがリスト表示され、信号強度とチャンネルがグラフ表示されます。


ん? なんか多すぎないか!? 妙に電波強度の強いやつが何個か引っかかりました。
とりあえず、802.11a に待避。
こっちは空いているなぁ。でも、ちょっと遅くなった気が…。


goo スピードテスト で 6.48Mbps
有線 LAN にはできないし、PLC にした方がいいかなぁ。

● inSSIDer, 無線 LAN, スキャン, グラフ表示, 調子, 悪い, 切れる, 切断

2009年11月21日土曜日

Ubuntu kernel 2.6.31.x で Buffalo WLI-UC-GN を動かす

kernel 2.6.31 に変えてから、WLI-UC-GN のドライバをコンパイルするときに、下記のエラーが出るようになりました。

make[1]: Entering directory `/usr/src/linux-2.6.31.6'
 CC [M]  /home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.o
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c: In function 'RtmpOSNetDevAttach':
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1510: error: 'struct net_device' has no member named 'open'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1511: error: 'struct net_device' has no member named 'stop'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1512: error: 'struct net_device' has no member named 'hard_start_xmit'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1513: error: 'struct net_device' has no member named 'do_ioctl'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1519: error: 'struct net_device' has no member named 'get_stats'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1553: error: 'struct net_device' has no member named 'validate_addr'
make[2]: *** [/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.o] Error 1
make[1]: *** [_module_/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.31.6'
make: *** [LINUX] Error 2

パッチを当てるとコンパイルが通るようになります。

1. 下記の場所から最新ドライバをダウンロードする (RT3070USB(RT307x) を選択)

http://www.ralinktech.com/support.php?s=2

2. ダウンロードしたファイルを展開する。

$ tar jxvf 2009_1110_RT3070_Linux_STA_v2.1.2.0.tar.bz2

3. 下記の場所から rt3070-2.6.31-compile.patch.gz をダウンロードする

http://www.megaupload.com/?d=2NDDOFTR
(予備) http://lists.rpmfusion.org/pipermail/rpmfusion-commits/2009-August/006214.html
(予備) rt3070-2.6.31-compile.patch.gz

4. パッチを当てる

$ cd 2009_1110_RT3070_Linux_STA_v2.1.2.0/
$ gunzip -c ../rt3070-2.6.31-compile.patch.gz | patch -p1

5. os/linux/config.mk を編集する

$ vi os/linux/config.mk
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=n

# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n

を以下のように修正する (WPA_SUPPLICANT 関連オプションを ”y” に変更)

# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y

# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

6. WLI-UC-GN を PC の USB ポートに挿入し、デバイス ID を調べる

$ lsusb
...
Bus 001 Device 003: ID 0411:015d MelCo., Inc.
...

7. 2009_1110_RT3070_Linux_STA_v2.1.2.0/os/linux/usb_main_dev.c を編集する

$ vi os/linux/usb_main_dev.c
struct usb_device_id rtusb_usb_id[] 
に以下を追加
{USB_DEVICE(0x0411,0x015d)}, /* Melco */

8. make & make install する。

# make
# make install

アクセス解析を見ていると、無線 LAN 関係は、困っている人が多いようだ。

● WLI-UC-GN, 2.6.31, error: 'struct net_device' has no member named 'open',

2009年10月31日土曜日

Ubuntu: gnome-terminal から mlterm に切り替える

gnome-terminal をやめて、mlterm を使うことにしました。
あと、mlterm のフォント設定を M+ (エムプラス) + IPA にします。

■参考リンク:
http://www10.atwiki.jp/shirayuu/pages/16.html#id_2a3aecde
http://ubulog.blogspot.com/2009/02/ubuntumlterm.html

1. apt-get で mlterm をインストールします。

# apt-get install mlterm mlterm-tools mlterm-im-scim

2. apt-get で M+ フォントをインストールします (これはいらないか。一応入れておく)。

# apt-get install xfonts-mplus
$ sudo xset fp rehash

3. M+ + IPA 合成フォントをダウンロードします (フリー)。

下記から、フォントをダウンロードします。
http://mix-mplus-ipa.sourceforge.jp/download.html

4. M+ + IPA 合成フォントをインストールします。

# mkdir -p /usr/share/fonts/truetype/mplusipa
# tar jxvf mixfont-mplus-ipa-TrueType-20060520p1.tar.bz2
# cd mixfont-mplus-ipa-TrueType-20060520p1/opfc-ModuleHP-1.1.1_withIPAFonts_and_Mplus/fonts
# cp *.ttf /usr/share/fonts/truetype/mplusipa
  (ttf ファイルをコピー)

# cd /usr/share/fonts/truetype/mplusipa/
# fc-cache -v  *.ttf
  (フォントキャッシュに登録)
# mkfontdir
  (fontdir を作成)
# xset fp rehash

5. mlterm の設定を行います。

mlterml の設定ファイルは ~/.mlterm ディレクトリにあります。

まずは、基本設定。背景=黒、文字=白 の設定です。

$ vi ~/.mlterm/main

fontsize = 12
input_method = scim
bg_color = black
tabsize = 4
scrollbar_mode = right
fg_color = white
line_space = 0
brightness = 100
gamma = 100
not_use_unicode_font = true
use_anti_alias = true

フォント設定。

$ vi ~/.mlterm/aafont

ISO8859_1=M+1VM+IPAG circle-iso8859-1:90;
ISO8859_1=M+1VM+IPAG circle-iso8859-1:100;
JISX0201_ROMAN=M+1VM+IPAG circle-iso10646-1:100;
JISX0201_KATA=M+1VM+IPAG circle-iso10646-1:100;
JISX0208_1983=M+1VM+IPAG circle-iso10646-1:100;
JISX0208_1990=M+1VM+IPAG circle-iso10646-1:100;
ISO10646_UCS2_1_BIWIDYH=M+1VM+IPAG circle-iso10646-1:100;
ISO10646_UCS2_1=M+1VM+IPAG circle-iso10646-1:100;
ISO10646_UCS4_1=M+1VM+IPAG circle-iso10646-1:100;
ISO10646_UCS4_1_BIWIDTH=M+1VM+IPAG circle-iso10646-1:100;

色設定。

$ vi ~/.mlterm/color

black=#000000
red=#cc0000
green=#4e9a06
yellow=#c4a000
blue=#3465a4
magenta=#75507b
cyan=#06989a
white=#ffffff
hl_black=#555753
hl_red=#ef2929
hl_green=#8ae234
hl_yellow=#fce94f
hl_blue=#729fcf
hl_magenta=#ad7fa8
hl_cyan=#34e2e2
hl_white=#eeeeec

● mlterm, mplus, M+, IPA, gnome-terminal, ターミナル

2009年10月28日水曜日

StructureT-Maker でフォルダリストを作る (Windows)

Windows でフォルダのツリー構造をテキストファイルや Excel で保存したいときがあります。
そんなときに使うのがこれです。

StructureT-Maker

ツリー構造をリスト化したいフォルダをドラッグするだけ。
他にも同様の機能を持ったソフトがあるのですが、今のところこれが一番良さそう。

Linux でやるときは、tree コマンドを使います。

● Structure T-Maker, ツリー, tree, Windows, Excel

2009年10月25日日曜日

「マスターしておきたい 技術英語の基本」

私は英語が苦手なのですが、海外の会社の人とメールとかでやりとりしないといけないことがたまにあります。
大抵の場合、「エキサイト 翻訳」 や、「アルクの 英辞郎 on the WEB」 を駆使することになります。
でも、調べているうちに、いろいろな表現があって、どの表現を使う "べき" なのか迷います。
(変な英語書いてるんだろうなぁ)
で、それを解決してくれそうな本がこれ。
「マスターしておきたい 技術英語の基本」
表紙は地味なんですが、内容はすばらしいです。今、少しずつ読んでいるところです。
技術英語で間違えやすい単語・表現についてまとめられています。
例文も情報・電子分野のものが多いので、参考になりそう。
厚さ 1cm の割に、お値段高め 2,400 円ですが、読んで損はないと思います。

2009年10月24日土曜日

Microsoft Word の TIPS

Word を使うときの TIPS をメモ。
図形描画については、Excel, PowerPoint でも使えると思います。

1. 改ページしたいときは、「Ctrl + Enter」で。

ま、これは大抵の人が知っていると思います。
軽くジャブ。

2. 空白を表示しない表示形式を表示するようにするには、ページの境界をダブルクリック。

Word 2007 では、ダブルクリックでしたが、それより前のバージョンではやり方が違うかもしれません。
ページの境界にマウスを持って行くと、やり方が出てくるはずです。
他の人が作った Word ファイルを開いたときに、この表示になることがあるんですよね。
解除の方法を知ったのは、昨日でした。


3. 図形描画のグリッドを小さくして、図形を描きやすくする。

いつも、Word で図を書くときに、グリッドが大きすぎて、Excel や PowerPoint のようにきれいに
描きにくいなぁと思っていたら、設定の変更が可能でした。
これで、描画位置の微調整が可能になります。
「描画ツール」→「書式」→「配置」→「グリッドの設定」を選択し、
設定値を小さくしてやります。



4. 図形の縦横をきれいに揃えたい場合は、「Shift」を押す。

線をまっすぐ縦横に引きたい場合は、「Shift」を押すと、縦横 (ななめ) にマウスの移動が制限されます。
あと、同じ図形をコピーするときに、対象図形をマウスで選択して「Ctrl」を押して、
さらに「Shift」を押すとこれも縦横に移動が制限されて、レイアウトしやすくなります。
血液型が A 型の人はどうぞ。

「Shift」を押す前は、こんな感じでどこでも移動できます。


上の状態から、「Shift」を押すと、図形の位置が揃います (今回の例では縦に揃う)。


● Word, ページ表示, ページ毎, グリッド, 大きい, 小さく, 図形, 揃えたい

2009年10月15日木曜日

Ubuntu /bin/sh -> /bin/dash → /bin/bash 切り替え

Ubuntu の /bin/sh は、bash のシンボリックリンクではなく、dash (Debian Almquist Shell)になっています。
dash は、ほぼ、bourne shell に近い動きをします。
ちなみに、Fedora は bash のシンボリックリンクです。

世の中には、シェルスクリプトの先頭に #!/bin/sh と書いておきながら、
bash でしか動作しないコードを含んでいるものもあります。

正しくは、そのシェルスクリプトで #!/bin/bash と書き換えるべきなのですが、
それも難しい場合があります。

# 入手したソースコードが、そうなっていたとか (あるある)。

そんなときは、以下のコマンドで dash から bash に切り替えます。

# dpkg-reconfigure dash

動くはずのシェルスクリプトが、動かない場合は、ここを疑ってみると良いです。

● /bin/sh, bash, dash, dpkg-reconfigure, 切り替え

2009年10月14日水曜日

Copy Path Shell Extension (フリー)

会社で、共有ファイルサーバのファイルの場所をメールに貼り付けることが、良くあります。
そんなとき、便利な Windows ソフト。

Copy Path Shell Extension

lifehacker.jp で紹介されていました。こいつは便利。
ファイルを選択して右クリックすると、「Copy Path」というメニューが追加されます。
コピーしたいパス (フォルダ名 or ファイル名) を選択して、「貼り付け」すれば OK。
エクスプローラにアドレスバーを表示しとけばいいじゃん。という意見もありますが、
ファイルサーバのフォルダをネットワークドライブに割り当てている場合でも、
ホスト名をたどって表示してくれるので、便利だったりします。
常用フリーソフトに採用です。

● Copy Path Shell Extension, copy, path, windows, free, paste

2009年10月11日日曜日

UNetbootin で USB メモリインストーラーを作る

窓の杜で紹介されていましたが、UNetbootin を使うと、各種 OS の USB メモリインストーラーが、
簡単に作成できるそうです。
まだ使ったこと無いですが、いつか使うことがあると思うのでメモ。

Windows, Linux に対応しているようです。
ディストリビューションと、バージョンを指定して、あとは USB メモリのドライブを指定すれば OK。


リンク:
http://unetbootin.sourceforge.net/

● UNetbootin, OS, Linux, インストーラ, installer, USB, メモリ, memory, 起動ディスク

2009年10月7日水曜日

distcc で並列分散コンパイル

distcc を使うと、複数のマシンで並列分散コンパイルを行うことができるようになり、
処理時間を短縮することができます。
カーネルのビルドや、アプリケーションのビルドに有効です。
Ubuntu での設定をまとめます。

1. apt-get で、distcc をインストールします。

# apt-get install distcc

2. /etc/default/distcc を編集します。

# vi /etc/default/distcc

(編集するのは、下記 3 箇所)

STARTDISTCC="true"

ALLOWEDNETS="192.168.0.0/24"   → アクセスを許可するネットワークを指定

LISTENER="192.168.0.10"        → アクセスを許可する NIC の IP アドレスを指定

3. distcc を起動します。

apt-get でインストールした時点で、自動起動するようにはなっています。

# /etc/init.d/distcc start

4. ビルドを実行する PC (CPU を借りる側) で、環境変数 DISTCC_HOSTS を設定します。

~/.bashrc にでも書いておくと良いです。

$ export DISTCC_HOSTS='localhost 192.168.0.20'
  (localhost と分散先を指定します)

■ 使用例 1: make を実行する場合

$ make -j 10 CC=distcc CXX=distcc

■ 使用例 2: configure を実行する場合

$ CC=distcc CXX=distcc ./configrue
$ make -j 10

■ 使用例 3: kernel をビルドする場合

# MAKEFLAGS="CC=distcc CXX=distcc" CONCURRENCY_LEVEL=10 make-kpkg --initrd kernel_image kernel_headers

ちなみに、CPU を貸す側 PC の処理優先度は、nice 値 25 で実行されます。
(つまり、優先度低)

top の実行結果 (抜粋)

24034 distccd   25   5 37460  34m 4732 R   30  1.7   0:00.90 cc1
 7864 root      20   0 40448  15m 6268 S    1  0.8   0:55.04 Xorg
 8496 masao     20   0 20208 8824 7308 S    1  0.4   0:02.25 metacity
24035 distccd   25   5  5920 4084  844 R    1  0.2   0:00.02 as
 8497 masao     20   0 41008  20m  15m S    0  1.0   0:01.72 gnome-panel
 8540 masao     20   0 52772  20m  10m S    0  1.0   0:05.70 gnome-terminal
23650 distccd   25   5  2100  712  372 S    0  0.0   0:00.13 distccd
23671 distccd   25   5  2100  568  372 S    0  0.0   0:00.19 distccd
23807 distccd   25   5  2100  664  372 S    0  0.0   0:00.09 distccd
24046 distccd   25   5 10908 4924 2152 R    0  0.2   0:00.01 cc1
...

■ 2009/10/08 追記

distccmon-text コマンドを使うと、どの PC で何の処理をしているかモニタリングすることができます。

$ distccmon-text 2  (2 は 2 秒ごとに更新)

5858  Blocked                                                            [0]
 5918  Compile     translate.c                                192.168.0.30[0]
 5700  Compile     log.c                                      192.168.0.30[1]
 5772  Compile     entries.c                                  192.168.0.30[2]
 5873  Compile     questions.c                                192.168.0.20[0]
 5879  Compile     merge.c                                    192.168.0.20[0]
 5868  Compile     lock.c                                     192.168.0.20[0]
 5884  Compile     props.c                                       localhost[0]
 5847  Compile     relocate.c                                    localhost[1]

● distcc, 並列, 分散, build, ビルド, compile, コンパイル, distccmon-text

2009年9月15日火曜日

Windows の TortoiseSVN と Ubuntu の Subversion

Subversion は、バージョンに互換性がないことがあるようです。
例えば、Samba で Linux と Windows でフォルダを共有している環境で、
Windows 側からは TortoiseSVN 1.6.5 を使用して、
Linux 側から Subversion 1.4.6 を使用したときに、
下記のエラーが出ます。

svn: このクライアントは、作業コピー '.' を扱うには古すぎます。
もっと新しい Subversion クライアントをダウンロードしてください。

または

svn: This client is too old to work with working copy '.';
 please get a newer Subversion client

こんなときは、Windows 側の TortoiseSVN のバージョンを下げるか、Linux 側の Subversion のバージョンをあげます。

Ubuntu で apt-get しても、1.6.5 にはならないので、ソースからビルドしてインストールします (Windows 側で対応するのは説明省略)。

1. まず、インストールされている Subversion をアンインストールします。

# apt-get remove subversion

2. Subversion のソースコードをダウンロードします。

下記サイトからダウンロード。
http://subversion.tigris.org/

3. apt-get で libaprutil1-dev をインストールします。

# apt-get install libaprutil1-dev

4. ソースコードを展開して、インストールします。

$ tar jxvf subversion-1.6.5.tar.bz2
$ cd subversion-1.6.5/
$ ./configure
$ make
# make install

configure 時に、下記メッセージが出ることがありますが、無視して良いです。

configure: WARNING: we have configured without BDB filesystem support

You don't seem to have Berkeley DB version 4.0.14 or newer
installed and linked to APR-UTIL.  We have created Makefiles which
will build without the Berkeley DB back-end; your repositories will
use FSFS as the default back-end.  You can find the latest version of
Berkeley DB here:
 http://www.oracle.com/technology/software/products/berkeley-db/index.html

● subversion, tortoisesvn, APR, BDB, Ubuntu

2009年9月11日金曜日

Ubuntu で xhost + を有効にする

他の PC から X アプリケーションを自分の PC に表示したいときがあります。
Ubuntu でやる場合は以下のようにやります。

1. X アプリを起動する PC (転送元) で下記の設定をします。

# vi /etc/X11/xinit/xserverrc

exec /usr/bin/X11/X -nolisten tcp
の行を編集 (-nolisten tcp を外します)
↓
exec /usr/bin/X11/X

2. 自分の PC で xhost + を実行します。

# xhost +

3. ssh -X でログインします。

other_pc は転送元 PC。

$ ssh -X other_pc

4. ログイン後、X アプリを起動します。

環境変数 DISPLAY を設定後に起動するか、X アプリの -display オプションで設定します。
xeyes を起動する場合の例。

$ export DISPLAY=my_pc:0.0
$ xeyes
または

$ xeyes -display my_pc:0.0

■ 2019/08/23 追記

Ubuntu 16.04 環境では、転送先 PC で、下記の設定が必要でした。

# vi /etc/lightdm/ligthdm.conf
下記を追記して、再起動。
[SeatDefaults]
xserver-allow-tcp=true

● xhost +, DISPLAY, :0.0, -display, 効かない, Can't open display

2009年9月10日木曜日

Ubuntu で Subversion を GUI で使う

Ubuntu で Subversion を GUI で使う時のメモ。

何個かあるんですが、RapidSVNMeld の組み合わせが良さそうです。
メンテされているし。
RapidSVN は Subversion のフロントエンドで、
Meld は diff ツールです。

1. RapidSVN を apt-get でインストールします。

# apt-get install rapidsvn

2. Meld を apt-get でインストールします。

# apt-get install meld

3. rapidsvn を起動して、diff ツールの設定をします。

「View」 → 「Preferences...」
「Programs」 タブの Diff tool: のところに下記を設定

/usr/bin/meld
Program arguments のところに下記を設定

%1 %2

● Subversion, RapidSVN, Meld, diff, svn, GUI, linux, 差分

2009年9月7日月曜日

Firefox でオートコンプリート機能を無効にする

Firefox 3.5 でオートコンプリート機能を無効にする方法。
無効にする方法が、検索に引っかかりにくい!

「ツール」 → 「オプション」 → 「プライバシー」
「履歴」 の 「Firefox に記憶させる履歴を詳細設定する」 を選択。
「検索やフォームの入力履歴を記憶させる」 のチェックを外す。

ちなみに、オートコンプリート機能を有効にしたい人で、間違った入力履歴を削除したい場合は、「Shift」 + 「Delete」 で削除できるそうです。


● オートコンプリート, 履歴, 機能, 無効, OFF, オフ, 自動

OpenProj (MS Project 互換ソフト)

MS Project は、好きなソフトではないのですが…。
フリーで MS Project 互換のソフトがあるようです。
その名も OpenProj
ファイルの閲覧だけでなく、編集もできるそうです。

へぇ~。

● Microsoft, Project, MS, プロジェクト, OpenProj, 互換, 代替, フリー

2009年8月27日木曜日

mailx で、コマンドラインから POP, SMTP サーバを利用する

あまり、利用することはないとは思いますが、使うこともあるかもしれないので、メモしておきます。
Ubuntu に標準で付いている mail コマンドは、ローカルのメールボックスのメールしか読めません。
メール出すときも、ローカルのメールサーバ経由でしか出せなかったりします。

POP サーバからメールを受信し、SMTP サーバからメールを送信する場合は、
Heirloom mailx を使います。
mail コマンドの機能拡張版といったところのソフトです。
IMAP, POP3, APOP, SSL/TLS, S/MIME に対応しています。

1. まず、ソースコードをダウンロードします。

http://sourceforge.net/projects/heirloom/

2. 展開して、make、make install します。

特にはまるところは無いはず。

$ tar jxvf mailx-12.4.tar.bz2
$ cd mailx-12.4/
$ vi Makefile
(下記の部分を編集)
UCBINSTALL      = /usr/ucb/install
を
UCBINSTALL      = /usr/bin/install

3. ~/.mailrc, ~/.nailrc を作成します。

$ vi ~/.mailrc
set NAIL_EXTRA_RC=~/.nailrc
set smtp=smtp.hogehoge.org:25
set from=NAME@hogehoge.org

$ vi ~/.nailrc
shortcut popacct %:pop3://NAME@pop.hogehoge.org

4. メールを受信する場合

$ mailx popacct

5. メールを送信する場合

Subject test, hogehoge.txt に書いてあるメールの内容を送信する場合

$ mailx -s test hoge@hogehoge.org < hogehoge.txt

■ 2011/01/06 更新
mailx のダウンロードページを修正 ( Hairloom home ページのリンクからだと nail しかダウンロードできないようだ )

● mailx, Heirloom mailx, smtp, IMAP, POP3, APOP, S/MIME, SSL/TLS

2009年8月23日日曜日

Ubuntu で cron の設定をする

cron 設定。Linux の基本です。

■ crontab を編集するには crontab -e コマンドです。

# crontab -e

■ 書式は、分、時、日、月、曜日 (0 と 7 は日曜日)、コマンド の順です。

詳細は以下を参照。
Manpage of CRONTAB

毎日 21:30 に、シャットダウンしたい場合の例。

30 21 * * * /sbin/shutdown -h now

■ 設定を確認するには、crontab -l です。

# crontab -l
# m h  dom mon dow   command
30 21 * * * /sbin/shutdown -h now

■ 念のため、近い時間に発火するように設定して、動作確認をしておいた方が良いです。

設定ファイルの実態は、/var/spool/cron/crontabs/root にあります。
(root ユーザの場合)

● cron, crontab

2009年8月19日水曜日

Ubuntu で Buffalo WLI-UC-G を動かす

Ubuntu 9.04 で Buffalo WLI-UC-G を動かそうと格闘したときのメモです。
結果的に、動くには動いたのですが、何が効いたのか、わからない状態です。

■ rt73-cvs ドライバをダウンロードします。

WLI-UC-G は rt73 ドライバで動作するようです。
以下のサイトから rt73-cvs-daily.tar.gz をダウンロードします。
http://rt2x00.serialmonkey.com/wiki/index.php/Main_Page
http://sourceforge.net/projects/rt2400/

■ rt73-cvs-daily.tar.gz を展開します。

$ tar zxvf rt73-cvs-daily.tar.gz

■ rtmp_def.h を編集します。

$ cd rt73-cvs-2009041204/Module/
$ cp rtmp_def.h rtmp_def.h-org

$ vi rtmp_def.h
(下記の場所にデバイス ID 0x0411, 0x0137 の設定を追加します)
/* Buffalo */\
 {USB_DEVICE(0x0411,0x00d8)},   /* WLI-US-SG54HP */\
 {USB_DEVICE(0x0411,0x00f4)},\
 {USB_DEVICE(0x0411,0x0137)},   /* WLI-UC-G */\

■ make して、インストールします。

$ make
# make install

■ 再起動して、動作するか確認してみます。

私の環境では、WEP 系のアクセスポイントしか設定できない状態でした。
自宅で使っている WPA 系は設定できないので、さらに格闘。

■ 以下、参考情報です。

・関係ないと思いつつ、apt-get で rt73-common をインストール
→ ダメ

# apt-get install  rt73-common

・それじゃ、kernel 付属のドライバでどうだってことで、rt73usb.c に、デバイス ID を追加して再インストール
→ ダメ

# apt-get install linux-source-2.6.28
# cd /usr/src/
# tar jxvf linux-source-2.6.28.tar.bz2
# cd linux-source-2.6.28/drivers/net/wireless/rt2x00/
# cp rt73usb.c rt73usb.c-org
# vi rt73usb.c
(下記の場所に、デバイス ID 0x0411, 0x0137 の設定を追加)
/* Buffalo */
        { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) },
        { USB_DEVICE(0x0411, 0x0137), USB_DEVICE_DATA(&rt73usb_ops) },

# mv Makefile Makefile-org
# vi Makefile
(Makefile を下記のように新規作成)
obj-m   += rt73usb.o

# make -C /lib/modules/`uname -r`/build M=`pwd`
# cp rt73usb.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2x00/

この辺で、再起動すると、動作するようになっていました。
別のディスクで、同様の操作をしてみたのですが、それはダメでした。
(何が効いたのか、全く謎です)。

結論:
WLI-UC-G より、WLI-UC-GN の方が導入しやすい。
(すみません、参考にならないですね)

■ 2009/09/30 追記

Ubuntu のパッケージを更新してから再起動、
再度 rt73 のソースを make clean; make ; make install して、再起動をすると、
WPA 系の暗号化も利用できるようになっていました。

■ 2009/10/18 追記

kernel 2.6.31.4 のソースを取得して、下記ファイルを編集して、ビルドすると、WPA2 系でも動作しました。
linux-2.6.31.4/drivers/net/wireless/rt2x00/rt73usb.c

■ 2010/05/22 追記

kernel 2.6.34 のソースでは、下記ファイルを編集して、ビルドしてもダメでした。
linux-2.6.34/drivers/net/wireless/rt2x00/rt73usb.c
それじゃ、次の手段。

下記から compat-wireless-2.6.34-rc4.tar.bz2 をダウンロード。
ちなみに、compat-wireless-2.6.34.tar.bz2 は、ビルドに失敗しました。
http://www.orbit-lab.org/kernel/compat-wireless-2.6-stable/v2.6.34/

# tar jxvf compat-wireless-2.6.34.tar.bz2
# cd compat-wireless-2.6.34-rc4/
# vi drivers/net/wireless/rt2x00/rt73usb.c
(下記を追加)
{ USB_DEVICE(0x0411, 0x0137), USB_DEVICE_DATA(&rt73usb_ops) },
# make
# make install
(これじゃインストールされないのかな? /lib のファイルが更新されてなかったら、無理やりコピー)
# cp drivers/net/wireless/rt2x00/rt73usb.ko /lib/modules/2.6.34/kernel/drivers/net/wireless/rt2x00/rt73usb.ko

これでいけました。

● Buffalo, WLI-UC-G, rt73, 0x0411, 0x0137, 411, 137, WPA, WEP, WLI-UC-GN, 比較, どっち, 無線, LAN

Doxygen でソースコード解析

大規模なソースコードを解析するときは、Doxygen を使います。
Doxygen については、以下を参照。現在の最新バージョンは 1.5.9 でした。
http://www.doxygen.jp/

この使用法以外にも、特定の書式でソースコードにコメントを挿入することで、
ソースコードから、HTML 等のドキュメントを生成することもできます。

Windows でも、Linux でも動作します。試しに、Doxygen のソースを Doxygen にかけてみました。
こんな感じで表示してくれます。

■ Windows で使用する場合

1. まず、Doxygen と、Graphviz をインストールします。

2. Doxywizard を起動して、各パラメータの設定をします。

が、設定項目が多すぎるのが難点なので、この Doxyfile を使うと良いです。
以下のパラメータを変更すると使えるはずです (変更しなくてもいけるかも)。

INPUT_ENCODINGソースの文字コードが UTF-8の場合: UTF-8, SJISの場合: CP932
PROJECT_NAMEプロジェクト名を適当に指定

この Doxyfile をソースコードのあるフォルダにコピーして、Doxywizard で開きます。

4. あとは、Run すれば OK。

終了したら、html フォルダの index.html を開きます。

■ Ubuntu で使用する場合

1. apt-get で doxygen と doxygen-gui, graphviz をインストールします。

# apt-get install doxygen doxygen-gui graphviz

2. doxywizard を起動します。

# doxywizard

あとは、Windows と同様です。

● Doxygen, Graphviz, Doxyfile, Doxywizard, ソースコード, 解析

2009年8月18日火曜日

キーリピートを高速化

キーリピートを高速化すると、キーボード入力がサクサクになるそうで、
今まで使っていませんでしたが、これからは使うようにします。
コーディングの効率が、上がるそうです。せっかちになるかも。

■ Windows の場合

kbdacc というフリーソフトを使うと良いそうです。早速導入。
下記の設定が、ちょうど良いぐらい。

初っ端のタメ200 ms
キーリピートの間隔25ms

■ Linux の場合

X が起動していないと有効になりませんが、xset で設定可能です。

$ xset r rate 200 25

~/.bashrc に、以下を追加すると良いです。

if [ $DISPLAY ]; then
xset r rate 200 25
fi

■ 2009/08/19 修正

~/.bashrc に記述する内容を修正。

● キーリピート, kbdacc, xset, キーボード, 高速化, key, repeat

2009年8月14日金曜日

Windows の VirtualBox で Ubuntu 8.04

Windows の VirtualBox 上で Ubuntu 8.04 を動作させるときのメモ。

試した環境は、以下の通りです。 ・Dell Inspiron 530 (Intel Core2 Duo 3.00GHz, 2GB RAM) ・Windows Xp Professional Version 2002 Service Pack3 ・VirtualBox Ver.3.0.4 ・Ubuntu 8.04 LTS (VirtualBox 用イメージ)

1. VirtualBox をインストールします。

下記サイトからダウンロードして、インストールします。
http://jp.sun.com/products/software/virtualbox/get.html
ネットワーク関連ドライバをインストールするときに、警告が出ますが、無視して続けます。

2. Ubuntu の仮想イメージをダウンロードして、展開します。

下記のサイトからダウンロードします。
http://www.ubuntulinux.jp/products/JA-Localized/virtualbox
ubuntu-ja-8.04-virtualbox-i386.zip を展開して、
D:\Ubuntu-8.04-Japanese-VBox に置きます。

3. VirtualBox を起動して、新規仮想マシンの設定をします。





4. 仮想マシンを起動します。

5. 初期設定を行います。

言語、キーボードタイプ、タイムゾーン、ユーザ設定等を行います。

6. apt-get update, apt-get upgrade を実行しておきます。

# apt-get update
# apt-get upgrade

7. 一旦、仮想マシンを再起動後、Guest Additions をインストールします。

共有フォルダ等の拡張機能を使用する場合は、インストールが必要です。
あと、kernel をアップデートする度に、インストールする必要があります。

8. VirtualBox で共有フォルダの設定をします。

・Windows 側で、D:\VBoxShare フォルダを作成します (このフォルダを共有します)。
・VirtualBox で共有フォルダの設定をします。

9. 仮想マシンを起動し、シェルから以下を実行します。

マウントが確認できれば OK。

# mount -t vboxsf VBoxShare /VBoxShare
/sbin/mount.vboxsf: mounting failed with the error: Protocol error
と出る場合は、以下のコマンドを実行します。

# mount.vboxsf VBoxShare /VBoxShare

10. あとは、通常インストールの Ubuntu 同様に設定を行っていきます。

ネットワーク系のデーモンは停止しない方が良いようだ (ネットワークにつながらなくなった)。
Ubuntu インストール後にする設定
Ubuntu 起動時間短縮
Ubuntu 高速化

■ 2009/09/03 修正

Guest Addtion の再インストールに関する記述修正。

● VirtualBox, Guest Additions, 共有フォルダ, mount, mount.vboxsf

2009年8月12日水曜日

Ubuntu で NFS サーバの設定をする

Ubuntu で NFS サーバの設定をする手順について。

1. apt-get で nfs-kernel-server をインストールします。

# apt-get install nfs-kernel-server

2. /etc/exports ファイルを編集します。

(read only でマウントする場合の例)
/home/ftp/pub/linux/fedora/11  192.168.0.0/255.255.255.0(ro,sync)
(read write でマウントする場合の例)
/home/hogehoge  192.168.0.0/255.255.255.0(rw,sync,no_root_squash)

3-1. nfs-server-kernel を再起動します。

# /etc/init.d/nfs-kernel-server restart

3-2. または再 export します。

# exportfs -r

4. client 側でマウントしてみます。

# mkdir -p /mnt/fedora
# mount 192.168.0.1:/home/ftp/pub/linux/fedora/11 /mnt/fedora

# mkdir -p /mnt/hogehoge
# mount 192.168.0.1:/home/hogehoge /mnt/hogehoge

■ 2013/03/30 追記

Ubuntu 12.04 で試したところ、上記の方法はちょっとダメで、オプション no_subtree_check を追加したほうが良いようだ。
以下、設定例。

# vi etc/exports
/home/hogehoge  192.168.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)

● NFS, exportfs, mount

2009年8月8日土曜日

Ubuntu 9.04 の Firefox で Flash が再生できない場合の解決方法

Ubuntu 9.04 の Firefox で Flash が再生できない問題について。

Firefox をシェルから起動すると、Flash 再生時に下記のようなエラーが出ていました。

(前略)
SWFDEC: ERROR: swfdec_bits.c(227): swfdec_bits_get_u16: reading past end of buffer
SWFDEC: ERROR: swfdec_bits.c(227): swfdec_bits_get_u16: reading past end of buffer
SWFDEC: ERROR: swfdec_bits.c(240): swfdec_bits_get_s16: reading past end of buffer
(中略)
SWFDEC: ERROR: swfdec_swf_decoder.c(361): swfdec_swf_decoder_parse_one: data after last frame
SWFDEC: ERROR: swfdec_swf_decoder.c(361): swfdec_swf_decoder_parse_one: data after last frame

早速、調べてみたところ、libswfdec を再インストールすれば直るとのこと。
以下のようにやると、再生できるようになりました。

# apt-get remove libswfdec-0.8-0

# apt-get install libswfdec-0.8-0

参考:
http://d.hatena.ne.jp/hanahi/20090510/p4

● Firefox、Flash、再生、libswfdec、swfdec

2009年8月6日木曜日

Ubuntu の Vim 設定 .vimrc

Ubuntu の Vim は、ファイルを開いたときに、前回終了した場所にカーソルがありません。
Fedora のときは、特に設定しなくても、前回終了した場所にカーソルがありました。
.vimrc に設定を追加することで、それは解決するようです。
Fedora はどこかで設定されてたのかな?

.vimrc に以下を追加します。
(この設定を探すのに時間がかかりました)

" 前回終了したカーソル行に移動
autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g`\"" | endif

参考: http://d.hatena.ne.jp/sugarbabe335/20080801/1217596590

現在の .vimrc 。

syntax off
set autoindent
set tabstop=4
set expandtab
set vb
" set number

" 入力中のコマンドをステータスに表示
set showcmd
" 括弧入力時の対応する括弧を表示
set showmatch
" ステータスラインを常に表示
set laststatus=2
" 前回終了したカーソル行に移動
autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g`\"" | endif

" 文字コードの自動認識
" http://www.kawaz.jp/pukiwiki/?vim#content_1_7
if &encoding !=# 'utf-8'
  set encoding=japan
  set fileencoding=japan
endif
if has('iconv')
  let s:enc_euc = 'euc-jp'
  let s:enc_jis = 'iso-2022-jp'
  " iconvがeucJP-msに対応しているかをチェック
  if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'eucjp-ms'
    let s:enc_jis = 'iso-2022-jp-3'
    " iconvがJISX0213に対応しているかをチェック
  elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'euc-jisx0213'
    let s:enc_jis = 'iso-2022-jp-3'
  endif
  " fileencodingsを構築
  if &encoding ==# 'utf-8'
    let s:fileencodings_default = &fileencodings
    let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
    let &fileencodings = &fileencodings .','. s:fileencodings_default
    unlet s:fileencodings_default
  else
    let &fileencodings = &fileencodings .','. s:enc_jis
    set fileencodings+=utf-8,ucs-2le,ucs-2
    if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
      set fileencodings+=cp932
      set fileencodings-=euc-jp
      set fileencodings-=euc-jisx0213
      set fileencodings-=eucjp-ms
      let &encoding = s:enc_euc
      let &fileencoding = s:enc_euc
    else
      let &fileencodings = &fileencodings .','. s:enc_euc
    endif
  endif
  " 定数を処分
  unlet s:enc_euc
  unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使うようにする
if has('autocmd')
  function! AU_ReCheck_FENC()
    if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0
      let &fileencoding=&encoding
    endif
  endfunction
  autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
  set ambiwidth=double
endif

参考: http://www.kawaz.jp/pukiwiki/?vim#content_1_7

● Vim、前回、編集、終了、場所、カーソル、.viminfo、.vimrc

2009年8月5日水曜日

キーコードを調べる (xev)

よくこのコマンドを忘れるので、ちょっとメモしておきます。
キーコードを調べるには、xev を使います。
X event の略らしい (これで覚えそうだな)。

$ xev

● xev, keycode

Ubuntu でユーザを追加する (adduser を使うべき)

Ubuntu でユーザを追加するときは、useradd ではなく adduser を使うべきです。
なぜなら、useradd はホームディレクトリが作られないから。
どちらを使っても、そんなに変わらない挙動だと思ってたんですけどね。

使い方は以下の通り。

# adduser USER_NAME

USER_NAME のところにログイン名を入力します。
適宜 -u (uid), -g (gid) オプションを指定します。

/home 以下にホームディレクトリが作成され、
/etc/skel/ ディレクトリから設定ファイル .bashrc 等がコピーされます。
パスワードも設定します。
useradd の場合は、これらをやってくれません。

# adduser -u 1004 USER_NAME
Adding user `USER_NAME' ...
Adding new group `USER_NAME' (1004) ...
Adding new user `USER_NAME' (1004) with group `USER_NAME' ...
Creating home directory `/home/USER_NAME' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for USER_NAME
Enter the new value, or press ENTER for the default
       Full Name []: Taro HOGEHOGE
       Room Number []:
       Work Phone []:
       Home Phone []:
       Other []:
Is the information correct? [y/N] y

● adduser, useradd

2009年8月4日火曜日

スクリーンキャスト (recordmydesktop)

デスクトップまたは特定のウィンドウ内のキーボードとマウスの操作を動画で録画することをスクリーンキャストと言うそうです。

会社での打ち合わせで Linux (Ubuntu) 上の操作をデモしようと思って調べたところ、
いくつかのツールがみつかりました (recordmydesktop, wink, istanbul, ...)。

その中で一番まともそうな recordmydesktop について。
これは、操作内容を ogg ファイル形式で保存をしてくれます。

Ubuntu での導入例ですが、Fedora とかでも動くみたいです (そちらは未確認です)。

1. apt-get で gtk-recordmydesktop をインストールします。

# apt-get install gtk-recordmydesktop

2. スクリーン全体を録画する場合は以下のようにします (コマンドでの実行例)。

Ctrl+c で、録画を停止します。

$ recordmydesktop -o OUTPUT_FILE.ogg
  (-o オプション無しのデフォルトの出力ファイル名は out.ogg です)

3. ogg ファイルの再生は VLC を使います。

VLC は Windows 版もあるので、Windows PC にもインストールしておくと良いです。

# apt-get install vlc

$ vlc OUTPUT_FILE.ogg

4. 特定のウィンドウを録画したい場合は、-windowid を使います。

xwininfo で録画したいウィンドウの Window id を調べてから、指定します。

$ xwininfo

xwininfo: Please select the window about which you
         would like information by clicking the
         mouse in that window.

xwininfo: Window id: 0x3400002 "Emulator"

 Absolute upper-left X:  306
 Absolute upper-left Y:  60
 Relative upper-left X:  5
 Relative upper-left Y:  24
 Width: 882
 Height: 683
 Depth: 16
 Visual Class: TrueColor
 Border width: 0
 Class: InputOutput
 Colormap: 0x3400011 (not installed)
 Bit Gravity State: ForgetGravity
 Window Gravity State: NorthWestGravity
 Backing Store State: NotUseful
 Save Under State: no
 Map State: IsViewable
 Override Redirect State: no
 Corners:  +306+60  -92+60  -92-281  +306-281
 -geometry 882x683-87+36

今回の例では Window id は 0x3400002 です。

$ recordmydesktop -windowid 0x3400002

■ gtk-recordmydesktop を使うと、GUI で録画の 開始、終了、保存、録画範囲の設定 ができます。

$ gtk-recordmydesktop

● recordmydesktop, vlc, スクリーンキャスト、キャプチャ、デスクトップ、操作、動画

2009年8月3日月曜日

Ubuntu で http サーバ (apache2)

Ubuntu で http サーバを立てる手順。

1. apache2 を apt-get でインストールします。

# apt-get install apache2

2. ~/public_html を使えるように userdir モジュールを有効にします。

http://HTTP_SERVER_ADDRESS/~USER_NAME/ で、ユーザのページを参照可能にします。

# a2enmod userdir
Module userdir installed; run /etc/init.d/apache2 force-reload to enable.

3. apache を再起動します。

# /etc/init.d/apache2 restart
 * Restarting web server apache2

● httpd, apache, public_html, userdir, http サーバ, Web サーバ, http server, Web server

2009年7月29日水曜日

Ubuntu の alternative システム

alternative システムは、
同じ機能をもつ複数のプログラムを一つのシステムにインストールして、 共存させることを可能とする仕組みだそうです。
(そんな仕組みがあって、知らず知らずのうちに使っていたとは…)

例えば、java というコマンドをたどっていくと、/etc/alternatives/java にシンボリックリンクが張られています。
さらにその先は、/usr/lib/jvm/java-6-sun/jre/bin/java にリンクが張られていたりします。

$ which java
/usr/bin/java

$ ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Jun 30 09:29 /usr/bin/java -> /etc/alternatives/java

複数の java のパッケージをインストールした場合、alternatives の設定を変更することで、
どの java コマンドを使うか明示的に切り替えることができます。
PATH の設定を変えても java が切り替わらない方は、この設定を確認すると良いと思います。

alternatives の設定を変更するには、update-alternatives コマンドを使います。
自分でシンボリックリンクを張り替えるよりは、このコマンド使った方が安全そうです。

java コマンドの実態を java-6-sun に切り替える場合は、以下のようにします (番号を選択)。

# update-alternatives --config java

There are 4 alternatives which provide `java'.

 Selection    Alternative
-----------------------------------------------
         1    /usr/bin/gij-4.2
 +        2    /usr/lib/jvm/java-gcj/jre/bin/java
         3    /usr/lib/jvm/java-1.5.0-sun/jre/bin/java
*         4    /usr/lib/jvm/java-6-sun/jre/bin/java

Press enter to keep the default[*], or type selection number: 4
Using '/usr/lib/jvm/java-6-sun/jre/bin/java' to provide 'java'.

参考:
http://manpages.ubuntu.com/manpages/hardy/ja/man8/update-alternatives.8.html

関連情報:
まさおのブログ (表): Ubuntu 複数インストールされている java を切り替え

2009年7月28日火曜日

Ubuntu でパッケージのソースコードを入手する

あるコマンドのソースコードを調べてみたいとか、見てみたいということがあります。
そんなときは apt-get で簡単にソースコードを取ってくることができます。

以下は dig コマンドのソースを取ってくる場合の例。

1. which コマンドで dig コマンドの保存場所を調べます。

# which dig
/usr/bin/dig

2. dpkg コマンドで dig コマンドが含まれるパッケージを調べます。

# dpkg -S /usr/bin/dig
dnsutils: /usr/bin/dig

3. dnsutils のソースコードを apt-get で取得します。

# mkdir dig
# cd dig
# apt-get source dnsutils

4. ls で見るとこんな感じになります。

あとは bind9-9.4.2.dfsg.P2 ディレクトリ内を調べます。
他のコマンドでも同様のやり方でいけます。

# ls
bind9-9.4.2.dfsg.P2                     bind9_9.4.2.dfsg.P2-2ubuntu0.1.dsc
bind9_9.4.2.dfsg.P2-2ubuntu0.1.diff.gz  bind9_9.4.2.dfsg.P2.orig.tar.gz

Ubuntu でマニュアルをインストール (manpages-ja, manpages-ja-dev)

Ubuntu では、関数系のオンラインマニュアルが、デフォルトではインストールされません。
以下のようにしてインストールします。

# apt-get install manpages-ja
# apt-get install manpages-ja-dev

2009年7月27日月曜日

[Obsolete] Ubuntu で DHCP サーバ

この投稿は古くなりました (2013/06/19)。
こちらを参照してください。
まさおのブログ (表): Ubuntu で DHCP サーバ

Ubuntu で DHCP サーバの設定をするときのメモ。

今回の例では、eth1 に DHCP サーバの設定をします。
(eth0 側には DHCP サーバを立てません)
そのうち、Ubuntu をルータにします。今回はその前準備ということで。

1. dhcp3-server をインストールします。

# apt-get install dhcp3-server

2. DHCP サーバを立てるインターフェイスを eth1 に限定します。

# vi /etc/default/dhcp3-server
INTERFACES=""
↓
INTERFACES="eth1"

3. dhcpd.conf を編集します。

設定例。ちなみに eth1 の IP アドレスは 192.168.10.1 です。
その他、細かい設定の説明は省略。
domain-name は適当に。

# vi /etc/dhcp3/dhcpd.conf
option domain-name "hogehoge.local";
option domain-name-servers 192.168.10.1;

default-lease-time 600;
max-lease-time 7200;

subnet 192.168.10.0 netmask 255.255.255.0 {
 range 192.168.10.10 192.168.10.30;
 option domain-name-servers 192.168.10.1;
 option domain-name "hogehoge.local";
 option routers 192.168.10.1;
 option subnet-mask 255.255.255.0;
 option broadcast-address 192.168.10.255;
 default-lease-time 600;
 max-lease-time 7200;
}

Ubuntu の emacs で alt+<, alt+> が効かない

Ubuntu の Emacs で alt+<, alt+> が、なぜか効かない。
alt+< : ファイルの先頭に移動
alt+> : ファイルの最後に移動
(Esc+<, Esc+> は効くのに)

Emacs 使いには、必須のキーバインドなんですが、レイアウト(なんだこれ?)のキーバインドになっていました。
その設定を解除します。

ツールバーの 「システム」 → 「設定」 → 「キーボード」
「キーボードの設定」 の 「レイアウトタブ」を選択し、
「レイアウトのオプション」 で 「Layout switching」 を選択、
Alt+Shift change layout. のチェックを外します。

この設定はインストールの度にしないといけないのか? むむっ。

2009年7月26日日曜日

Ubuntu で FTP サーバを設定する

Ubuntu で FTP サーバを立てるときのメモ。
FTP デーモンはいろいろあるのですが (pureftpd, proftpd, vsftpd,...) Fedora の時も使っていた vsftpd にします。

1. vsftpd をインストールします。

# apt-get install vsftpd

2. vsftpd.conf を書き換えます。

# vi /etc/vsftpd.conf
anonymous_enable=YES
local_umask=022
local_enable=YES
(設定するのは、ひとまずこれぐらいですね)

3. vsftpd を再起動します。

# /etc/init.d/vsftpd restart

4. 他の端末からアクセスできるか確認します。

192.168.0.1 は、設定した端末の IP アドレス。

$ ftp 192.168.0.1

/home/ftp が anonymous FTP サーバの root になります。

5. ローカルユーザで、ホームディレクトリにログインしたい場合。

下記の設定が必要。

# vi /etc/vsftpd.conf
(下記を追加)
allow_writeable_chroot=YES
# chmod a-w /home/user

■ 2009/07/30 追記:

設定に local_enable=YES を追加しました。

■ 2014/04/19 追記:

ローカルユーザで、ホームディレクトリにログインしたい場合の設定を追加。

● vsftpd, Ubuntu, FTP, ftp, サーバ, サーバー, server, 設定

2009年7月25日土曜日

proxy サーバ経由で git を使う方法

proxy サーバの配下で git を使う方法です。調べると結構引っかかりました。
参考にさせていただいた方々に感謝。とても重宝しています。

1. まず、corkscrew をインストールします。

# apt-get install corkscrew

2. git-proxy.sh を作成します。

proxy.hogehoge は proxy サーバ名。

# vi /usr/local/bin/git-proxy.sh
#/bin/bash
CORKSCREW=`which corkscrew`
$CORKSCREW proxy.hogehoge 8080 $1 $2

3. git-proxy.sh に実行権を与えます。

# chmod 755 /usr/local/bin/git-proxy.sh

4. ~/.bashrc に以下を追加します。

# vi ~/.bashrc
export GIT_PROXY_COMMAND=/usr/local/bin/git-proxy.sh

5. あとは通常通り、git を使用します。

参考:
http://mkosaki.blog46.fc2.com/blog-entry-700.html
http://d.hatena.ne.jp/rx7/20080703/p1
まさおのブログ (表): Android ソースを http 経由で取得する ( corkscrew 無しで )

● git, proxy, corkscrew, プロキシ, 経由

2009年7月23日木曜日

[Obsolete] 文字列検索に Perl の ack コマンドを使う

この投稿は古くなりました (2011/1/19)。
こちらを参照してください。
まさおのブログ (表): grep -r のかわりに ack-grep を使う

ちょっとした文字列の検索には grep を使いますが、いくつかのディレクトリをまたいだりする場合は、Perl の ack を使った方が早いです。

インストールは以下のようにやります。

# cpan App::Ack

使い方は以下の通り。サブディレクトリ以下も検索してくれます。

$ ack hogehoge
  (hogehoge を検索)
$ ack -i hogehoge
  (-i: 大文字小文字を区別しない)

● cpan, ack, perl

Ubuntu に ssh でアクセスできるようにする

Ubuntu はデフォルトで ssh デーモンがインストールされていません。
次のコマンドでインストールしてやる必要があります。

# apt-get install openssh-server

以上です。

2009年7月22日水曜日

Ubuntu で Samba

Ubuntu で Samba の設定。
(smb.conf のコメントに writable がないのはなぜだろう)

1. まず、samba をインストールします。

# apt-get install samba

2. Samba アクセス用のパスワードを設定します。

# smbpasswd -a UserName
(UserName の部分は適当に書き換えます)

3. smb.conf を編集します (ホームディレクトリを共有する場合の例)。

writable 以外の項目はコメントアウトされているのを外して編集。
writable = yes は追加します。

# vi /etc/samba/smb.conf
[homes] セクションを以下のように編集
  comment = Home Directories
  browseable = yes
  create mask = 0644
  directory mask = 0755
  valid users = %S
  writable = yes

4. samba デーモンを起動します。

# /etc/init.d/samba start
または
# /etc/init.d/smbd start
# /etc/init.d/nmbd start

5. sysv-rc-conf で起動時に Samba が起動するように設定します。

この設定は不要かもしれません。インストール時に起動するように設定されるかも。

# sysv-rc-conf
samba の RunLevel 2345 を有効にします。

6. Windows からアクセスできるか確認します。

エクスプローラで \\192.168.0.1\UserName でアクセスできるか確認。 パスワードを聞かれたら、2. で設定したパスワードを入力。

■ 2019/11/22 追記

Windows10 で接続するときにエラーになる場合、下記を /etc/samba/smb.conf に追記する。

   min protocol = SMB2
   max protocol = SMB2

■ 2022/09/30 追記

Windows10 から認証アクセスできない事がある場合、下記を設定する。
デフォルトは bad user

   map to guest = never

2009年7月18日土曜日

[Obsolete] Ubuntu で Synergy を設定する (obsolete)

この投稿は古くなりました (2013/5/20)。
こちらを参照してください。
まさおのブログ (表): Ubuntu 12.04 で Synergy を設定する

Ubuntu で Synergy を使うときのメモ。

1. synergy をインストールする

# apt-get install synergy

2. /etc/gdm/Init/Default を編集する

# vi /etc/gdm/Init/Default
末尾 exit 0 の前に以下を挿入
/usr/bin/synergyc 192.168.0.1     (192.168.0.1 は Synergy サーバの IP アドレス)

3. システム→セッション→自動起動するプログラムに以下を追加

$ /usr/bin/synergyc 192.168.0.1     (192.168.0.1 は Synergy サーバの IP アドレス)

4. Synergy サーバ側の設定 (省略)

2009年7月17日金曜日

Vim で矩形編集

Linux で設定ファイルとかの編集は Vim を使うことがたびたびあります。
シェルスクリプトや設定ファイルで、複数行のコメントをまとめて外したり、
コメントアウトしたり。
そんなときに必要なコマンドをまとめます。
うまくいかんやん。という場合は、Vim を使ってない可能性があります。
which vi で、Vi の実態が何か辿っていくと良いでしょう。
(vi.tiny だったりする)

矩形選択方法は、編集モードにして、Ctrl-v で始点を決定して、カーソルを移動します。
その後で、以下のコマンドを実行します (他にもありますが、使うのはこれぐらいでしょう)。

コマンド説明
d矩形を削除
I矩形の直前に追記 ("アイ"の大文字)
A矩形の直後に追記
c矩形を置換

以下、編集例。

■ d: 矩形範囲を削除 (コメントを外す場合等)

行頭の # 部分を Ctrl+v 押下後、カーソル移動で矩形選択し、d。

#aaa
#bbb
#ccc
↓
aaa
bbb
ccc

■ I: 矩形範囲の前に追記 (コメントアウトする場合等)

行頭を Ctrl-v 押下後、カーソル移動で矩形選択し、I + # + Esc。

aaa
bbb
ccc
↓
#aaa
#bbb
#ccc

■ A: 矩形範囲の直後に追記 (インデント整形したい場合等)

スペースを挿入したい部分で Ctrl+v 押下後、カーソル移動で矩形選択し、A + (スペース) + Esc)

aaa= 1
bbb= 1
ccc= 2
↓
aaa = 1
bbb = 1
ccc = 2

■ c: 矩形範囲を置換 (まとめてパラメータを置換する場合等)

パラメータ部分を Ctrl+v 押下後、カーソル移動で矩形選択し、c + 0 + Esc)

aaa = 1
bbb = 1
ccc = 2
↓
aaa = 0
bbb = 0
ccc = 0

2009年7月16日木曜日

Excel で今日の日付を入れるショートカット (Ctrl+;)

今日は Excel の小技。

Excel で今日の日付を入れる機会って結構あります。
昨日までは 2009/07/15 と、まじめに打ち込んでいました。
あぁ、そうです 10 年ぐらいはそうしていました。
今日からは Ctrl+; で入れるようにします。

他にも知らないショートカットってあるんだろうなぁ。


2009年7月9日木曜日

Firefox で PDF ファイルが表示できなくなった時の対処法

Windows の Firefox で PDF ファイルが表示できなくなることがたまにあります。
Adobe Reader をアップデートした後とかにダメになることがあります。
Adobe Reader がアップデートしたら、直るかなと思い、
しばらく我慢して、使い続けてみましたが、アップデートしても直りませんでした。
(ちょっとイライラ)

google で調べてみると、本家本元に情報がありました。
Firefox で PDF ファイルを表示する
説明の通りにやっていくと、あっさり解決。
「プラグインを再インストール」のところで直りました。
はやくやっとけば良かったな (反省)。

2009年7月3日金曜日

halt ユーザの作成方法 (Ubuntu)

Fedora で halt ユーザを作る方法を Ubuntu でやってもうまくいきませんでした。
Ubuntu でやる場合は以下の手順でやります。

GUI ログインする場合はシャットダウンできません。
CUI から halt ユーザでログインするとシャットダウンできます。

■ halt ユーザを作成 (今回は uid=14 で設定)

# useradd -u 14 -g 0 -d /sbin halt

■ shutdown 用シェルスクリプトを作成

# vi /usr/local/sbin/shutdown_now
#!/bin/sh
sudo /sbin/shutdown -h now

# chmod 755 /usr/local/sbin/shutdown_now

■ vipw で passwd ファイルを編集

# vipw
halt:x:14:0::/sbin:/usr/local/sbin/shutdown_now

(halt ユーザログイン時に /usr/local/sbin/shutdown_now が実行される)

■ vipw で shadow ファイルを編集

# vipw -s
halt::14427:0:99999:7:::

(halt: の後の * を削除します)

■ sudo 設定を編集

# visudo
halt    ALL=(ALL) NOPASSWD: /sbin/shutdown -h now

2009年7月1日水曜日

Ubuntu で 複数の NIC を使う

Ubuntu で複数の NIC を使用する場合のメモです (Ubuntu 8.04.2 LTS で確認)。
NIC とインターフェイスを明示的に割り当てる場合は、
/etc/udev/rules.d/70-persistent-net.rules を編集します。

ちなみに、Fedora は /etc/modules.conf を書き換えるだけです (説明省略)。

今回の例は、
マザーボードに搭載されている e1000e に eth0 を
PCI バスに差した 3c59x に eth1 を割り当てています。

最後の NAME="eth*" の部分を編集して、割り当てたい番号を設定すれば OK。

# vi /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x8086:0x10de (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:22:44:66:88:AA", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x10b7:0x9050 (3c59x)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Ubuntu は NIC を差し替えても、このファイルは書き換わらず、追記されていきます。
なので、別の NIC に差し替えた後で起動すると、2 つしか NIC が無いのに、
eth0, eth2 が有効になります。困ったちゃんです。
そのうち Ubuntu の癖に慣れると思います。

2009年6月29日月曜日

Ctrl-c が効かない端末で、Ctrl-c が効くように設定する

あまりこんなことは無いんですが、シリアルとか ssh, telnet でログインした端末で、
Ctrl-c によるプログラムの停止ができないことがあります。

こんな時の対処方法。

まず、stty コマンドで intr が設定されているか確認する。

$ stty -a
intr = の設定を確認する。

intr が設定されていなければ、以下を実行する

$ stty intr "^c"

これで Ctrl-c が効くようになるはず。

他にも効かないキーがあれば、設定可能。

$ stty intr "^C" erase "^H" kill "^U" eof "^D" susp "^Z"  

2009年6月28日日曜日

Virtual Desktop for Win32

Windows で無いと困るソフトの 1 つに Virtual Desktop for Win32 (フリーソフト) があります。
http://homepage1.nifty.com/salt/VD.htm
Virtual Desktop 使用歴はかれこれ 14 年。最初は、Solaris 上の FVWM のやつを使っていました。

Virtual Desktop を使い始めた当時から、どのデスクトップにどのウィンドウを開くか決めていて、
タスクバーやタスクリストでウィンドウを切り替えるのではなく、
デスクトップを切り替えることでウィンドウを切り替えるようにしています。
画面の切り替えは Ctrl+矢印キー で行います (VD for Win32 のデフォルトからは変更しています)。

デスクトップは 2×4 (横 2 個、縦 4 個) で使います。
各デスクトップの役割は以下の通りです。

・メーラ (Meadow+Mew)
・エディタ
・ブラウザ (Firefox)
・Office 系 1 (資料作成用)
・エクスプローラ
(未使用)
・Office 系 2 (資料作成用/参照用)
・エクスプローラ
(未使用)
・Office 系 3 (資料作成用/参照用)
・エクスプローラ
(未使用)

こうしておくと、Office 系 1 で作業中にメールを読むときは Ctrl+↑。
そこからブラウザは Ctrl+→。
また作業に戻るときは Ctrl+←、Ctrl+↓。
そこからブラウザを見たいときは Ctrl+↑、Ctrl+→。
場所を決めておけば、タスクリストからウィンドウを探す必要が無くなります。
この配置はお薦めです。

タスクバーやタスクリストを探している方。その時間もったいないですよ。

2009年6月26日金曜日

Dell OPTIPLEX 760 の Intel 82567LM-3 (e1000e) を Linux で動作させる方法

Dell OPTIPLEX 760 に Linux (Ubuntu, Fedora) をインストールしたところ NIC が動作しない。
カーネルを 2.6.30 にしてもダメ。
NIC は Intel 82567LM-3 (e1000e) が載っていて、ドライバが無いから動かない状態…。
ということで、カーネルツリーにドライバが入るまでのつなぎとして(そのうちはいるでしょう)、
ドライバをソースからビルドして使えるようにします。

1. http://www.intel.com/ から、下記ドライバをダウンロードします。

e1000e-0.5.18.3.tar.gz

2. 展開して、ビルド & インストールします。

$ tar zxvf e1000e-0.5.18.3.tar.gz
$ cd e1000e-0.5.18.3/src/
$ make
$ sudo make install

3-A. Ubuntu の場合、/etc/modules ファイルを編集します。

$ sudo vi /etc/modules

e1000e
を追加します。

3-B. Fedora の場合、

$ sudo vi /etc/modprobe.conf

alias eth0 e1000e
を追加します。

4. 再起動します。

Fedora の方は起動時に変なメッセージが出るなぁ。とりあえず、使えるのと、つなぎなので追求しません。

■ 2009/08/05 追記

2.6.30.4 あたりから、カーネルソースに組み込まれたようです。
いつから組み込まれたかは、未確認です。
最新カーネルのビルド方法は Ubuntu で kernel をソースコードからビルドする を参照。

● Dell, optiplex, 760, Intel, 82567LM-3, e1000e

2009年6月23日火曜日

Ubuntu で USB 無線 LAN アダプタ ( Buffalo WLI-UC-GN ) を使う (更新版)

会社の PC (Ubuntu 8.04 LTS) でカーネルを 2.6.30 にあげた後で気が付いたのですが、WLI-UC-GN のドライバがビルドできない。こりゃいかんということで、更新します。
Ubuntu 8.04 に限らず、8.10, 9.04 でもいけると思います。
前回の Ubuntu 8.10 で USB 無線 LAN アダプタ (Buffalo WLI-UC-GN) を使う は obsolete。

参考:Akinekoの日記
Linux(Ubuntu 9.04)で未対応USB無線LANアダプタ(WLI-UC-GN)の設定方法
(勝手に相互リンク!)

1. 下記の場所から最新ドライバをダウンロードする (RT3070USB(RT307x) を選択)
http://www.ralinktech.com/support.php?s=2

2. ダウンロードしたファイルを展開する

$ tar jxvf 2009_0525_RT3070_Linux_STA_v2.1.1.0.tar.bz2

3. os/linux/config.mk を編集する

$ cd 2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/
$ vi config.mk
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=n

# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n

を以下のように修正する (WPA_SUPPLICANT 関連オプションを ”y” に変更)

# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y

# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

4. WLI-UC-GN を PC の USB ポートに挿入し、デバイス ID を調べる

$ lsusb
...
Bus 001 Device 003: ID 0411:015d MelCo., Inc.
...

5. 2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/usb_main_dev.c を編集する

$ vi 2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/usb_main_dev.c
struct usb_device_id rtusb_usb_id[] 
に以下を追加
{USB_DEVICE(0x0411,0x015d)}, /* Melco */

5. make & make install する。

# make
# make install

■ 2009/10/08 追記

kernel 2.6.31.3 の環境でビルドしようとすると、エラーでビルドに失敗しました。
いつからできなくなったのか、わかりません。
新しいドライバは公開されていないし、kernel のバージョンを落とそうかな。

■ 2009/11/18 追記 (速報)

下記のサイトからパッチ rt3070-2.6.31-compile.patch.gz をダウンロードして、
http://www.megaupload.com/?d=2NDDOFTR
kernel 2.6.31.6 (ソース) の環境でビルドしたところ、ビルドが通りました。
あと、RT3070USB(RT307x) のドライバは更新されていて、20091106 版がでていました。
近いうち、更新したいと思います。
これまで通りの作業にパッチを当てる作業が追加されるだけなので、急がれる方は試してみては?

● WLI-UC-GN

2009年6月21日日曜日

ssh のエスケープシーケンス ~.

telnet のエスケープシーケンスは ^] で知っていたのですが、
ssh のエスケープシーケンスは?
調べたところ、~. (チルダ、ドット) でした。

telnet や ssh で接続している端末が電源 OFF になった場合に、
そこから復帰するときに使います。

telnet のエスケープシーケンス^]
ssh のエスケープシーケンス~.

2009年6月18日木曜日

Windows で a2ps (ak2pr = 「ak2ps のようなもの」)

Windows でテキストファイルを印刷するときには ak2pr を使っています。
Meadow や Mew から印刷するときに便利です。
フォントの設定や、2 段組、3 段組、4 段組…、段数も任意に指定可能。
クリップボード印刷も可能なので、お使いのテキストビューアで印刷したい範囲をコピーすれば、印刷できます。

# ちょっとアイコンが変なんですが… (失礼)

Fedora を USB メモリからインストールできるようにする方法

最近の PC は USB ブートできるようになりました。
あと、USB メモリも安価で大容量のものが入手できるようになりました。
こうなってくると、Linux のインストーラを DVD とかに焼かなくても、USB メモリからインストールすればいいじゃん。
ということになってきます。
USB メモリインストーラの作成方法をまとめます。

作業は WindowsXp PC で行いました。Linux でも同様の手順でできるはずです。

1. まず、iso ファイルをダウンロードします。
(今回は Fedora11 の iso ファイルを使いました)

2. USB メモリをフォーマットします。
(説明省略)

3. Unetbootin をダウンロードします。
http://unetbootin.sourceforge.net/
今回は Windows 版を使いました (Linux 版もあります)。

4. Unetbootin を起動し、以下のように設定します。

実行中の画面はこんな感じです。

※ 最初、iso ファイルを DAEMON Tools Lite (Free) でマウントしてファイルをコピーしてみましたが、ブートしませんでした。
(ブートフラグも立ってないし、ま、それは無理というもの)

■ 2009/06/19 追記

早速、Fedora11 をインストールしようとしたが、途中から進めなかった (調査中)

■ 2009/06/26 追記

インストーラが、途中から USB を認識してくれなくなるようで、この方法はダメですね。
iso イメージを USB に焼く方法として利用します (おしいなぁ)。

2009年6月17日水曜日

Ubuntu で kernel をソースコードからビルドする (make-kpkg 編)

最新の Linux kernel を利用するには、ソースからビルドするしかありません。
Ubuntu でそれをやる場合、Fedora とは違う作法があるようです。

1. kernel ソースを kernel.org からダウンロードします。
(2009/06/17 時点の最新版は 2.6.30)

2. ダウンロードしたソースを展開します。

# cd /usr/src
# tar jxvf linux-2.6.30.tar.bz2

3. 今起動している kernel のコンフィグファイルを /boot/ ディレクトリからコピーします。

# cd linux-2.6.30/
# cp /boot/config-2.6.27-11-generic .config

4. make menuconfig を実行します。ここで設定を変えてもいいです。
(変えたいときだけ変える程度)

# make menuconfig

5. make-kpkg でビルドします (パッケージ管理するため)。

# make-kpkg --initrd kernel_image kernel_headers

※ make-kpkg の前に CONCURRENCY_LEVEL=2 を付けると、処理の並列化が図れます。

# CONCURRENCY_LEVEL=2 make-kpkg --initrd kernel_image kernel_headers

※ kernel-package が無い場合はインストールしておきます。
# apt-get install kernel-package

6. 一つ上のディレクトリに deb ファイルが作成されるのでインストールします。
(この deb ファイルを配ると、他のメンバーのビルドの手間が省けます)

# cd ..
# dpkg -i linux-image-2.6.30_2.6.30-10.00.Custom_i386.deb
# dpkg -i linux-headers-2.6.30_2.6.30-10.00.Custom_i386.deb

7. grub の設定を変更します。

# vi /boot/grub/menu.lst
大抵の場合 default 0 に設定すれば、インストールしたカーネルで起動します。

■ 2009/08/04 追記

カーネル Ver.2.6.30.3 で運用中に、Ver.2.6.30.4 とかにアップデートしようとすると、
下記のエラーが出て、アップデートできません。

# dpkg -i linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb
Selecting previously deselected package linux-image-2.6.30.4.
(Reading database ... 147376 files and directories currently installed.)
Unpacking linux-image-2.6.30.4 (from linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb) ...
Done.
dpkg: error processing linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb (--install):
 trying to overwrite `/lib/firmware/av7110/bootcode.bin', which is also in package linux-image-2.6.30.3
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Running postrm hook script /sbin/update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.30.3
Found kernel: /boot/vmlinuz-2.6.24-19-generic
Found kernel: /boot/memtest86+.bin
Updating /boot/grub/menu.lst ... done

Errors were encountered while processing:
 linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb

こんなときは、運用中のパッケージを削除してから、インストールします。
※ これをやるときは、かならず起動できるカーネルイメージを 1 つは残してからやること。
※ インストールしたカーネルが起動しなかったときは、残しておいたカーネルで一旦起動してから、復旧させる必要があります。

途中、Do you want to abort removal now? と聞かれますが、
No を選択します。

# dpkg -r linux-image-2.6.30.3
(Reading database ... 147375 files and directories currently installed.)
Removing linux-image-2.6.30.3 ...
Ok, proceeding with removing running kernel image.
Running postrm hook script /sbin/update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.24-19-generic
Found kernel: /boot/memtest86+.bin
Replacing config file /var/run/grub/menu.lst with new version
Updating /boot/grub/menu.lst ... done

The link /vmlinuz is a damaged link
Removing symbolic link vmlinuz
Unless you used the optional flag in lilo,
 you may need to re-run your boot loader[lilo]
The link /initrd.img is a damaged link
Removing symbolic link initrd.img
Unless you used the optional flag in lilo,
 you may need to re-run your boot loader[lilo]

■ Do you want to abort removal now?
 → No を選択

そのあとで、インストールします。

# dpkg -i linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb
(Reading database ... 144924 files and directories currently installed.)
Unpacking linux-image-2.6.30.4 (from linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb) ...
Done.
Setting up linux-image-2.6.30.4 (2.6.30.4-10.00.Custom) ...
Running depmod.
Finding valid ramdisk creators.
Using mkinitramfs-kpkg to build the ramdisk.
Running postinst hook script update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.30.4
Found kernel: /boot/vmlinuz-2.6.24-19-generic
Found kernel: /boot/memtest86+.bin
Replacing config file /var/run/grub/menu.lst with new version
Updating /boot/grub/menu.lst ... done

■ 2009/09/25 追記

make-kpkg 実行時に、CONCURRENCY_LEVEL を設定することで、並列処理が図れることを追記。

■ 2011/03/30 追記

カーネル Ver.2.6.38.2 をビルドする時に下記のエラーが出ました。

The UTS Release version in include/linux/version.h
    ""
does not match current version:
    "2.6.38.2"
Please correct this.
make: *** [install/linux-image-2.6.38.2] Error 2

この手のエラーが出た時は、下記を実行して再ビルドすれば OK。

# cp include/generated/utsrelease.h include/generated/compile.h include/linux/
● kernel, build

2009年6月13日土曜日

DDforWindows

ブートイメージとかを USB メモリに焼く場合に、Linux だと dd を使えば良いのですが、
Windows しか無い場合はどうしたらいいの? と調べてみたらありました。

DDforWindows

無料。無保証。業務にも使用可能! すばらしい! > シリコンリナックス株式会社

ということで、使わせていただきます。

スクリーンショットはこちら。

● Windows, dd, img, イメージファイル

2009年6月7日日曜日

パッチ (patch, diff) メモ

diff と patch の使い方メモ。

■ パッチファイルを作る

ファイル単位のパッチを作る場合は、以下のようにします。

$ diff -c FROMFILE TOFILE > PATCHFILE.patch 

ディレクトリ単位のパッチを作る場合は、以下のようにします。

$ diff -crN FROM_DIR TO_DIR > PATCHFILE.patch 

バイナリファイルが含まれる場合は、"-a --binary" を付けたほうが良いかも。

$ diff -crN -a --binary FROM_DIR TO_DIR > PATCHFILE.patch 

■ パッチを当てる

ファイルにパッチを当てるときは以下のようにします。

$ patch < PATCHFILE.patch

ディレクトリにパッチを当てるときは、適用したいディレクトリ上で以下のようにします。

$ patch -p1 < PATCHFILE.patch

-p オプションは相対ディレクトリオプション。
diff を取ったときと相対的に同じ位置にいる場合は -p0 を指定。
違う位置にいる場合は、指定個数分のプレフィックス(ディレクトリ)を取り除いてパッチを適用。

■ 2015/01/25 更新

"-a --binary" の記述追加。

● patch, 作成, パッチ, 作る, diff

2009年6月2日火曜日

他のユーザと screen を共有する方法

ごくごくまれに、他のユーザと screen を共有したいことがあります。
ソースコードのレビューとか、コマンド実行時のログを見せたいとか。
これを活用すると、結構、作業効率が上がると思うんですけどね。
(会社では screen 自体が普及していない…)


他のユーザと screen を共有するためには少し設定が必要です。

■ 設定手順

1. screen のバイナリに suid を立てます。

# chmod u+s /usr/bin/screen

2. /var/run/screen/ ディレクトリに実行権を与えます。
(これをやらないと、screen 自体が立ち上がらなくなるので注意!)

# chmod 755 /var/run/screen/

3. ~/.screenrc に以下を追加します。

multiuser on
acladd ohmoto

以上で準備完了。

■ 共有手順

UserA さんの screen を ohmoto がアタッチ (みられるように) する場合。

1. UserA さんの screen 起動コマンド (hogehoge は共有名)

$ screen -S hogehoge

2. アタッチ側のコマンド (ohmoto 側)

$ screen -x UserA/hogehoge

2009年5月16日土曜日

.vimrc メモ

基本的にエディタは Emacs 派ですが、設定ファイルのちょっとした編集はやはり Vi のもんです。
設定を極めれば、いくらでもカスタマイズできるのでしょうが、最低限の設定は下記のとおり。
Vi (Vim) の設定は ~/.vimrc で行います。

$vi .vimrc
syntax off
set autoindent
set tabstop=4
set expandtab
set vb

各行の意味は以下のとおり。

設定説明
syntax offカラー表示 OFF
set autoindentオートインデント
set tabstop=4TAB サイズ 4
set expandtabTAB をスペースとして扱う
set vbビープ音を鳴らさない

蛇足ですが、Vi 起動中にも設定は変更可能です。
(コマンドモード中に ": (コロン)" + 設定。(例):syntax on とか)

2009年5月1日金曜日

Ubuntu 無線 LAN マネージャを NetworkManager から Wicd に乗り換える

Ubuntu の無線 LAN 接続設定について。
デフォルトでインストールされる NetworkManager はいまいちバグが多いらしいので、
Wicd (Wireless Interface Connection Daemon )に乗り換えました。

apt-get でインストール可能です。

# apt-get install wicd

これをインストールすると、NetworkManager はアンインストールされます。
再起動すると、使えるようになります。
「アプリケーション」→「インターネット」→「Wicd Network Manager」からも起動可能。
有線 LAN、無線 LAN の切り替えも簡単なので、便利。

有線 LAN と無線 LAN を同時に使いたい場合はどうしたらいいのかなぁ? (課題)

■ 2009/07/01 追記

apt-get で wicd をインストールできない場合は deb ファイルをダウンロードしてインストールします。

$ wget http://mirror.yandex.ru/ubuntu/pool/universe/w/wicd/wicd_1.5.9-2_all.deb
# dpkg -i wicd_1.5.9-2_all.deb

2009年4月26日日曜日

microSD 8GB + USB アダプターに Ubuntu 9.04 をインストール

Ubuntu 9.04 Desktop 日本語 Remix CD がリリースされたので、早速 USB ブート環境を更新しました。
8.10 からはアップグレードできるみたいで、最初はそれをやろうと試みたのですが、
アップグレードに 4 時間かかるということで、途中でやめました。
(CD-ROM からインストールして設定しなおしたほうがたぶん早い。HDD だとアップグレードの方が早いかも知れませんが)。
/home ディレクトリだけバックアップしたあとで、CD-ROM から再インストール。
手順は microSD 8GB + USB アダプターに Ubuntu をインストール と同じで OK。

Ubuntu 起動時間短縮 の設定をして、bootchart で測定したところ、起動時間 23 秒 (すばらしい)。

9.10 ではデフォルトで、UTC は使用しないようになったみたいで、 Ubuntu インストール後にする設定
UTC を使わないようにする設定はしなくてよくなりました。

あと、Ubuntu 高速化 の writeback 設定を行ったところ、X が起動しなくなりました。
とりあえず元に戻して relatime モードにしています。
WriteBack モードの設定後に、起動しようとすると、ルートファイルシステムが ReadOnly でマウントされてしまうので、
ReadWrite モードでリマウントして、設定を元に戻します。

# mount -o remount,rw /dev/sdb2 /

2009年4月18日土曜日

[Obsolete] Ubuntu 8.10 で USB 無線 LAN アダプタ (Buffalo WLI-UC-GN) を使う

この投稿は情報が古くなりました (2009/06/23)
こちらを参照してください。
Ubuntu で USB 無線 LAN アダプタ (Buffalo WLI-UC-GN) を使う (更新版)

Buffalo の USB 無線 LAN アダプタ WLI-UC-GN を Ubuntu 8.10 で使えるように設定します。
(1,600 円ぐらい。安い! 小さい!)
参考
https://forums.ubuntulinux.jp/viewtopic.php?id=4376
無線LAN USB アダプタ Planex GW-USMicroN を Ubuntu で使う

1. 以下のサイトからドライバをダウンロード (カーネルモジュール)
http://www.ralinktech.com.tw/data/drivers/2008_0925_RT2870_Linux_STA_v1.4.0.0.tar.bz2

2. ダウンロードしたファイルを展開する

$ tar jxvf 2008_0925_RT2870_Linux_STA_v1.4.0.0.tar.bz2

3. os/linux/config.mk を編集する。

$ cd 2008_0925_RT2870_Linux_STA_v1.4.0.0/os/linux/
$ vi config.mk

# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=n

# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n

を以下のように修正する
(WPA_SUPPLICANT 関連オプションを ”y” に変更)

# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y

# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

4. WLI-UC-GN を PC の USB ポートに挿入し、デバイス ID を調べる。

$ lsusb
...
Bus 001 Device 003: ID 0411:015d MelCo., Inc.
...

5. 2008_0925_RT2870_Linux_STA_v1.4.0.0/include/rt2870.h を編集する。

$ cd ../../include
$ vi rt2870.h
#define RT2870_USB_DEVICES
の定義に以下を追加
 {USB_DEVICE(0x0411,0x015d)}, /* Melco */                \

6. make & make install する。
(make するには linux-headers-*** が必要)

$ cd ..
# make
# make install

/lib/modules/***/kernel/drivers/net/wireless 以下にコピーされない場合は、自分でコピーします。

# cp os/linux/rt2870sta.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/

7. insmod する。

# insmod /lib/modules/2.6.27-9-generic/kernel/drivers/net/wireless/rt2870sta.ko

カーネルのバージョンを変えたときには、再度インストールが必要 (6. の手順)

2009年3月22日日曜日

SkyGateForVNC II を使って実家の PC をリモート操作

実家の PC を買い換えました (最近のノート PC は安くなりました)。
これを機に、実家 (広島) の PC を自宅 (福岡) から操作できるようにしました。

■ 必要なソフト

ソフト説明
Skype (FreeWare)スカイプ
TightVNC (FreeWare)VNC ソフト
SkyGateForVNC II (ShareWare: 1,680 円)Skype の通信を経由して VNC の接続を行うソフト

■ 設定の概要 (実家側:広島)

・Skype, TightVNC, SkyGateForVNC II をインストール
・Skype, TightVNC サーバ が常に起動するように設定
・SkyGateForVNC II の設定: Server

・レジストリ変更 (これを忘れていて、はまった)

[HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3]
"AllowLoopback"=dword:00000000
↓
"AllowLoopback"=dword:00000001
(0 → 1 に変更) 

■ 設定の概要 (自宅側:福岡)

・Skype, TightVNC, SkyGateForVNC II をインストール
・Skype, TightVNC サーバ が常に起動するように設定
・SkyGateForVNC II の設定: Client

■ 接続方法

・実家側で SkyGateForVNC II を起動してもらう
・自宅側で SkyGateForVNC II を起動
・VNC Viewer で localhost に接続

これで OK。

■ レジストリ設定を簡単に変更する方法

今回、実家側 PC のレジストリ設定をするのを忘れてて、いざ、自宅から操作しようとすると、接続できませんでした orz。
調べてみると、レジストリを変更する必要がある模様。
でも、実家の親に REGEDIT を実行させるのは、ちょっと無理。かなり無理。

そんなときは、自宅の PC でレジストリを変更して、その設定をエクスポートして、reg ファイルを作り、
そのファイルを実家に送って、実行してもらえば OK。
PC を再起動してもらうと、接続できるようになりました (勉強になるなぁ)。

2009年2月24日火曜日

CD-RW に ISO イメージを焼く (CD-R も)

Linux で CD-RW (CD-R) に ISO イメージを焼きたいときがあります。
インストールディスクの作成とかで。
GUI でも作成できるのでしょうが (そのやり方を知りませんが(笑))、コマンドでやる方法があります。

Fedora 5 の頃は cdrecord コマンドを使用していましたが、
Fedora 7、Ubuntu 7.04 以降は、ライセンスの関係で wodim になったそうです。
試しに cdrecord コマンドを実行してみると。wodim にシンボリックリンクが張られています。

# cdrecord
wodim: No tracks specified. Need at least one.
Usage: wodim [options] track1...trackn

Use wodim -help
to get a list of valid options.

Use wodim blank=help
to get a list of valid blanking options.

Use wodim dev=b,t,l driveropts=help -checkdrive
to get a list of drive specific options.

Use wodim dev=help
to get a list of possible SCSI transport specifiers.

# which cdrecord
/usr/bin/cdrecord

# ls -l /usr/bin/cdrecord 
lrwxrwxrwx 1 root root 5 2008-06-08 01:47 /usr/bin/cdrecord -> wodim

さて、焼き方ですが。

1. まず、ドライブにメディアを挿入し、デバイス名を取得します。
 一般的には /dev/scd0 とかになると思います。

# dmesg
  または
# lv /var/log/messages

# wodim --devices
  でもいけるみたいですが、うちの環境ではダメでした。

2. 次に、CD-RW のディスクを初期化します (blank=all を指定した場合は遅いです)。

# wodim dev=/dev/scd0 blank=fast

3. CD-RW に ISO イメージを書き込みます (speed の値はドライブに応じて調整してください)
 書き込みが完了したら eject します。

# wodim speed=16 -eject boot.iso

CD-R の場合は 2. の初期化部分をとばせば OK。

2009年2月21日土曜日

ファイルの文字コードを一括変換 (find, nkf, xargs)

あるディレクトリ以下の全ファイルの文字コードを一括変換したいことがあります。
そんなときは以下のコマンドで処理します。
(カレントディレクトリ以下の全ファイルを UTF-8 に変換する場合)

$ find . -type f | xargs -n 10 nkf -w --overwrite

まず、find で ファイルを抽出 (-type f)、
抽出した結果を xargs に引数として渡し、nkf で処理します。

xargs のオプション "-n 10" は、引数を 10 個ずつ渡すの意。
ファイル数が多い場合は、引数を渡しきれないので、追加します (ファイル数が少ない場合は不要)。

以下でも同じ結果が得られますが、xargs を使った方が処理は速いです。

$ find . -type f -exec nkf -w --overwrite {} \;

nkf のオプション

オプション意味
-eEUC に変換
-sSJIS に変換
-wUTF-8 に変換
-jJIS に変換
-LuUNIX 改行コード (LF) へ変換
-LwWindows 改行コード (CR+LF) へ変換
-Lm(Macintosh 改行コード (CR) へ変換)
--overwriteファイルを上書き

● find, xargs, 個ずつ, nkf, 大量

2009年2月16日月曜日

bash のプロンプト設定

bash のプロンプト設定は、結構重要です。
これは覚えるものでもないので、ここにメモしておきます。

$ vi ~/.bashrc
PS1='\e[04m\u@\h\e[00m[\w]: '
を追加

軽く意味を説明します。
(あれ? バックスラッシュとエンマークの表示が変わってる…。エンマークはバックスラッシュに読み替えてください)

文字列意味
PS1プロンプトのシェル変数
\e[04mアンダーライン (開始)
\uユーザ名を表示
@@
\hホスト名を表示
\e[00m初期状態へ (アンダーライン終了)
[[
\w現在のディレクトリ (ホームディレクトリは "~" を表示)
]: ]:

こんな感じになります。

ohmoto@ubuntu-vbox[~]: cd /usr/src/
ohmoto@ubuntu-vbox[/usr/src]:

参考: BashとBashのプロンプト

2009年2月9日月曜日

rsync でバックアップを取る

ディレクトリのバックアップを取る場合、ベーシックな手段として rsync を使います。
(RAID とかでもいいですが、やっぱりこれが安心です)
差分しか転送しないので、コピーするより断然早いです。
cron と組み合わせて自動バックアップすることも良くやります。

# rsync -aAX --delete /home/ /Backup/home/

コマンドが間違っていないか、事前に -v, --dry-run オプションで確認しておくことが重要。

# rsync -aAXv --delete --dry-run /home/ /Backup/home/

■ 2016/05/06 追記
ssh 経由でリモート PC にバックアップを取る場合の例。

# rsync -aAX --delete -e ssh hogehoge/ USER@192.168.0.10:~/hogehoge/

■ 2021/02/16 追記
システム全体をフルバックアップする場合の例。

# rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/root2

● rsync, ssh, バックアップ, backup, exclude, ルート

2009年2月6日金曜日

Word, Excel で「読み取り専用を推奨」 設定にする

ファイルサーバ上で、自分が書いた Word や Excel の仕様書を期間をおいてから参照するときに、
「ただ参照したいだけなのに」
「間違って編集したら怖いなぁ」
と思うことが多々ありましたが、それを解決する良い設定がありました。
ファイル毎に設定することが可能です。

■ 「読み取り専用を推奨」を設定する方法

Word, Excel で、
  [ツール] → [オプション] → [セキュリティ]
  読み取り専用を推奨にチェックを入れる

この設定をしておくと、
ファイルを開く時に、「読み取り専用」にするか、「編集可能」にするか、選択できるようになります。

2009年2月5日木曜日

日本語ファイル名の文字コードを変換

Windows で作ったファイル名が日本語のファイルを Linux で扱う場合、文字化けすることがあります。
変換方法を以下にまとめます。

■ 日本語ファイル名の文字コードを確認する方法

まず、ファイル名の文字コードを調べます。

$ kcc -c filename

■ 日本語ファイル名の文字コードを変換する

以下のコマンドで変換します (ShiftJIS のファイルを UTF-8 に変換したい場合)。

$ convmv -r -f sjis -t utf8 * --notest

変換はせず、どうなるかを確認したい場合は、"--notest" オプションを外します。

$ convmv -r -f sjis -t utf8 *

● 日本語, ファイル名, File Name, 文字, コード

2009年2月2日月曜日

halt ユーザの作成方法 (Fedora)

Ubuntu の場合はこちら

■ halt ユーザについて

サーバの init レベルを 3 にしている場合、halt ユーザを作っておくと、
その端末にログインしなくてもシャットダウンができるようになるので便利です。
(例えば、会社の PC でシャットダウンし忘れて帰宅してしまった場合とか)
最初から GUI ログインにしておけば、こんな設定は不要だったりしまが…。
ただ、その場合はマウス操作が必要になるので、私はこっちが好きです。

参考: init レベル変更方法 (Fedora)

■ halt ユーザエントリを編集

# vipw
halt:x:7:0:halt:/sbin:sudo /sbin/shutdown -h now

■ halt ユーザの shadow パスワードの設定を削除

# vipw -s
(halt ユーザのパスワード部分を削除)

■ sudo 設定ファイルを編集

# visudo
(下記設定を追加)
halt  ALL=/sbin/shutdown -h now

この設定により、ログイン画面で halt と入力するだけで、シャットダウンできるようになります。

2009年2月1日日曜日

init レベル変更方法 (Fedora)

■ init レベル変更方法

サーバ用途の PC では X Window System は、あまり必要ありません。
その場合、Run Level を 3 (フルマルチユーザー テキストモード) で起動します。
設定方法は以下のとおり。

# vi /etc/inittab
(id:5:initdefault: の行の 5 を 3 に変更)
id:3:initdefault:

2009年1月31日土曜日

GNU screen について

■ GNU screen とは

GNU screen は、仮想端末管理ソフトです。CUI で作業をする人は、使って損は無いソフトだと思います。
私は、これを使い始めて 7 年ぐらい経ちました。今では、これが無いと仕事になりません。
GUI に慣れた人たちに勧めると、「ふ~ん、それで?」みたいな反応になりますが…。(^^;
これを使うと何がうれしいかと言うと、1 個の端末ウインドウ内で、複数の端末を仮想的に起動し、キー操作で切り替えることができるようになります。端末ウィンドウを複数起動しなくて良くなるため、画面がゴチャゴチャせずに済みます。
リモートでログインした先でこれ起動すると、1 個のターミナル内で複数のターミナルが使用できます。
あとはキー操作のみで、コピー&ペースト、画面スクロール、画面分割、ログ取得等々できるので、使いこなせば効率的に作業ができるようになります。
そのほかの説明は、"screenのススメ" とかが詳しいので、そちらを参照してください。
Google で検索するときは "GNU screen" で検索してください。"screen" だけだと、一般的な名称すぎて、いろいろ引っかかってしまいます (たぶん、これが普及しない原因!?)。

■ エスケープキー変更

screen を操作するときは、必ずエスケープキーを押す必要があるのですが、デフォルトが Ctrl-a になっていて、このままだと便利ではありません (Ctrl-a は「行頭へ移動」ですよね)。
エスケープキーは設定ファイル ~/.screenrc で変更することができます。
私のお薦めは、Ctrl-t です ( toggle は使わないので)。 Ctrl-z 派も結構いるようです。

$ vi ~/.screenrc
escape ^Tt

■ screen の起動

screen を起動するには、以下のようにします。

$ screen

良く使うので、.bashrc とかに alias 設定をしておくと良いです。(sc で起動、scx でアタッチ)

$ vi .bashrc
alias sc='screen'

function scx () {
    screen -x $1
}

■ .screenrc 設定例

私が育ててきた .screenrc を貼り付けておきます。

escape ^Tt
#termcap kterm hs@
#terminfo kterm hs@
termcap  xterm* 'AF=\E[3%dm:AB=\E[4%dm'
terminfo xterm* 'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
termcap  kterm* 'AF=\E[3%dm:AB=\E[4%dm'
terminfo kterm* 'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
termcapinfo kterm 'hs:ts=\E[?2S\E[?E\E[?%i%dT:fs=\E[?F:es:ds=\E[?E'
termcap  vt100 'AF=\E[3%dm:AB=\E[4%dm'
terminfo vt100* 'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
terminfo cygwin KJ=SJIS
termcapinfo cygwin KJ=SJIS
defencoding UTF-8

termcap  facit|vt100|xterm LP:G0
terminfo facit|vt100|xterm LP:G0

autodetach on
startup_message off
shell /bin/bash

defhstatus "^En:^Et"
defscrollback 9999
hardstatus alwayslastline "%w"

hardcopydir $HOME/.screen
hardcopy_append on

## audible bell
#vbell_msg '%x'
vbell off

## bell on hide window
bell "Bell in window %."
## activitiy on hide window
activity "Activity in window %."

bind 'd' setenv DISPLAY
#bind w windowlist -b
bind ^p paste
bind  p paste
bind ^h prev
bind  k kill

#kanji euc
#defkanji euc

#markkeys 'h=^B:l=^F:$=^E:^U=^Z:^D=^V'

#screen -t root 1 
screen -t bash 0 
#screen -t bash 1 
#screen -t EMACS 0 emacs -nw

multiuser on

■ よく使う screen コマンドリスト

エスケープキーは Ctrl-t、上記 .screenrc を使った場合

コマンド説明
Ctrl-t Ctrl-c新しい端末を生成
Ctrl-t Ctrl-n次の端末へ
Ctrl-t Ctrl-h前の端末へ
Ctrl-t Ctrl-t端末をトグルで切り替え
Ctrl-t k端末を削除
Ctrl-t Ctrl-dscreen をデタッチ
Ctrl-t [コピーモードへ
・vi のカーソル移動キーバインドで移動
・space で範囲選択
・ESC でコピーモードから戻る
Ctrl-t ]ペースト
Ctrl-t Sウィンドウ分割
Ctrl-t Tab分割された他のウインドウへのカーソル移動
Ctrl-t Qウィンドウ分割解除
Ctrl-t Hログ取得 (~/screenlog.* として保存される)
Ctrl-t Aタイトル名変更

2009年1月30日金曜日

RPM DB 再構築コマンド

■ RPM DB 再構築コマンド

Fedora を使っていると、たまに RPM DB が壊れることがある。
復旧するには、以下のコマンドを実行する。

# rpm --rebuild

2009年1月29日木曜日

全パーティション情報を表示する (sfdisk)

■ 全パーティション情報を表示するコマンド (sfdisk)

PC に接続されている HDD の全パーティション情報を表示するコマンド。
ちなみに私の環境では /dev/sda が HDD、/dev/sdb が microSD (USB)。
このコマンドを知るまでは、fdisk 叩きまくってました。

# sfdisk -l

ディスク /dev/sda: シリンダ数 12161、ヘッド数 255、63 セクタ/トラック
ユニット = 8225280 バイトのシリンダ、1024 バイトのブロック、0 から数えます

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+     12      13-    104391   83  Linux
/dev/sda2         13     143     131    1052257+  82  Linux swap / Solaris
/dev/sda3        144    7194    7051   56637157+  83  Linux
/dev/sda4       7195   12160    4966   39889395   83  Linux

ディスク /dev/sdb: シリンダ数 980、ヘッド数 255、63 セクタ/トラック
ユニット = 8225280 バイトのシリンダ、1024 バイトのブロック、0 から数えます

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdb1          0+    123     124-    995998+   b  W95 FAT32
/dev/sdb2   *    124     857     734    5895855   83  Linux
/dev/sdb3        858     979     122     979965   82  Linux swap / Solaris
/dev/sdb4          0       -       0          0    0  空

2009年1月12日月曜日

Firefox アドオンについて

■ 必ずインストールする Firefox アドオン

Google chrome がリリースされてからしばらく経つが、アドオン未対応なので、
いまいち Firefox から移行できない。確かに、動作は速いのだが…。
さて、今回は Firefox を使うときに必ずインストールするアドオンについてまとめておく。

現在、Ubuntu で使用している Firefox のバージョンは 3.0.5。

アドオン名説明
Auto Pager自動的に次のページを読み込む
Tab Mix Plusタブ機能を拡張
All-in-One Sidebarサイドバーを拡張
All-in-One Gesturesマウスジェスチャーを実現
Speed Dialスピードダイアル
Xmarks Bookmark and Password Sync複数の端末でブックマークを同期 (オプションでパスワードも)
Google toolbarFirefox Ver.5.0 以降サポートされないので、代替機能で実現
まさおのブログ (表): Firefox Google toolbar 代替
Chaika2ch ビューア
アルク(英和&和英辞書)用検索プラグイン検索ボックスにアルクを追加
Drag & DropZonesドラッグ&ドロップで検索
KeySnailEmacs キーバインドに変更

■ 必ずとまではいかないけど、便利なアドオン

アドオン名説明
IE Tab PlusFirefox のタブの中で IE を起動する
IE Viewリンクを IE で表示する
aguse.jp検索バーに aguse.jp のURL調査を追加
Unofficial Google Translate選択範囲を翻訳 (範囲選択の後、Alt+左クリック)
Page Hacker現在開いているページを編集 ( Ctrl + F2 )

■ 2010/07/08 内容を更新
■ 2010/12/12 内容を更新 (Chaika)
■ 2010/12/15 内容を更新 (Page Hacker)
■ 2011/02/20 内容を更新 (IE Tab Plus)
■ 2012/02/18 Google toolbar の代替機能に関するリンクを追加
● Firefox, add-on, addon, アドオン

2009年1月9日金曜日

FON La Fonera (FON2200) 設定メモ

La Fonera を直接 PC に接続して設定する方法についてメモしておく。
(IP アドレスをよく忘れてしまう)

■ 2009/01/09 現在のファームウェアのバージョン

0.7.2 r3

■ La Fonera と PC をイーサケーブルで直接接続する

(Auto MDI 対応なので、ストレートケーブルでも OK)。

■ PC の IP アドレスを設定する。

La Fonera の IP アドレスは 169.254.255.1/24 となっているので、
169.254.255.2/24 に設定する。

■ ブラウザで http://169.254.255.1/ に接続する

あとは画面に従って設定すれば良い。

2009年1月8日木曜日

apt 関連まとめ

よく使う apt 関連コマンドをまとめる。

コマンド説明
# apt-get updateサーバからパッケージリストを取得する
# apt-get install [パッケージ名]パッケージをインストールする
# apt-cache search [キーワード]インストール可能なパッケージを検索する
# apt-get upgradeインストールされているパッケージを更新する
# apt-get remove [パッケージ名]パッケージをアンインストールする
# apt-get autoremove依存関係で不要になったパッケージを削除する

2009年1月7日水曜日

Cygwin で tree コマンドをビルド

Cygwin に tree コマンドが無かったので、ソースコードからビルドして
インストールしたので、メモを残しておく。

Cygwin のシェルから Windows の tree.com コマンドを実行 (.com まで指定する必要あり)
する手もあるのだが、階層指定はできないので、ソースコードからビルドする。

まず、以下のサイトからソースコードをダウンロードする

ftp://mama.indstate.edu/linux/tree/

ソースコードを展開する。

$ tar zxvf tree-1.5.2.1.tgz

Makefile を編集。

$ cd tree-1.5.2.1
$ vi Makefile
  # Linux defaults: の下記 2 行をコメントアウト
  #CFLAGS=-O2 -Wall -fomit-frame-pointer -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
  #LDFLAGS=-s

  # Uncomment for Cygwin: の 4 行のコメントを外す 
  CFLAGS=-O2 -Wall -fomit-frame-pointer -DCYGWIN
  LDFLAGS=-s
  TREE_DEST=tree.exe
  XOBJS=strverscmp.o

ビルド&インストール。

$ make
$ make install

日本語ファイル名が化けてしまうようだ。う~ん。

2009年1月1日木曜日

Windows で Firefox Portable Edition を試す

USB (microSD) ブート Ubuntu を実家のノート PC で使おうと思ったら、
なんと FMV-BIBLO NB18D/L は USB ブートできないようだ。
ちょっと古すぎるのか? (2003 年購入)

仕方ないので、microSD に設定しておいた Windows 用領域 1GB に、
Mozilla Firefox, Portable Edition をインストール。

インストール方法は簡単で、インストーラーをダウンロードして実行するだけ。
インストールするフォルダを microSD にすれば OK。
同じフォルダに設定、cookie 等も保存され、PC の ハードディスクには影響を与えない。
別のフォルダにもう 1 個インストールすれば、ユーザ毎に環境を分ける事もできるので、
結構便利。アドオン等も普通にインストールできる。

ちょっと使ったあとで使用容量を調べてみたところ、50MB 程度だった。
この環境はこのまま残しておこう。