開発やらlinuxについてやったこと、ひっかかったことのメモ
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
簡単に試せるとのことだったので,OSの仮想化体験もしつつLiveAndroidを使ってみました.
そのメモ. LiveAndroidダウンロード↓ code.google.com/p/live-android/ vmware playerダウンロード↓ www.vmware.com/jp/products/player/ isoイメージが二つあって起動ファイルとして一つに結合したいので, コマンドプロンプト上で, COPY /B [一つ目のisoファイル] + [二つ目のisoファイル] [結合後のファイル名.iso] としてファイルを結合. vmwareの設定で気をつけなければならないのはカーネルの選定. LiveAndroidはlinuxカーネル2.6系らしいのでそちらを選択して設定していったら一発で立ち上がりました. 起動後,バッテリー切れの画面が出ます. OKを押すと,LiveAndroidデブー! メニュー画面↓ ブラウザでgooglemaps開いてみました↓ ちなみにGUIの他CUIでいじることも可能↓ 知識がなくて,まったくいじれませんが... ****操作方法***** Enter:実行 Esc:戻る Alt+[F1]:CUI Alt+[F7]:GUI (L)Windows キー:HOME画面 (R)Windowsキー:メニュー画面 ******************* 試したところ当たり前だけどyoutubeとかプラグインいる系は観れなくて, 日本語入力は出来ませんでした(もしかしてやり方あるのかな??) キーボードも英語キーボードとして設定されているっぽい. PR
MBMはフリーのブートローダで,
メインの仕事は, 「選択された各パーティションのPBRを呼び出す」ことらしい. このMBMは今回ディスクからインストールしたのだけれど, MBMはフロッピーからブートするインストーラしか配布していないため, それをisoイメージに変換する必要がある. 最新版(MBM R0.39)のダウンロードhttp://my.vector.co.jp/servlet/System.FileDownload/download/http/0/35596/pack/dos/util/boot/mbm039.zip
マルチブート環境構築レポート(概要編)でも説明したように,
Linuxは1段階ブートであるので, Windowsや他のOSとの共存における問題回避のためにも Linuxを2段階ブートで起動できるようにする. そのためには, grubコマンドを使用する ※root権限で実行すること 端末上で >sudo grub すると, grub> と出力され, grubコンソールが起動するので. grub>root (hd1,0) grub>setup (hd1,0) を実行する. (hd x , n)はBIOSで認識されている(x+1)番目のハードディスクの(n+1)番目の パーティションであることをあらわしている. つまり,上記の例はUSBHDD上の1番目のパーティションのPBRにGRUBをインストールしたということ. ちなみにsudo fdisk -l を実行すると,パーティションの構成状況を確認可能. 私の場合は以下↓ >sudo fdisk -l ディスク /dev/sda: 320.0 GB, 320072933376 バイト ヘッド 255, セクタ 63, シリンダ 38913 Units = シリンダ数 of 16065 * 512 = 8225280 バイト Disk identifier: 0xd8000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 1 8 64228+ de Dell ユーティリティ /dev/sda2 9 1314 10485760 7 HPFS/NTFS /dev/sda3 * 1314 38914 302019584 7 HPFS/NTFS ディスク /dev/sdb: 250.0 GB, 250059350016 バイト ヘッド 255, セクタ 63, シリンダ 30401 Units = シリンダ数 of 16065 * 512 = 8225280 バイト Disk identifier: 0x19e8da2e デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 29653 238187691 83 Linux /dev/sdb2 29654 30401 6008310 5 拡張領域 /dev/sdb5 29654 30401 6008278+ 82 Linux スワップ / Solaris sdaは1番目のHDD(内蔵HDD),sdbは2番目のHDDのパーティションという感じ. 数字がそのHDD内領域のパーティション番号ということらしい. これでPBRにGRUBがインストールされた.(menu.lstの内容はそのままだった) 【参考URL】 マルチブートするなら2段階ブートに統一しよう wikiwiki.jp/disklessfun/
半日かかった.
やっと終わった! 今回の作業でOSのブートに対する基礎知識は十分についたとおもう. まず,基本的な知識から MBR(マスタブートレコード) これは,BIOSがOSブートの第1段階として呼び出す領域であり,原則OSのブートローダーはここに配置されている. PBR(プライベートブートレコード) これは,パーティションの先頭にある領域で,WindowsやFreeBSDなどLinux以外のほとんどのOSは,ここにメインのブートローダを配置する.要するにMBRは領域が少ないので, MBR→PBR(MBRで出来ないようなこと)→OSをブート という感じにしているっぽい. ちなみにこれを「2段階ブート」と一般的に呼ばれているらしい. PBRの説明で「Linux以外」となっていたことについて. 現行のLinuxはGRUBというブートローダを使用しており,GRUBは他OSのように2段階ブートせず,MBRから直接カーネルにアクセスし,/boot/grub/menu.lstを参照したり,stage2と呼ばれる作業を実行してOSをブートするらしい. つまり, MBR→OSをブート している.これは前述の2段階ブートと比較して「1段階ブート」と呼ばれているらしい. これがどういうことかというと,マルチブート環境構築時に問題が発生しやすくなってしまう. 例えばWindowsが入っていたPCにパーティションを区切ってLinuxを追加した場合, MBRはGRUBで上書きされてしまう. つまりWindowsを起動するためには MBR(GRUB stage1)→Linuxファイルシステム(GRUB stage2)上のmenu.lstを参照し,OS選択→Windows用PBR→Windowsのブート という経路になっているみたい. で,今回私が経験した問題がこれで説明できる. 内蔵HDDにWindowsが入っていて,新規でLinuxをUSBHDDにインストールすると,内蔵HDD上のMBRにはGRUBが上書きされてしまうため,USBを外した状態でBIOSを起動すると以下のメッセージが出力されてしまう. GRUB Loading stage1.5. GRUB Loading, please wait... Error 21 これはGRUBのstage1.5(stage2.0を呼び出すための準備?)をロードしようとしているが,stage2.0が存在しないため,エラーが発生してOSのブートが出来ない. さらには/boot/grub/menu.lstは,GRUBインストール時のBIOSのハードディスクのブート順などが書かれているため,GRUBをインストールしてしまったあとで,下手にBIOSのハードディスクのブート順などを変更してしまったり,新たなHDDを追加してしまうと,エラーになってしまう恐れもあるらしい. 今回私は無知の状態で上記2つの問題を同時に経験したので,この問題の対処に半日費やす羽目になりました. さらにstage2.0がUSBHDDに存在しているために,USBが壊れたら....ということもあるらしい. なので今回対処方法として実践したステップ↓ 1.Linuxのブートローダ(GRUB stage1)をPBR領域に配置 2.MBRに強力なフリーソフトのMBM(マルチブートマネージャ)をインストール 以上を行うことで設定を終えることができました. 設定の詳細は このあと記述する記事を参照のこと. 【参考URL】 マルチブートするなら2段階ブートに統一しよう wikiwiki.jp/disklessfun/ |
カレンダー
カテゴリー
フリーエリア
最新記事
(07/25)
(04/22)
(04/21)
(02/22)
(02/08)
(02/04)
(01/16)
(11/26)
(11/24)
(11/12)
最新TB
プロフィール
HN:
poti
性別:
非公開
ブログ内検索
最古記事
(11/16)
(11/16)
(11/17)
(11/17)
(11/17)
(11/18)
(11/18)
(11/19)
(11/21)
(11/21)
P R
|