Top | Wiki | Blog | Github  

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
colinux [2006/08/19 18:14]
takaxp
colinux [2016/08/22 15:37] (現在)
ライン 1: ライン 1:
 +====== coLinux ======
  
 +coLinux は,Windows と Linux を同時に走らせる非常に強力なツールです.デュアルブートでインストールしてある Linux を,再起動することなく Windows から呼び出すこともできます.coLinuxは,VirtualPC のような API レベルの接続ではなく,ネイティブに近いレベルで Linux と接続されているのが特徴で,動作が非常に軽快です.以下,インストールと設定時のトラブルシューティングについてメモします.
 +
 +なお,編集の都合上ファイルに記述する内容については,次のような表記をとります.
 +
 +<​code>​
 +1: 一行目の内容
 +2: 二行目の内容
 +3:              ←空行
 +4: coLinux で遊ぼう♪
 +</​code>​
 +
 +行頭の番号とコロンは実際のファイルには記述されない(しない)ので,間違いのないようにご注意下さい.また,当ページの内容を実践した結果,いかなる問題・障害が起きようとも私は一切の責任を負いません.自己責任でお願い致します.念のため一応LOL
 +
 +^          ^ 詳細 ​                ^
 +| Linux OS | Vine Linux 3.2 (FTP) |
 +| Windows ​ | Windows XP SP2       |
 +| OSの状態 | デュアルブート ​      |
 +| coLinux ​ | version 0.6.4        |
 +| Memory ​  | 2GB (640MBをLinuxへ)|
 +| 試行日 ​  | 2006/​8/​19 ​           |
 +
 +===== 下準備 =====
 +
 +下準備として,すでにデュアルブート環境が構築されているとします.ちなみに,デュアルブート環境を構築する際に非常に便利なツールは次の2つ.
 +
 +  - [[http://​uranus.it.swin.edu.au/​~jn/​linux/​rawwrite.htm|RawWrite]] (Windows上でLinuxのインストールディスク等を作るためのツール.)
 +  - [[http://​www.winimage.com/​bootpart.htm|BootPart]] (Windows上からLinuxのブート情報を抜き出し,起動オプションを追加してくれるツール.起動ディスクが作れないディストリビューションでは重宝します.)
 +
 +私の場合は,パーティションを予め Windows 側から分けておき,そのうちの一つを FAT32 にフォーマットし,そこに Linuxディストリビューション(例えば,Vine Linux)のイメージファイルを配置します.インストールの開始を,インストールディスクから行い,パッケージのインストールはハードディスクに置いたイメージファイルから行います.インストールディスクは,FTPサイトからダウンロードした boot.img を Rawwrite で書き込んだ FD を使用します.このようにすれば,CD-ROMにイメージファイルを焼く面倒が無く,素早くインストール(数分)が終了するのでオススメです.
 +
 +===== インストール(coLinux) =====
 +
 +最新のバージョンを取得します.
 +
 +  * [[http://​www.colinux.org/​|coLinux(総本山)]]
 +  * [[http://​sourceforge.net/​projects/​colinux/​|ダウンロード元(sourceforge)]]
 +
 +今回使用したバージョンは,**0.6.4**です.coLinux はまだ完成されたものではないので,バージョンによって設定の内容などが大きく変わる場合があるので注意が必要です.最終的には全部マウスで設定できるレベルまで行くのではないかなと思っています.
 +
 +インストール途中で,コンポーネントの選択ダイアログが立ち上がります.今回はデュアルブート環境があることが前提なので,
 +
 +> Root Filesystem image Download
 +
 +のチェックは外します.デュアルブート環境がない場合はこれのチェックを入れ,イメージファイル(数GBでしょう)をネットワーク経由で入手することになります.
 +
 +インストール先は,
 +
 +> C:\coLinux
 +
 +としています.コンフィグファイルのデフォルトがこのパスです.
 +
 +===== Linux 側の設定 =====
 +
 +オフシャルサイトの設定法を参考に,私の環境で成功した例を記します.
 +
 +ディアルブートの Linux は,このような構成でインストールされているとします.
 +
 +^ システム上のデバイス名 ^ マウントポイント ​        ^
 +| hdc1                   | /boot                    |
 +| hdc2                   | /                        |
 +| hdc3                   | /home                    |
 +| hdc4                   | 拡張パーティションの指定 |
 +| hdc5                   | swap                     |
 +| hdc6                   | Windows Share (FAT32) ​   |
 +
 +==== coLinux 用デバイスの作成 ====
 +
 +root で次のコマンドを発行します.
 +
 +<​code>​
 +mknod /dev/cobdX b 117 X
 +</​code>​
 +
 +Xには0~7の数値を入れます.(e.g. mknod /dev/cobd0 b 117 0)coLinux で扱いたいパーティションの数に応じてデバイスを用意します.例えば,swap,​ /home, /, の3つを通常マウントしている場合は最低,cobd0,​ cobd1, cobd2 を用意する必要があります.Linux を単体で起動させることを考慮し,/​etc/​fstab の変更を最小限に止めるために,/​etc/​fstab に記載したデバイスの数だけ cobd を準備します.ただし,現状では8つのデバイスしか作れないようです.私の場合,とりあえず8つ作っておきました.
 +
 +==== /​root/​isStandAlone の作成 ====
 +
 +次の内容を記述したファイルを /​root/​isStandAlone として作成し,実行権限を付けておきます.
 +
 +<​code>​
 +1: dd if=/​dev/​hdc2 of=/​dev/​null bs=1 count=1 > /dev/null 2>&1
 +2: exit $?
 +</​code>​
 +
 +/dev/hdc2 の部分は,「/​」のパーティションを指定します.
 +
 +ここの設定は,[[http://​mongu.dip.jp/​coLinux/​|こちら]]のサイトを参考にしました.
 +
 +==== /​etc/​init.d/​kudzu の設定 ====
 +
 +次の1,​5,​6,​7,​行目の内容を追記する.
 +
 +<​code>​
 +1: if /​root/​isStandAlone;​ then
 +2: if[ "​$KUDZU"​ == "​off"​ ]; then
 +3:     exit 0
 +4: fi
 +5: else
 +6:     exit 0
 +7: fi
 +</​code>​
 +
 +==== /​etc/​rc.sysinit の設定 ====
 +
 +およそ296行目あたりに次の1,​17を追記する.
 +
 +<​code>​
 + 1: if /​root/​isStandAlone;​ then
 + ​2: ​    ​failure "​$STRING"​
 + ​3: ​    echo
 + ​4: ​    echo
 + ​5: ​    echo $"*** An error occurred during the file system check."​
 + ​6: ​    echo $"*** Dropping you to a shell; the system will reboot"​
 + ​7: ​    echo $"*** when you leave the shell."​
 + ​8: ​    
 + ​9: ​    ​PS1=$"​(Repair filesystem) \# # "; export PS1
 +10:     ​sulogin
 +11:     
 +12:     echo $"​Unmounting file systems"​
 +13:     ​umount -a
 +14:     mount -n -o remount,ro /
 +15:     echo $"​Automatic reboot in progress."​
 +16:     ​reboot -f
 +17: fi
 +</​code>​
 +
 +==== C:​\coLinux\vmlinux-modules.tar.gz のコピー ====
 +
 +予め FTP で外部サーバにおいて置いたり,Windows との共有ドライブに入れておくのもOKですが,私は NTFS をマウントして直接取得しました.
 +
 +<​code>​
 +mkdir /mnt/ntfs
 +mount -t ntfs /dev/hda1 /mnt/ntfs
 +cp /​mnt/​ntfs/​coLinux/​vmlinux-modules.tar.gz ./
 +</​code>​
 +
 +取得したファイルを解凍し,/​lib/​modules 内にコピーする.
 +
 +<​code>​
 +tar zxvf ./​vmlinux-modules.tar.gz
 +cd ./​lib/​modules
 +mv ./​X.X.XX-co-X.X.X /​lib/​modules
 +</​code>​
 +
 +上記の X はダウンロードした coLinux のバージョンで違うと思います.
 +
 +==== /etc/fstab の設定 ====
 +
 +まず「/​」のラベルを変更します.
 +
 +<​code>​
 +e2label /dev/hdc2 rootdev
 +</​code>​
 +
 +次に,/​etc/​fstab の「/​」を指定している行を次のように書き換えます.
 +
 +> LABEL=rootdev ​   /    ext3    defaults ​   1 1
 +
 +さらに,その他の LABEL で指定されている行は,明示的にデバイス名に変更します.これは,coLinux のXML設定ファイルのエイリアス名でデバイス名を指定するためです.
 +
 +こんな感じの /etc/fstab になりました(一部を抜粋表示).
 +
 +<​code>​
 +1: LABEL=rootdev ​      / ​       ext3    defaults ​   1 1
 +2: #​LABEL=/​boot ​       /boot    ext3    defaults ​   1 2
 +3: /​dev/​hdc1 ​          /​boot ​   ext3    defaults ​   1 2
 +4: none                /dev/pts devpts ​ gid=5,​mode=620 ​ 0 0
 +5: #​LABEL=/​home ​       /home    ext3    defaults ​   1 2
 +6: /​dev/​hdc3 ​          /​home ​   ext3    defaults ​   1 2
 +7: /​dev/​hdc5 ​          ​swap ​    ​swap ​   defaults ​   0 0
 +8: /​dev/​hdc6 ​          /​mnt/​win vfat    defaults ​   1 2
 +</​code>​
 +
 +===== coLinux の設定 =====
 +
 +以上までの設定を Linux で終えたら,再起動して Windows を立ち上げます.
 +
 +C:​\coLinux\default.colinux.xml をコピーして,同じディレクトリに保存します.適当にリネームします(e.g. C:​\coLinux\default.colinux.vine.xml).
 +
 +そして,いくつかのタグを次のような内容に修正します.
 +
 +==== block_device タグ ====
 +
 +<​code>​
 +1: <​block_device index="​0"​ path="​\DosDevices\c:​\coLinux\root_fs"​ enabled="​true"​ />
 +2: <​block_device index="​1"​ path="​\DosDevices\c:​\coLinux\swap_device"​ enabled="​true"​ />
 +</​code>​
 +
 +の2行を削除して,次のようにします.
 +
 +<​code>​
 +1: <​block_device index="​1"​ alias="​hdc1"​ path="​\Device\Harddisk2\Partition1"​ enabled="​true"​ /><​!-- /boot -->
 +2: <​block_device index="​2"​ path="​\Device\Harddisk2\Partition2"​ enabled="​true"​ /><​!-- / -->
 +3: <​block_device index="​3"​ alias="​hdc3"​ path="​\Device\Harddisk2\Partition3"​ enabled="​true"​ /><​!-- /home -->
 +4: <​block_device index="​5"​ alias="​hdc5"​ path="​\Device\Harddisk2\Partition4"​ enabled="​true"​ /><​!-- swap -->
 +5: <​block_device index="​6"​ alias="​hdc6"​ path="​\Device\Harddisk2\Partition5"​ enabled="​true"​ /><​!-- /mnt/win -->
 +</​code>​
 +
 +ここで指定する index="​X"​ の数字は cobdX の数字と合致します.path="​\Device\HarddiskX\PartitionY"​ のXは,0から始まるインデックス.Yは1から始まる数値です.Linux が hdc(3つ目のHDD)にインストールされているならば,X=2です.ここで,alias="​hdcX"​ のある block_device タグは,/​etc/​fstab に記述されているため必ずタグを XML ファイル内に記述し,なおかつ正しい(/​etc/​fstab の記述と整合の取れた) alias 名を指定しておきます.これが間違っているとうまく起動できません.「/​」については alias は不要のようです.ルートに関しては別のタグで hdc2 と関連づけます.index="​5"​ と index="​6"​ の path要素内のPartitionYの番号が一つずれているように見えますが,これで正解です.理由は,index="​4"​にあたるパーティションが拡張パーティションの指定をしているだけで,Linux 側ではこれをパーティションとしてカウントしないためです.このように,拡張パーティション内の論理パーティションを cobd と結び付ける場合には,Yの番号の指定に注意する必要があります.
 +
 +==== bootparams タグ ====
 +
 +自分の場合,coLinux で起動させる Linux をネットワーク経由で使うため,起動時のランレベルは 3 でOKです.bootparams タグでは,ランレベルとルートデバイスの指定を行います.
 +
 +<​code>​
 +1: <​bootparams>​root=/​dev/​cobd2 3</​bootparams>​
 +</​code>​
 +
 +==== memory タグ ====
 +
 +0.6.4 では,128MBを指定するとクラッシュするそうです.私は640MBと指定しています.
 +
 +<​code>​
 +1: <memory size="​640"​ />
 +</​code>​
 +
 +===== 起動方法の選択 =====
 +
 +ここでは,バッチファイルによる起動とサービスによる自動起動の2つについて記します.
 +
 +==== バッチファイル ====
 +
 +次の内容のバッチファイルを作成し,ダブルクリックすれば起動できます.
 +バッチファイルは,テキストファイルを編集後,coLinux.bat などにリネームすればダブルクリックで起動できるようになる.(注意:​ 1: と2: は記述しません.)
 +
 +<​code>​
 +1: CD C:\coLinux
 +2: "​./​colinux-daemon.exe"​ -c ./​default.colinux.vine.xml
 +</​code>​
 +
 +==== サービス ====
 +
 +バッチファイルからの起動では,
 +
 +  - 起動のたびにバッチファイルを叩かないといけない
 +  - coLinux の起動中,コマンドプロンプトとcoLinuxのウィンドウの2つが開いていて邪魔
 +
 +というデメリットがあるので,Windows の起動時に coLinux をサービスとして起動する方法があります.
 +
 +コマンドプロンプトを起動させ,次のコマンドを打ち込みます.
 +
 +<​code>​
 +1: cd C:\coLinux
 +2: colinux-daemon.exe -c "​C:​\coLinux\vine-colinux.xml"​ --install-service
 +</​code>​
 +
 +次の手順でサービス化が成功しているかを確認+サービスの自動起動を設定します.
 +
 +  - マイコンピュータを右クリックし,「管理」を選択.
 +  - 「コンピュータの管理」ダイアログが立ち上がるので,その中の「サービスとアプリケーション」で「サービス」を展開.
 +  - リストされている複数のサービスの中に「Cooperative Linux」があることを確認.
 +  - 「Cooperative Linux」を右クリックし,「プロパティ」を選択
 +  - 「Cooperative Linux のプロパティ」ダイアログが立ち上がるので,その中の「スタートアップの種類」を「手動」から「自動」に変更.
 +
 +以上で,Windows の起動時に Linux も立ち上がります.サービス化する前に,とりあえず coLinux から Linux を起動できるか調べることを忘れずに.
 +
 +===== トラブルシューティング =====
 +
 +成功に至るまでに分かったことがらを列挙します.うまく行かないときに参考にすると問題が解決する,かも.
 +
 +==== XMLファイルの設定 ====
 +
 +^ 答え ^ 疑問 ​                                            ^
 +|  ○  | alias 要素の設定が間違っているだけで起動しない? |
 +|  ×  | swap を指定する行は一番上に無いとだめ? ​         |
 +
 +==== /etc/fstab の設定 ====
 +
 +^ 答え ^ 疑問 ​                                            ^
 +|  ○  | LABELの設定がいきているとうまく行かない ​         |
 +|  ×  | vfat 領域を coLinux でマウントしてうまくいく ​    |
 +
 +==== その他 ====
 +
 +^ 答え ^ 疑問 ​                                                           ^
 +|  ○  | cobd のタイプミスで codb としたことに気付かないとうまくいかない |
 +|  ○  | この記事の内容を成功させるのは,すこし気合いと根性が必要 ​       |
 +|  ○  | せっかくセットアップできても,それで満足してしまうことがある ​   |
 +|  ○  | 現段階では,試行錯誤が成功への近道だ ​                           |
 +|  ○  | ネットワークの設定もして,apt-getが通るとちょっと感動する ​      |