2013年10月19日土曜日

Linux PC を使ってネットワークシミュレーション (bridge tc 帯域制限 遅延 パケットロス)

Linux PC を使って、簡易的にネットワークの帯域制限、遅延をシミュレーションする。

ネットワークを下記のように構成。

192.168.0.0/24                                   192.168.0.100
+----------+                                     +----------+
|   L2SW   |----------[eth1]     [eth2]----------|    PC    |
+----------+                [br0]                +----------+
                           0.0.0.0
                        +-----------+
                        | Linux  PC |
                        +-----------+

1. bridge-utils をインストール

# apt-get install bridge-utils

2. eth1 と eth2 を bridge 接続する

# brctl addbr br0
# brctl addif br0 eth1
# brctl addif br0 eth2

(設定確認コマンド)
# brctl show br0

3. br0, eth1, eth2 に IP アドレスを設定

# ifconfig eth1 0.0.0.0 up
# ifconfig eth2 0.0.0.0 up
# ifconfig br0 0.0.0.0 up
# route add 192.168.0.0 br0

(ルーティングテーブル確認)
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.255 UH    0      0        0 br0

■下り方向 (eth1 -> eth2) を 500kbps に帯域制限

上り方向を制限したい場合は eth1 に設定する (要は、パケットの出口側に設定)。

# tc qdisc add dev eth2 root tbf limit 200kbit buffer 100kbit/8 rate 500kbit

(設定解除)
# tc qdisc del dev eth2 root 

■下り方向 (eth1 -> eth2) を 10% パケットロスさせる

# tc qdisc add dev eth2 root netem drop 10%

■下り方向 (eth1 -> eth2) を 1 秒遅延させる

# tc qdisc add dev eth2 root netem delay 1000ms

■下り方向 (eth1 -> eth2) を 200ms ± 20ms 遅延させる(正規分布)

# tc qdisc add dev eth2 root netem delay 200ms 20ms distribution normal

■設定解除

tc qdisc del dev eth2 root

■パケットロスの状況を確認する (watch コマンドと tc を併用)

# watch -n 1 -d tc -s -d -r qdisc show

● tc, ネットワーク, network, シミュレーション, simulation, netem, 帯域制限, 遅延, パケットロス, bridge, トラフィックコントロール
delay, packet loss, スループット

2013年10月12日土曜日

Emacs + Subversion 1.7 で ediff !!

Emacs + Subversion 1.7 の環境で、svn status のモードから "E" で ediff 起動が、ずぅぅぅぅ~っっと、
ずぅぅぅぅ~っっと、使えなかったのが、やっと使えるようになりました。

答えはここにありました。多謝!
http://www.emacswiki.org/emacs/SvnStatusMode

2 年ぐらい不便しとった。

● Emacs, subversion 1.7, svn status, ediff, ediff-revision

2013年9月7日土曜日

バイナリデータを cmp コマンドで比較して、差分を 16 進数で表示

cmp コマンドは、違いのあるバイトのオフセット (10進数) とその値 (8進数) を表示してくれるけど、
欲しいのは、全てが 16 進数の値。
それなら、出力結果を awk で変換するといい。
8 進数 → 16 進数の変換は、先頭に 0 を付けて、16 進数にすれば OK。

$ cmp -l hoge1.bin hoge2.bin | awk '{printf("0x%08X %02X %02X\n", $1, strtonum("0"$2), strtonum("0"$3))}'

0x00000001 26 27
0x00000003 CA CB
0x00000005 A6 A7
0x00000007 D6 D7
0x00000009 6A 6B
0x0000000b CA CB

strtonum は、gawk の拡張機能。

● バイナリ, binary, 比較, 差分, cmp, diff, compare, 16 進数, 10 進数, 8 進数, hex, strtonum

2013年8月27日火曜日

gcc プリプロセッサの中間ファイルを消さない CFLAGS += -save-temps=obj

gcc でプリプロセッサの中間ファイルを消さないオプション。
オブジェクトファイルが生成されるディレクトリと同じディレクトリに *.i, *.ii ファイルが生成される。
どの行のコードが有効かチェックするときに使える。

CFLAGS += -save-temps=obj

■ 参考
http://gcc.gnu.org/gcc-4.5/changes.html

