Linuxの高速再起動 - kexec @Debian etch

カーネルバージョン2.6.13からサポートされている機能です。

ランレベル1に移行

# init 1

kexecで再起動設定

# kexec -l /boot/vmlinuz-2.6.16-2-686-smp --append "root=/dev/sda5 ro" --initrd=/boot/initrd.img-2.6.16-2-686-smp

再起動実行

# kexec -e

画面が固まった再起動しない場合は

# kexec -e --reset-vga

で再起動してください。


LinuxでWindowsのように休止状態を使用する@Debian etch

etchからは正常に休止(hibernate s4)が使用できるようです。

# atp-get install hibernate
# vi /etc/initramfs-tools/conf.d/resume

このファイルに以下のようにSWAPパーティションを記述します。

RESUME=/dev/hda3

あと、カーネルオプションも必要かもしれません。

# vi /boot/grub/menu.list
~省略~
kernel          /boot/vmlinuz-2.6.18-4-686 root=/dev/hda4 ro resume=/dev/hda3
~省略~

休止状態を実行

# hibernate-disk

以下のディレクトリに参考のドキュメントがあります。
usr/share/doc/hibernate/*

電源ボタンで休止状態に移行

電源ボタンを押したときのイベントで休止状態に移行する方法です。

# vi /etc/acpi/events/powerbtn

以下の2行のコメントアウトをはずす

event=button[ /]power
action=/etc/acpi/powerbtn.sh

デフォルトでは、電源ボタンを押すと、シャットダウンされてしまうので、以下のように
ファイルを編集

# vi /etc/acpi/powerbtn.sh

既存の行をすべてコメントアウトし、hibernate-diskを実行するようにする

#if pidof powersaved; then
#    exit 0
#fi
#
#if ps -Af | grep -q '[k]desktop' && test -f /usr/bin/dcop
#then
#    dcop --all-sessions --all-users ksmserver ksmserver logout 0 2 0 && exit 0
#else
#    /sbin/shutdown -h now "Power button pressed"
#fi

/usr/sbin/hibernate-disk

rdesktopの改造@Debian etch

LinuxからWindowsのリモートデスクトップに接続するコマンドです。

Debian Etch のrdesktopは日本語のコピペも問題なくできるようになりました。
でも、マウスのスクロールイベントを1回送ると、Windowsでは2回としてカウントされてしまうようですので、ソースを以下のように改造し、再コンパイルしました。

xwin.c

        if (xevent.xmotion.window == g_wnd)
        {
                /* ここに1行追加 */
                if ( !(((button == 640 || button == 896) && flags != MOUSE_FLAG_DOWN)))
                        rdp_send_input(time(NULL), RDP_INPUT_MOUSE,
                                       flags | button, xevent.xbutton.x, xevent.xbutton.y);
        }
        else
        {
                /* SeamlessRDP */
                rdp_send_input(time(NULL), RDP_INPUT_MOUSE,
                               flags | button, xevent.xbutton.x_root, xevent.xbutton.y_root);
        }

再コンパイル時にはlibssl-devが必要になりますので、apt-get でインストールしてください。
個人的にはmake installするのが嫌いなので、rdesktopのバイナリだけをコピーしようと考えていましたが、configureでprefixをきちんと指定してあげておかないとうまく動きませんでした。

# ./configure --prefix=/usr/
# make

後はできたrdesktopコマンドを /usr/bin/rdesktop に上書きするだけで使えます。

※実際には上書きするまえにバックアップをとっておくことを推奨します


apt系コマンド

インストールの管理にDebian系ではaptを使いますが、すぐ忘れてしまうのでメモ書きです。

  • apt-get

update パッケージリストを取得・更新する
upgrade インストール済みのパッケージをアップグレードする
install 新規にパッケージをインストールする
remove インストールされたパッケージを削除する
source ソースパッケージを取得する
build-dep ソースパッケージのビルド依存情報を設定する
dist-upgrade ディストリビューションをアップグレードする
clean ダウンロードしたアーカイブファイルを削除する
autoclean アーカイブファイルの中で古いものを削除する
check 壊れた依存関係がないかをチェックする

  • apt-cache

add パッケージファイルをソースキャッシュに追加する
gencaches パッケージ/ソースキャッシュを生成する
showpkg 単一パッケージの一般情報を表示する
showsrc ソースレコードを表示する
stats 基本ステータス情報を表示する
dump すべてのファイルを表示する
dumpavail 存在するファイルを標準出力に出力する
unmet 未解決の依存を表示する
search 正規表現によってパッケージを検索する
show パッケージの情報を表示する
depends 指定パッケージが依存しているパッケージを表示する
whatdepends 指定パッケージに依存しているパッケージを表示する
pkgnames すべてのパッケージ名を表示する
dotty GraphVis?用のパッケージグラフを生成する
xvcg xvcg用のパッケージグラフを生成する
policy ポリシー設定情報を表示する


Apacheのプロキシ(proxy)機能

Apacheにはフォワードプロキシやリバースプロキシの機能があります。
フォワードプロキシは、Apache上のあるURLにアクセスした場合、他のサーバへ転送できます。

リバースプロキシは、クライアントから見れば同一サーバにアクセスしているのに、実は他のサーバをアクセスしているようにできます。
ファイアウォール内のサーバに外部からアクセスさせたい場合に有効です。
以下のような設定をします。

      UseCanonicalName on
      ProxyRequests Off
      <Proxy *>
              Order deny,allow
              Allow from all
      </Proxy>
      ProxyPass /hoge/ http://192.168.1.2:8008/abcd/
      ProxyPassReverse /hoge/ http://192.168.1.2:8008/abcd/

上記の場合”http://公開IP/hoge/”にアクセスした場合、実際にはローカルの”http://192.168.1.2:8008/abcd/“がアクセスされます。(ProxyPass機能)
またHTTPヘッダ内の”http://192.168.1.2:8008/abcd/iii/“は”http://ServerName/hoge/iii/“に書き換えられます。(ProxyPassReverse機能)
なので、ServerNameはきちんと設定しておく必要があります。また

UseCanonicalName on

も指定しておく必要があります。