Dynabook SS S8にLinuxを!

Dynabook SS S8 (PAS8210LNKW)を入手しました。 これにLinuxをインストールしてみます。

Linuxの動作状況

LANカード Intel e100またはeepro100と手動設定
無線カード Intel PRO/Wireless 2100 LAN MiniPCI 調査中 (未対応らしい)
サウンド Intel i810 sndconfigでi810_audioと設定される

既知の不具合

  1. Windowsの復元にGHOSTが使われているようです。 マニュアルによると、0キーを押しながら電源を押すと、 復元のメニューが現れ、パーティションサイズの変更も可能なはずでした。 ところが、無線LANモデル(PAS8210LNKW)だけは復元しかできません。

    → 東芝のサポートに電話したところ、 修正CD-Rを届けてくれることになりました。

  2. Linuxでは内蔵無線LANが使用できません。 メルコの無線LANカードは使用できました。

  3. Xのドライバの不具合(?)かわかりませんが、 動画再生時に不具合を発生します。 フレームバッファを利用する必要があります。

  4. Linux上では Fnキーを押して、音量を調節したり、 画面の明るさを調整したりできませんでした。

  5. 外部モニタとの切り替え(Fn+F5)を押すと、 外部出力が可能でした。しかし、ログアウトするとwdmの画面でマウスが動かなくなりました。 Ctrl+Alt+BSでXを再起動すると直ります。

目次

  1. Windows上でやっておくこと

    Linuxをインストールする前に、Windowsのバックアップ等を行っておきます。 Windowsを削除しちゃう場合は関係ありません。

  2. Vine Linuxの設定

    標準的な設定や内蔵機器の設定を紹介します。

  3. あれこれやってみよう

    標準外の設定を試した結果を紹介します。



Windows上でやっておくこと

  1. システムの更新をしてもいいかも

    バックアップを取る前にシステムをアップデートしておくのも良いかも知れません。 しかし、Windowsの場合、アップデートすると不具合がでる可能性がありますので、 不具合がなければしなくても良いでしょう。 バックアップ後、アップデートしてください。

  2. バックアップを取る

    ハードディスクをいじるため、Windowsを再セットアップできるように準備しておきます。

    1. DVD-RAMドライブとFDDを用意する

      バックアップはDVD-RAM (or CD-R/RWでも良いと思う)にとることに しました。S8は内蔵ドライブはありませんのでUSBで別に用意します。 今回は手元にあった Panasonic LF-P567Cのマルチドライブと CF-VFDU03 フロッピードライブを使用します。

    2. DVD-RAMをフォーマットする

      DVD-RAMのメディアはフォーマットされていないので、ドライブ付属の DVDFormを使って、UDF 1.5で両面フォーマットします。

    3. 付属のバックアップソフトでバックアップ (Win Proには付いているらしい)

      「スタート」→「すべてのプログラム」→「アクセサリ」→ 「システムツール」→「バックアップ」でバックアップソフトを起動します。 「このコンピュータにある情報すべて」 ですべての領域をバックアップすることにします。 約3.2GB (約45分)。

  3. パーティションを分ける

    取説によると0ボタンを押しながら電源を入れると、再セットアップが可能になるそうです。 パーティションサイズも変更できるハズなので、これを利用することにしました。 が、しかし!システムの復元しか選択できません。Yと入力すると、 出荷状態に戻ります(涙)。早速、東芝のサポートへクレームの電話をいれました。 結局、このモデルだけ何かの間違いでパーティションサイズの変更ができなくなっているそうです。 現在、調査チームを作って解決方法を検討中だそうです。

    (2003/8/5) 修正CD-Rを届けてくれることになりました。 既に、以下のようにパーティションを切っていたので、 うまく動作しませんでした。Linuxに割り当てたパーティションを未設定に戻したら、 パッチが当りました。この際なので、最初からやり直します。

    東芝の回答も待っていられないので、手元にあったSystem Selector 2 を使ってパーティションを分けました。 とりあえず、無事パーティションを区切りました。

    (2003/8/8) 0ボタンを押して起動し、リカバリを実行します。 3のパーティションサイズを変更してリカバリを選択し、Windows領域を 15GBにしました。

    hda1 15GB Windows領域
    hda2 2GB HDDRECOVERY (変更してはいけない)
    hda3 20GB Linux予定領域