● gcc, プリプロセッサ, #ifdef, #if defined, #define, -D, 有効コード, save-temps

2013年8月16日金曜日

arping を使って、同一サブネットに接続されている端末を探す

arping コマンドを使って、同一サブネットに接続されている端末を探す方法。

192.168.0.0/24 ネットワークの実行例。
192.168.0.1 ~ 192.168.0.254 の IP アドレスに対して arping を実行。

# for i in `seq 1 254` ; do (arping -c 1 192.168.0.$i &) ; done |  grep reply

■格言
「 ping に応えないやつはいても、arp に応えないやつはいない 」

● arping, ping, ネットワーク, サブネット, network, subnet, 端末, 接続

2013年8月11日日曜日

Linux でシリアル通信キャプチャ jpnevulator

まだ使ったこと無いけど、使う機会があるかもしれないのでメモ。

jpnevulator というのがあるらしい。
http://jpnevulator.snarl.nl/

● シリアル, serial, キャプチャ, capture, データ, linux, ttyS0, ttyUSB0, 通信, 送信, 受信, Tx, Rx

2013年8月3日土曜日

Ubuntu の Network Manager を停止、削除

Ubuntu の Network Manager が、ちょくちょく作業の邪魔をするので削除する。
IP アドレスがいつの間にか消えたり、変わったり...。
(Ubuntu 12.04 LTS 64bit で確認)

■ Network Manager を停止

# /etc/init.d/network-manager stop

■ 自動起動も停止

# update-rc.d -f network-manager remove

● Network Manager, network manager, ネットワーク, マネージャ, 停止, 削除, 邪魔, 設定, 変わる, IP, address, アドレス

2013年7月24日水曜日

busybox の wget で認証付き FTP サーバにアクセス

busybox の wget で認証付き FTP サーバにアクセス。

$ wget ftp://user:pass@192.168.0.1/hogehoge.txt

● busybox, wget, basic 認証, user, pass, ftp, login, ログイン, ユーザ, パスワード

2013年7月13日土曜日

Ubuntu 64bit, 32bit を確認する方法

今使っている Ubuntu が、64bit なのか 32bit なのかを確認する方法。

■ 64bit の場合

# uname -a
Linux masao64 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

# uname -p
x86_64

■ 32bit の場合

# uname -a
Linux masao32 3.2.0-38-generic-pae #61-Ubuntu SMP Tue Feb 19 12:39:51 UTC 2013 i686 i686 i386 GNU/Linux

# uname -p
i686

● Ubuntu, 64bit, 32bit, 確認, コマンド, どっち

Ubuntu 日本語マニュアルインストール

Ubuntu 12.04 64bit で確認。
たまに忘れるのでメモ。

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

● 日本語, マニュアル, man, ja, manual, japanese

2013年7月5日金曜日

Ubuntu Wireshark 起動時のエラー dotfile has been disabled

Ubuntu で、Wireshark 起動時にエラーが出るようになった。その解決方法。
(Ubuntu 12.04 64bit で確認)

下記のエラーが出るようになった。

Lua: Error during loading:
[string     "/usr/share/wireshark/init.lua"]:45: dotfile has been disabled

/etc/wireshark/init.lua ファイルを編集すれば出なくなる。

# vi /etc/wireshark/init.lua

(下記をコメントアウト  -- を付ける)
--    dofile = function() error("dofile has been disabled") end

● Wireshark, 起動, エラー, dotfile has been disabled

2013年6月23日日曜日

Ubuntu 64bit 版で 32bit 用バイナリを動かせるようにする

64bit 版の Ubuntu で 32bit 用バイナリを動かせるようにする。
(Ubuntu 12.04 64bit 版で確認)

かなりの数のパッケージがインストールされるけど、気にしない。

# apt-get install ia32-libs

● Ubuntu, 64bit, 32bit, バイナリ, binary, 動作, 使用, 動かす, 動かない, インストール, install

2013年6月20日木曜日

Word 英単語の途中で改行する

Word で、英単語の途中で改行する方法。
Linux の設定マニュアルとか書いてる時に、コマンドの途中で改行なんかされると読みにくくてしょうがない。
そんな時に必要な設定。
これ、デフォルト設定にできんのやろか。

・「書式」→「段落」を選択。
・「体裁」タブを選択。
・「改行時の処理」の「英単語の途中で改行する」のチェックボックスにチェックを入れる。

