telnet のエスケープシーケンスは ^] で知っていたのですが、
ssh のエスケープシーケンスは?
調べたところ、~. (チルダ、ドット) でした。
telnet や ssh で接続している端末が電源 OFF になった場合に、
そこから復帰するときに使います。
| telnet のエスケープシーケンス | ^] |
| ssh のエスケープシーケンス | ~. |
主に Linux (Ubuntu, Fedora) 関連の設定メモ&小技集です。たまに Windows 関連ネタも。
(プロンプトの $ は一般ユーザ権限、# は root 権限です。いちいち説明はせんよ。)
telnet のエスケープシーケンスは ^] で知っていたのですが、
ssh のエスケープシーケンスは?
調べたところ、~. (チルダ、ドット) でした。
telnet や ssh で接続している端末が電源 OFF になった場合に、
そこから復帰するときに使います。
| telnet のエスケープシーケンス | ^] |
| ssh のエスケープシーケンス | ~. |
Windows でテキストファイルを印刷するときには ak2pr を使っています。
Meadow や Mew から印刷するときに便利です。
フォントの設定や、2 段組、3 段組、4 段組…、段数も任意に指定可能。
クリップボード印刷も可能なので、お使いのテキストビューアで印刷したい範囲をコピーすれば、印刷できます。
# ちょっとアイコンが変なんですが… (失礼)
最近の 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) でマウントしてファイルをコピーしてみましたが、ブートしませんでした。
(ブートフラグも立ってないし、ま、それは無理というもの)
早速、Fedora11 をインストールしようとしたが、途中から進めなかった (調査中)
インストーラが、途中から USB を認識してくれなくなるようで、この方法はダメですね。
iso イメージを USB に焼く方法として利用します (おしいなぁ)。
最新の 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 に設定すれば、インストールしたカーネルで起動します。
カーネル 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
make-kpkg 実行時に、CONCURRENCY_LEVEL を設定することで、並列処理が図れることを追記。
カーネル 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
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 を指定。
違う位置にいる場合は、指定個数分のプレフィックス(ディレクトリ)を取り除いてパッチを適用。
"-a --binary" の記述追加。
● patch, 作成, パッチ, 作る, diff
ごくごくまれに、他のユーザと 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
基本的にエディタは 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=4 | TAB サイズ 4 |
| set expandtab | TAB をスペースとして扱う |
| set vb | ビープ音を鳴らさない |
蛇足ですが、Vi 起動中にも設定は変更可能です。
(コマンドモード中に ": (コロン)" + 設定。(例):syntax on とか)
Ubuntu の無線 LAN 接続設定について。
デフォルトでインストールされる NetworkManager はいまいちバグが多いらしいので、
Wicd (Wireless Interface Connection Daemon )に乗り換えました。
apt-get でインストール可能です。
# apt-get install wicd
これをインストールすると、NetworkManager はアンインストールされます。
再起動すると、使えるようになります。
「アプリケーション」→「インターネット」→「Wicd Network Manager」からも起動可能。
有線 LAN、無線 LAN の切り替えも簡単なので、便利。
有線 LAN と無線 LAN を同時に使いたい場合はどうしたらいいのかなぁ? (課題)
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
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 /