Windowsを起動し、あれこれ設定しておきます。


Vine Linuxの設定

Vine Linux 2.6をインストールします。 さらに細かくパーティションを分割します。 Disk Druidで以下のようになりました。

hda1 15GB Windows領域7
hda2 2GB HDDRECOVERY1c
hda3 128MB /boot 83
hda4 20GB 拡張領域f
hda5 10GB /home83
hda6 5GB /83
hda7 4.9GB /extend83
hda8 512MB SWAP82

ビデオカードが認識されなかったので、textでインストールし、 Xの設定はスキップします。LILOはMBRにインストールします。 ブートラベルを指定する際に、hda3 (HDDRECOVERY)にwinとラベルがついて いましのたで、これを消して、hda1 の方にWinXPとラベルを振り直します。

再起動すると、WindowsもLinuxも起動できました。

※ Linuxで再起動(reboot)すると、途中で停止してしまいました。 ハードウェアとの相性が悪いようです。一旦、停止(halt -p)してから 電源をいれることにします。

LANの設定

システムをアップグレードするにしてもLANが使えないと話になりません。 そこで、まずはじめにLANを設定します。kudzuで自動認識しませんでしたが、 /etc/modules.conf に以下を記入し、network起動スクリプトでrestartします。

ネットワークが接続できたら、aptでアップグレードしておきます。

# apt-get update
# apt-get dist-upgrade
# apt-get install kernel#2.4.20-0vl29.1 kernel-headers kernel-source kernel-doc

/etc/lilo.confに新しいカーネルの設定を加え、liloを実行し再起動します。

インストール後、LILOがMBRにインストールされるので、0ボタンを押しても WindowsXPの再セットアップ画面になりません。 /dev/hda2も起動できるように変更します。 以後は再セットアップする場合は、recoveryを選択することになります。 ただし、パーティションIDが「隠しWin95 FAT32(LBA)」(1c)となっているので、 このままではブートしてくれません。再セットアップが必要な場合は、 fdiskで/dev/hda2 のIDをcに変更してから行います。
一度、recoveryで起動すると、/dev/hda1のWindowsのパーティションID が変更されてしまうようです(Windowsが起動しません)。 そのまま、再セットアップすれば問題ありませんが、 途中で中止した場合は、一度Liunxを起動し、fdiskで/dev/hda1 のIDを戻しておきます。

image=/boot/vmlinuz-2.4.20-0vl29.1
        label=linux.new
        read-only
        root=/dev/hda6

other=/dev/hda1
        optional
        label=WinXP

other=/dev/hda2
        optional
        label=recovery

サウンドの設定

sndconfigを使ってサウンドの設定がすぐにできました。i810_audioドライバ が使用されます。

ビデオの設定

その1

ビデオチップが新しいようです。そのため、Xconfiguratorでいくらやっても 設定できませんでした。Intelのホームページに新しいドライバがあったので、 ダウンロードして設定したら、うまく表示されるようになりました。

設定項目 設定値
カードを選択してください Intel 830
モニターの設定 Generic Laptop 1024x768
ビデオメモリ 16mb (?)
ビデオモードの選択 24ビット: 1024x768

一見、これで問題無いようでしたが、gtvとmplayerで動画を再生したら Xもろとも固まってしまいました。 設定がいい加減だったのか? ドライバの不具合なのかまだわかりません。 とりあえず、それ以外は動きそうです。

その2 : フレームバッファを使う場合