● Word, ワード, 英単語, 途中, 改行, 単語, 改行されてしまう

2013年6月19日水曜日

Ubuntu 12.04 64bit 版 gnome-terminal, mlterm の行間が広がる問題

Ubuntu 12.04 64bit 版で、gnome-terminal, mlterm の行間が広がってしまう問題。
mlterm の設定で line_space を変更してもどうしようもない。
ググってみると、解決する方法がみつかりました。コマンド一発で解決。
フォントをいじったり、設定変えてみたり試行錯誤した時間はなんだったのだ!?

# fontconfig-voodoo -s ja_JP

■ 参考
BLOG.MINAWA.NET: 本家Ubuntuの日本語表示問題 Ubuntu 12.04編

● Ubuntu, 12.04, 64bit, gnome-terminal, mlterm, ターミナル, terminal, shell, 行間, line space, 広い, 広がる

Ubuntu 12.04 64bit 版の日本語化

Ubuntu 12.04 64bit 版は、本家のインストーラーしかありません (= 日本語 Remix のインストーラーが無い)。
本家のインストーラーでインストールしたあとで、日本語化するときのメモ。

ここに書いてある方法を実行するだけ。
http://www.ubuntulinux.jp/japanese

$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
$ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
$ sudo wget https://www.ubuntulinux.jp/sources.list.d/precise.list -O /etc/apt/sources.list.d/ubuntu-ja.list
$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install language-pack-ja language-pack-ja-base language-pack-gnome-ja ubuntu-defaults-ja

● Ubuntu, 12.04, 64bit, 64 bit, 日本語, 日本語化, Japanese

Ubuntu で DHCP サーバ

Ubuntu で DHCP サーバの設定をするときのメモ。
Ubuntu 12.04 (32/64bit) で確認。

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

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

# apt-get install isc-dhcp-server

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

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

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

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

# vi /etc/dhcp/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, dhcpd, isc-dhcp-server, dhcpd.conf, dhcp

2013年6月12日水曜日

ifconfig で MAC アドレスを変更

組み込み系の Linux で使うことがあるかもね。
MAC アドレスは一意に設定されるべきものなので、むやみに変えてはいけません。
変更するときは、一旦 I/F をダウンする必要があります。

# ifdown eth0
# ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX
# ifup eth0

● ifconfig, MAC, アドレス, Address, Addr, hw, ether, 変更

2013年6月9日日曜日

Ubuntu 12.04 端末のウィンドウにスクロールバーを表示する

Ubuntu 12.04 で確認。
Ubuntu 12.04 で、端末 (gnome-terminal) とか、その他ウィンドウでスクロールバー (スライダー) が表示されなくなった。
オーバーレイスクロールバー (overlay scroll bar) になってしまって、使いにくい。
これを昔ながらのスクロールバーにする方法。

いろいろ方法があるようだが、/etc/X11/Xsession.d/ のファイルを修正するのが楽ちん。

# vi /etc/X11/Xsession.d/81overlay-scrollbar
(新しくファイルを作成し、下記を記述)

export LIBOVERLAY_SCROLLBAR=0

■ 参考
http://askubuntu.com/questions/34214/how-do-i-disable-overlay-scrollbars
日経 Linux 2013 年 6 月号

● terminal, 端末, gnome-terinal, scroll, bar, overlay, スクロールバー, オーバーレイ, バー

2013年5月22日水曜日

Busybox の tftp コマンドでファイルをダウンロード

■ busybox の tftp コマンドで tftp サーバからファイルをダウンロードするときのメモ。

$ tftp -r [Remote FILE] -g [HOST]

   -r : Remote FILE (サーバにあるファイル)
   -g : Get file (コマンド)

(例)
$ tftp -r hogehoge.bin -g 192.168.0.1

■ アップロードする場合

サーバ側の事前準備

$ cd /tftpboot/
$ touch remote.txt
$ chmod 777 remote.txt

クライアント側から送信

$ tftp -l local.txt -p 192.168.0.1 -r remote.txt

● busybox, tftp, ダウンロード, オプション, アップロード, download, upload, option

2013年5月20日月曜日

Ubuntu 12.04 で Synergy を設定する

