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 /