動画に対応するためにフレームバッファに切り替えてみることにしました。 こちらでは動画再生に成功しました。

  1. /etc/lilo.confの設定

    フレームバッファを使用するには、起動時にカーネルへオプションを渡す必要があります。 以下のように/etc/lilo.confを書きます。

    prompt
    timeout=50
    default=linux
    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    message=/boot/message
    vga=792                      ※ << 追加 
    lba32
    
    image=/boot/vmlinuz-2.4.20-0vl29.1
            label=linux
            append="video=i810fb:vram=16:hsync1=30:hsync2=55:vsync1=50:vsync2=85:accel:mtrr"   ※ << 追加 
            read-only
            root=/dev/hda6
          

    vga=792は1024x768 24bppの設定です。起動時にVine Linux のロゴが現れたらフレームバッファを(コンソールで)使っています。

  2. /etc/X11/XF86Config-4 の設定

    Xもフレームバッファを使用するように変更します。 Xconfiguratorで生成された/etc/X11/XF86Config-4 を以下のようにします (該当部分のみ)。

    Section "Device"
            Identifier "Intel 855GM"
            Driver "i810"
            BoardName "Unknown"
            VideoRam 32768
    EndSection
    
    Section "Device"
            Identifier "Linux Frame Buffer"
            Driver "fbdev"
            BoardName "Unknown"
    EndSection
    
    Section "Screen"
            Identifier "Screen0"
    #       Device "Intel 855GM"
            Device "Linux Frame Buffer"
            Monitor "Generic Laptop Display Panel 1024x768"
    #       DefaultDepth 24
            Subsection "Display"
                    Depth 16
                    Modes "1024x768"
            EndSubSection
            Subsection "Display"
                    Depth 24
                    Modes "1024x768"
            EndSubSection
    EndSection
          

あれこれやってみよう

無線LAN

内蔵の無線LANが使えないので、メルコ(BUFFALO)の無線LANカードを使えるようにしました。 カード自体はすぐに認識するので、有線と無線の切り替えだけきっちりやれば大丈夫でしょう。

基本設定

有線も無線もDHCPでIPアドレスを取得するとします。起動時は有線LANが eth0として設定されます。無線LANはeth1としますが、起動時はoffにします。

無線LANカード使用時

無線LANカードをスロットに差したときには、有線LANのeth0をdownにし、 無線LANのeth1をupにします。また、ルーティングも変更します。 これらの設定は /etc/pcmcia/network に記述します(以下は抜粋)。

#! /bin/sh
action=$1
device=$2
case "${action:?}" in
'start')
    ### ここから設定を追加
    if [ -f /etc/sysconfig/network-scripts/ifcfg-${device} ]; then
        active=`/sbin/ifconfig  | grep eth0`
        if [ ${#active} -gt 0 ]; then 
            /sbin/ifconfig eth0 down                        # eth0を使用中ならば停止
        fi
        /etc/sysconfig/network-scripts/ifup ifcfg-${device} # eth1の起動
        #/sbin/route add default gw 192.168.1.1             # ルーティング変更
    fi
    ### ここまで
    ;;
'stop')
    #
    [ -f /etc/sysconfig/network-scripts/ifcfg-${device} ] && \
      /etc/sysconfig/network-scripts/ifdown ifcfg-${device}
      ### ここから設定を追加
      /sbin/service network restart                         # eth0を再起動
      ### ここまで
    ;;
'restart')
    /sbin/ifconfig ${device:?} down up
    ;;
esac

cpufreqを使った省エネ(?)

/proc/cpufreq で現在の動作周波数を変更できます。

$ cat /proc/cpufreq 
          minimum CPU frequency  -  maximum CPU frequency  -  policy
CPU  0       124689 kHz ( 12 %)  -     997517 kHz (100 %)  -  performance

/usr/local/sbin/cpufreqと言うシェルスクリプトを用意すれば、 powersaveとperformanceで動作周波数を変えることができます。 powersaveを選択すると、12%に落とすことができます。/proc/cpuinfo で確認すると、124.602 MHz になっています。 performanceを選択すると、100%まで使用します。

# /usr/local/sbin/cpufreq powersave
[root@nerve kawamura]# /usr/local/sbin/cpufreq status
          minimum CPU frequency  -  maximum CPU frequency  -  policy
CPU  0       124689 kHz ( 12 %)  -     500000 kHz ( 50 %)  -  powersave
# /usr/local/sbin/cpufreq performance
# /usr/local/sbin/cpufreq status
          minimum CPU frequency  -  maximum CPU frequency  -  policy
CPU  0       124689 kHz ( 12 %)  -     997517 kHz (100 %)  -  performance

ACPIを利用した設定

電源ボタンで停止

acpiが利用できるので、「電源ボタンで停止(halt -p)」を実行するようにしてみました。 acpidというパッケージがあるので、これをダウンロードします。 設定は /etc/acpi/events/の下にイベントに対応した設定を書いたファイルを用意すればよいです。

電源ボタンを押した際に halt -p を実行するには、例えば /etc/acpi/events/power_off と言うファイルに以下のように書きます。