Ubuntu 12.04 で Synergy を使うときのメモ。
Ubuntu 12.04 LTS で確認。

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

# apt-get install synergy

動きが変なときは、サイトからパッケージをダウンロードしてインストールしたほうが良いかも。

# apt-get purge synergy
# dpkg -i synergy-*.*.*-Linux-x86*.deb

2. /etc/lightdm/lightdm.conf を編集する (自動起動設定)

# vi /etc/lightdm/lightdm.conf
([SeatDefaults] セクションに以下を追加)

greeter-setup-script=/usr/bin/synergyc [SEVER_HOST_NAME]

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

● synergy, lightdm, 12.04, 自動起動

2013年4月3日水曜日

#ifdef, #endif を削除してソースコードを整理する

ソースコードを整理するために #ifdef, #endif 他を削除したい場合、どうやるのか調べたところ
unifdef というコマンドがありました。
(Ubuntu 12.04 で確認)

1. unifdef をインストール

# apt-get install unifdef

2. カレントディレクトリ以下のソースをすべて処理したい場合のシェルスクリプト例

他にもエレガントな方法がありそうだが、ひとまずはこれで。
-DHOGEHOGE のところに unifdef のオプションを記述。
ちなみに rename コマンドは perl 版。
.svn ディレクトリを除外するようにしてます。

#!/bin/sh
find . -type d -name ".svn" -prune -o -type f -exec unifdef -DHOGEHOGE {} -o {}.unifdef \;
find . -name '*.unifdef' | xargs rename -f 's/\.unifdef$//'

● #if, #ifdef, #ifndef, #elif, #else, #endif, 一括, 削除, 処理, delete, unifdef, スクリプト

find で .svn ディレクトリを除外する

find で .svn ディレクトリを無視するようにする場合のメモ。
-prune で、それ以下のディレクトリを無視する。
.svn ディレクトリを除く、カレントディレクトリ以下のファイルを find する例。

$ find . -type d -name ".svn" -prune -o -type f

● find, .svn, 除外, 無視, 外す, prune

2013年3月30日土曜日

NFS マウントエラー時の対処法 ( svc: failed to register lockdv1 RPC service (errno 111). )

NFS 設定ってたまに失敗する。
今回は Ubuntu 12.04 の NFS サーバのディレクトリをマウントしようとしたら、
svc: failed to register lockdv1 RPC service (errno 111). というエラーが出た。
ググってみると下記に解決方法が書いてあった。
http://forums.xilinx.com/t5/Embedded-Linux/nfs-mount-problem-on-microblaze/td-p/153272

まず、エラーが出た時の mount オプション。
NFS サーバの IP アドレスは 192.168.0.1 (Ubuntu 12.04)。
errno 111 が出る。

# mount -t nfs 192.168.0.1:/hogehoge /mnt/hogehoge

[ 1384.083734] svc: failed to register lockdv1 RPC service (errno 111).
mount: mounting 192.168.0.1:/hogehoge on /mnt/hogehoge failed: Connection refused

こんなときは、mount のオプションを追加してやると良いようだ。

# mount -o port=2049,nolock,proto=tcp -t nfs 192.168.0.1:/hogehoge /mnt/hogehoge

● NFS, mount, errno 111, svc: failed to register lockdv1 RPC service, マウント, エラー, 失敗

Ubuntu で tftp サーバ (tftpd)

Ubuntu で tftpd を設定する方法。
( Ubuntu 12.04 で確認 )

1. tftpd をインストール

# apt-get install tftpd

2. xinetd の設定

/etc/xinetd.d/tftp を作成。

# vi /etc/xinetd.d/tftp
(以下を記述)
service tftp
{
 protocol        = udp
 port            = 69
 socket_type     = dgram
 wait            = yes
 user            = nobody
 server          = /usr/sbin/in.tftpd
 server_args     = /tftpboot
 disable         = no
}

3. /tftpboot ディレクトリを作成&パーミッション設定

# mkdir /tftpboot
# chmod 777 /tftpboot

4. xinetd をリスタート

# /etc/init.d/xinetd restart

● tftpd, tftp, サーバ

2013年3月23日土曜日

Subversion 管理外ファイルの扱い方メモ

Subversion で管理外のファイル (svn status で ? と表示されるファイル) を扱う時のメモ。 (subversion-1.7.8 で確認)