event=button/power *
action=/sbin/halt -p

event=行は/var/log/acpid に表示される内容をみながら決めます。 action=行は実行するコマンドか、スクリプトのファイル名を指定します。

ふたを閉じたときに省エネモード

cpufreqとacpidを組み合わせると、ふたを閉じた際にpowersaveにすることができます。 また、ふたを開けた際にperformanceに戻すこともできます。 /etc/acpi/actions/lid_down.shと言うシェルスクリプを用意し、 /etc/acpi/events/lid_down に以下のように記述します。

event=button/lid 
action=/etc/acpi/actions/lid_down.sh %e

ふたの開け閉めの判定はbutton/lidが呼ばれた回数が偶数か奇数かで判定しています。 何かの拍子にずれた場合、誤動作するかも知れません。

同様に、ACアダプタが接続されているかどうかで、切り替えることもできます。 /var/log/acpidのイベントの第4引数が 00000000 ならばACアダプタ無しで、 00000001ならばACアダプタ有りと言うことがわかります。

/etc/acpi/actions/ac_adapter.shを用意し、 /etc/acpi/events/ac_adapter に以下のように書きます。

event=ac_adapter
action=/etc/acpi/actions/ac_adapter.sh %e

注! ふたの開閉とACアダプタは互いに連動していません。 従って、ふたを閉めてからACアダプタを刺すと、performanceになります。 イベント駆動式ですから、最後に発生したイベントに依存します。

ソフトウェア・サスペンド(hibernation)

Vine Linux 2.6r3より、ソフトウェア・サスペンドが可能になりました。 hibernationと言うコマンドを実行すると、現在の状態をスワップ領域に 保存して、停止します。次に、電源を入れると、保存してあった元の状態に 戻ってくれます。acpiで「ふた閉じ」を検知して、サスペンドさせてもよいかも 知れません。

ただし、サスペンドに失敗したり、復帰した際に一部のドライバモジュールが 戻らないこともあるようです。使用に際しては、何度かテストを繰り返した方が よいでしょう。復帰の際に、サービスを再起動させることもできるので、設定を ちゃんとすれば使えるはず。

設定

Vine Linux 2.6r3をそのまま使うと、ソフトウェア・サスペンドは無効になって います。以下の設定を行います。
  1. カーネルオプションを設定する (/etc/lilo.conf)

    スワップ・パーティションをデータの保存領域にするので、 カーネルオプションを追加します。/etc/lilo.confに以下のように記述し ます。

    image=/boot/vmlinuz-2.4.22-0vl2.8
            label=linux
            initrd=/boot/initrd-2.4.22-0vl2.8.img
            read-only
            append="resume=/dev/hda8"
            root=/dev/hda6
    

    この設定で、ソフトウェア・サスペンドが有効になります。

  2. ソフトウェア・サスペンド用のソフトウェアをインストールする

    ソフトウェアは http://sourceforge.net/projects/swsusp からダウンロードします。suspend-script を選択してください。ここから、 suspend.shをダウンロードします。

    rootユーザで、suspend.shを実行すると、 /usr/local/sbin/hibernate と言うコマンドがインストールされます。

  3. /etc/suspend.confを確認

    設定ファイルは /etc/suspend.conf です。 特に設定を変更しなくても、使えると思いますが、モジュールが復帰しな い場合などは、このファイルをいじればよいはずです。

サスペンドさせてみる

rootユーザで、/usr/local/sbin/hibernate を実行すると、モジュールの削 除やサービスの停止などを行い、現状を保存します。そして、停止しました。

注!: 再起動するときは、同じカーネルで起動しないと、 壊れるとどこかに載っていましたので、間違っても違うカーネルで起動しないよ うに。私は実験したくはありません。

電源を入れると、一応復帰しました。しかし、USBのモジュールが戻っていなかっ たので、手動で murasakiを再起動しました。これは/etc/suspend.conf をうま く書けば、自動化できるかも。

注!: はじめてサスペンドさせたとき、"-"がいっぱいでて 停止しないことがありました。2回目からはうまく行っています。まだ、失敗す る場合があるようです。


kawamura@ic.sci.yamaguchi-u.ac.jp
Last modified: Fri Dec 19 17:08:25 JST 2003