■ svn status で管理外ファイルを表示させない

$ svn status -q

■ 管理外ファイルを一括削除

$ svn status | grep ^? | awk '{print $2}' | xargs rm -rf

● subversion, 管理外, 管理下, ファイル, file, 一括, 削除, clean, delete, svn, status

2013年3月21日木曜日

Ubuntu 12.04 に Subversion 1.7.8 をインストール

Ubuntu 12.04 に Subversion 1.7.8 をインストールした時のメモ。
ビルド時にハマって、試行錯誤の結果なので、いらない作業が含まれているかもしれません。
apt でインストールすると、1.6.x になってしまいます。

1. apache2-threaded-dev libssl-dev libneon27-gnutls-dev をインストール

# apt-get install apache2-threaded-dev libssl-dev libneon27-gnutls-dev

2. APR をソースからビルド

# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.4.6.tar.gz
# tar zxvf apr-1.4.6.tar.gz
# cd apr-1.4.6/
# ./configure
# make
# make install

3. Subversion をソースからビルド

# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/subversion/subversion-1.7.8.tar.gz
# tar zxvf subversion-1.7.8.tar.gz
# cd subversion-1.7.8/
# ./configure
# make
# make install

NEON が無いと、ビルドは通るけどチェックアウトできなかったりしました。
ビルドが通ったら動くよね? って思っちゃうんですが...。

● Ubuntu, 12.04, subversion, 1.7, 1.7.8, ソース, source, APR

2013年3月18日月曜日

Samba でシンボリックリンクの先にアクセスできない

Samba でシンボリックリンクの先にアクセスできない時の対処法。
(Ubuntu 12.04)

/etc/samba/smb.conf を編集。
[global] セクションに以下を追加。

wide links = yes
unix extensions = no

Samba を再起動。

# /etc/init.d/smbd restart

● Samba, シンボリックリンク, アクセスできない, 辿れない, 辿れない

2013年3月4日月曜日

Ubuntu で wins の設定

Ubuntu で wins (Windows のネームサービス) を使えるようにする時のメモ。
(Ubuntu 12.04 LTS で動作確認)

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

# apt-get install winbind

2. /etc/nsswitch.conf を設定する

# vi /etc/nsswitch.conf
(hosts: のところに wins を追記する)

  hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 wins

3. winbind をリスタートする

# /etc/init.d/winbind restart

● Ubuntu, wins, windows internet name service, nsswitch.conf, ネームサーバ, name server

2013年2月20日水曜日

iPod Touch 5 + Jabra EXTREME2 で Siri を使う

iPod Touch 5 用に Bluetooth ヘッドセット Jabra EXTREME2 を買ってしばらく経つが、今まで Siri を使いこなせてなかった。
あるとき、EXTREME2 の 発信/終了ボタンの長押しで Siri が起動することに気づいて、ヘッドセットだけで音楽が再生できるのでは?
と 「再生」 と言ってみても、今の曲 (Podcast) からじゃなくて別の曲から再生が始まってしまう。

ま、滑舌が悪いほうだからね、と諦めていたけど、今日試してみたらいけるようになっていた。
音声認識が改善されたのか?

で、うまく「再生」ができたので、「停止」にチャレンジ。
これはうまくいかない。

何度試してもダメ。

英語で「Pause」も試してみた。これもダメ。

結局のところ、「一時停止」で停止することがわかった。

よしよし。

以上をまとめるとこうなる。

発信/終了ボタン長押しJabra EXTREME2 から Siri を起動。確認音の後に指示を出す。
「再生」再生したいとき
「一時停止」停止したいとき (「停止」はうまくいかない)

● iPod Touch 5, Jabra EXTREME2, Bluetooth ヘッドセット, Siri, 再生, 停止, うまくいかない, 認識, 失敗

Ubuntu で SSD を増設したときのメモ

Ubuntu 12.04 LTS で SSD (SATA) 64GB を増設。その時のメモ。

1. SSD を PC に接続

SSD を /dev/sdb に接続します。
BIOS と起動後の dmesg で /dev/sdb にあることを確認。

2. fdisk でパーティション設定

# fdisk /dev/sdb
(説明省略。ちなみに今回はパーティションは 1 個)

3. ext4 でフォーマット

# mkfs.ext4 /dev/sdb1

4. /etc/fstab 設定

blkid コマンドで、/dev/sdb1 の UUID を調べて、/etc/fstab に追記する。
/ssd というディレクトリにマウント。
SSD は discard オプションを付けておくと良い。

# blkid /dev/sdb1
/dev/sdb1: UUID="9e0ab321-6a96-4b88-9f4f-e5e30fbcd8c6" TYPE="ext4"

# vi /etc/fstab
(下記を追加。UUID は、上で調べたものを記述)
# /ssd is on /dev/sdb1
UUID=9e0ab321-6a96-4b88-9f4f-e5e30fbcd8c6 /ssd          ext4    discard,defaults      0     2

5. マウントポイントを作成し、マウント

# mkdir /ssd
# mount -a

● SSD, 増設, フォーマット, ext4, fstab, discard, UUID

2013年2月8日金曜日

Ubuntu で IPv6 を無効にする

Ubuntu 12.04 LTS で確認。
IPv6 を無効にする方法。

/etc/sysctl.conf を編集。

# vi /etc/sysctl.conf

(以下を追記する)
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

再起動するか、sysctl コマンドで設定を反映。

# sysctl -p

● Ubuntu, IPv6, 無効, disable, sysctl

2013年1月30日水曜日

Ubuntu 12.04 Unity で X-mouse の設定をする

Unity で X-mouse ( マウスポインタがあるウィンドウをアクティブにする ) 設定を行う方法。
X-mouse 無いと困る方はどうぞ ( Unity をやめるという手もある )。

gconf-editor をインストールする。

# apt-get install gconf-editor

gconf-editor を起動し、
apps → metacity → general を選択し、focus_mode を click から mouse に書き換える。

$ gconf-editor

下図参照。

● Ubuntu, 12.04, LTS, Unity, X-mouse, アクティブ, マウス, ポインタ, mouse, pointer

2013年1月24日木曜日

Ubuntu で Emacs 起動時に DBUS エラーが出る

Ubuntu というか Linux でコマンドラインから Emacs を起動した時に 下記のような DBUS エラーが出る時がある。

$ emacs &

** (emacs:6515): WARNING **: Could not connect: Connection refused

(emacs:6515): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Failed to connect to socket /tmp/dbus-Mu1w5LiOZJ: Connection refused

(emacs:6515): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Failed to connect to socket /tmp/dbus-Mu1w5LiOZJ: Connection refused

(emacs:6515): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Failed to connect to socket /tmp/dbus-Mu1w5LiOZJ: Connection refused

(emacs:6515): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Failed to connect to socket /tmp/dbus-Mu1w5LiOZJ: Connection refused

(emacs:6515): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Failed to connect to socket /tmp/dbus-Mu1w5LiOZJ: Connection refused

(emacs:6515): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Failed to connect to socket /tmp/dbus-Mu1w5LiOZJ: Connection refused

** (emacs:6515): WARNING **: Could not connect: Connection refused

これは、ターミナルで screen を起動し、detach -> logout -> login -> attache をした場合に、出るようだ。
このエラーが出ないようにするには、新しい screen を立ち上げてから emacs を実行すればよい。

● Emacs, screen, DBUS, error, D-BUS, /tmp/dbus-, connection refused

Ubuntu 12.04 に Emacs24.2 をインストールする

Ubuntu 12.04 に Emacs24.2 をインストールするときのメモ。

「 PPA=Personal Package Archives 」 を利用します。

# add-apt-repository ppa:cassou/emacs
# apt-get update
# apt-get install emacs24 emacs24-el

2013/1/24 時点では、Emacs 24.2.1 がインストールされました。

$ emacs --version
GNU Emacs 24.2.1
Copyright (C) 2012 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

Emacs をインストールした後の設定メモ。

Mozc を Emacs で使えるようにする。

# apt-get install ibus-mozc
# apt-get install emacs-mozc-bin

init.el に下記を追加。( overlay はうまく表示されない )
https://plus.google.com/102550604876259086885/posts/74LmaNoWs26

(when (eq system-type 'gnu/linux)
  (progn
    (setq mozc-leim-title "[Mozc]")
    (require 'mozc nil t)
    (setq default-input-method "japanese-mozc")
    (setq mozc-candidate-style 'overlay)
;    (setq mozc-candidate-style 'echo-area) ; 複数行で変換候補を表示
    (set-default-coding-systems             'utf-8)
    (set-keyboard-coding-system             'utf-8)
    (set-terminal-coding-system             'utf-8)
    (setq default-file-name-coding-systems  'utf-8)
    (set-face-attribute 'mozc-cand-overlay-even-face 'nil
                        :background "gray" :foreground "black")
    (set-face-attribute 'mozc-cand-overlay-odd-face 'nil
                        :background "gray" :foreground "black")
    )
  )
(add-hook 'input-method-activate-hook
          (lambda() (set-cursor-color "blue1")))
(add-hook 'input-method-inactivate-hook
          (lambda() (set-cursor-color "navy")))

あと、cmigemo も入れておく。

# apt-get install cmigemo

最近、フォントは VL ゴシック がお気に入りなので、これもインストール。

配布しているフォントファイルを展開後、
# cp VL-Gothic-Regular.ttf VL-PGothic-Regular.ttf /usr/local/share/fonts/
# fc-cache -fv

参考:
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0235

● Emacs, 24.2, Ubuntu, 12.04, PPA

2013年1月16日水曜日

Ubuntu 12.04 で、reboot 実行時にハングアップするときの対処法

Ubuntu 12.04 で、reboot を実行した時に、毎回ハングアップしてしまう PC の人は、
下記の設定を試して見ると良い。

# vi /etc/default/halt

INIT_HALT=POWEROFF  を追記

この設定で、Dell OPTIPLEX 780 は、ハングアップしていたのが治った。
Lenovo Ideapad u150 は、ハングアップしないので、PC によってハングアップしたりしなかったりするのかも。

■ 2013/04/01 追記

これだけではダメな時もあって、grub に下記の設定をすると良いみたいだ。

# vi /etc/default/grub
(GRUB_CMDLINE_LINUX の行を変更)

GRUB_CMDLINE_LINUX="reboot=bios"

GRUB の設定を反映して再起動。

# update-grub
# reboot

(参考)
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1002429

● Ubuntu, 12.04, reboot, ハングアップ, フリーズ, 固まる, 失敗, hang up, freeze, リブート, shutdown

Ubuntu 12.04 で、resolv.conf の設定が消える

Ubuntu 12.04 で、resolv.conf に設定した内容が消えてしまう。
起動時に毎回生成されるようになったようだ。

設定したい内容を /etc/resolvconf/resolv.conf.d/base に書いておけば良い。

# vi /etc/resolvconf/resolv.conf.d/base
search hogehoge.org
nameserver XXX.XXX.XXX.XXX

設定後、resolvconf コマンドで設定内容を反映する。
( 起動時に毎回実行される )

# resolvconf -u

設定内容の確認。

# cat /etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver XXX.XXX.XXX.XXX
search hogehoge.org

base ファイルに domain を書いても、それは反映されないようだ ( 謎 )。

■ 2013/4/13 追記

resolv.conf の設定を消去したいとき。

# resolvconf -d eth0

resolvconf -u でも base に書いた設定が反映されないときは強制的に設定する。

# cat /etc/resolvconf/resolv.conf.d/base | resolvconf -a eth0

● resolv.conf, 設定, 内容, 消える, マニュアル, DNS, ネームサーバ, Domain Name Server, resolvconf, 強制

2013年1月12日土曜日

Linux のディスクキャッシュを開放する方法

Linux でディスクキャッシュを開放する方法のメモ
kernel 2.6.16 以降で有効らしい。

# sync
# sync
# sync
# echo 3 > /proc/sys/vm/drop_caches

■ 実行例
sync は 3 回打っちゃうなぁ。

# free
             total       used       free     shared    buffers     cached
Mem:       1924852    1048756     876096          0      42944     552172
-/+ buffers/cache:     453640    1471212
Swap:      1956860          0    1956860

# sync
# sync
# sync
# echo 3 > /proc/sys/vm/drop_caches 

# free
             total       used       free     shared    buffers     cached
Mem:       1924852     740060    1184792          0       2184     280188
-/+ buffers/cache:     457688    1467164
Swap:      1956860          0    1956860

● ディスクキャッシュ, 開放, disk cache, free, drop_caches, sync