停滞なう。 == !MacBook Pro 上での Vine Linux 環境構築 == '''''以下は Mavericks 向けです。Yosemite で必要な対処は(ざっくりと)[#yosemite 最後]に追記しています。''''' !MacBook Pro (Retina, 13-inch, Late 2013) に Vine Linux 6.2 をインストール→Seed 化した際の備忘録。 先頭パーティションに OS X (Mavericks) を維持しつつ、他のパーティションに Vine Linux 環境を構築します。昨今のスペックのPCであれば、仮想環境上にLinux環境を構築しても実用には耐え得ると思うのですが、!MacBook Pro に搭載された Haswell でのベンチマークが必要かつ、他に実機がないという状況が生じたので(笑)トライに至りました。 Vine Linux 6.2 であれば !MacBook Pro であってもインストール自体はつつがなく進行するのですが、Mac 標準の起動ボリューム選択や rEFInd では、インストールパーティションの先頭セクタに書き込まれた GRUB ブートローダの認識(読み込み?)に失敗して起動できません(先頭パーティションにインストールした場合は起動できるようですが、未挑戦なのでここでは割愛)。そこで、!MacBook Pro の EFI パーティションに GRUB2 の EFI バイナリをインストールし、そこからインストールパーティションのカーネルイメージを直接読み込むことでこの問題を回避します。 ||= 通常 =||BIOS/UEFI → インストールパーティションの GRUB → インストールパーティションの vmlinuz 読み込み → 起動 || ||= 本方式 =||UEFI → EFI パーティションの GRUB2 → インストールパーティションの vmlinuz 読み込み → 起動 || 起動に最低限必要なことを備忘録として残しますが、このとおりやっても上手くいかないかもしれないし、ちょっとした操作でパーティション吹っ飛ばすこともあるかもしれないので、大切なデータはバックアップを取ったうえで __at your own risk__ でお試しください。 なお、外付けHDDへのインストールは試していません(だって !MacBook やもん) === 必要なもの !MacBook:: そら必要ですわな。 Vine Linux インストールCD/DVD/USBメモリ:: そら必要ですわな。私は Vine Linux 6.2.1 (x86_64) を USBメモリに書き込んだものを使いました。 [http://www.rodsbooks.com/refind/ rEFInd]:: マルチブート環境を構築するためのブートマネージャ。 [http://www.gnu.org/software/grub/ GNU GRUB]:: rEFInd から呼び出され、Vine Linux のカーネルを読み込みます。バージョンは 2.0 を使用しました。 Linuxマシン:: GRUB2 の EFI バイナリのビルドに必要です。手元に !MacBook しかない場合は・・・!VirtualBox 等の仮想環境を構築して Linux 環境を用意してください(非仮想環境を目指しているのに仮想環境を用いるという倒錯感を味わえるのでは!)。 === パーティションを切る Vine Linux をインストールするための領域を適宜確保してください。OS X 標準のディスクユーティリティで十分。私はインストールパーティションとスワップパーティションを作りました。 === [http://www.rodsbooks.com/refind/ rEFInd] のインストール OS X の EFI パーティションにインストールします。rEFInd のインストール方法については、既にインターネット上に数多の解説があるので詳細は割愛はしますが、binary zip 版(本稿執筆時点のバージョンは 0.8.3)をダウンロード、解凍して {{{ $ sudo ./install.sh }}} で /EFI ディレクトリ以下にインストールされるでしょう。 === Vine Linux のインストール 用意したパーティションに Vine Linux をインストールします。私の !MacBook ではグラフィカルインストーラで問題なくインストールができました。ファイルシステムは ext3 を利用しました(ext4は試してません)。Vine Linux のインストーラは、インストールパーティションの先頭セクタに GRUB(バージョン1)をインストールしますが、これは使用しません(上述したとおり、使用できません)。 インストールが終わって再起動すると、rEFInd からインストールした Vine Linux のパーティションが選択できるようになります。が、選択しても起動できません。もう少し我慢してください。 === GRUB2 の EFI パーティションへのインストール・設定 Linux マシン上で、[ftp://ftp.gnu.org/gnu/grub/ grub-2.00 のソースコード]をダウンロードして展開、ビルドします。configure オプションは以下のような感じで。 {{{ $ ./configure --with-platform=efi —target=x86_64 --program-prefix="” $ make }}} VineSeed/x86_64 でのビルドには patch がいくつか必要でした (shaolin) * [http://git.savannah.gnu.org/cgit/grub.git/commit/?id=9cc836a27be4a95f6f7bfd5b6bc099801645c0ea grub-core/script/yylex.l: Ignore unused-function and sign-compare] * [http://lists.gnu.org/archive/html/help-grub/2013-07/msg00055.html Re: GRUB 2.00 make fails] * freetype2 header fix {{{ diff -uNr grub-2.00.orig/util/grub-mkfont.c grub-2.00/util/grub-mkfont.c --- grub-2.00.orig/util/grub-mkfont.c 2012-03-10 21:17:57.000000000 +0900 +++ grub-2.00/util/grub-mkfont.c 2014-08-10 12:00:00.000000000 +0900 @@ -39,7 +39,7 @@ #include FT_FREETYPE_H #include FT_TRUETYPE_TAGS_H #include FT_TRUETYPE_TABLES_H -#include +#include #undef __FTERRORS_H__ #define FT_ERROR_START_LIST const char *ft_errmsgs[] = { }}} make 完了後に grub.efi(EFI バイナリ)を作成します。モジュールをどこまで組みこむかはお任せですが、[https://help.ubuntu.com/community/UEFIBooting 参考にしたサイト]の受け売りです(笑)。 -p “” を忘れずに。 {{{ $ cd grub-core $ ../grub-mkimage -O x86_64-efi -d . -o grub.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot }}} OS X の /EFI フォルダ以下に grub, grub/x86_64-efi フォルダを作成し、できあがった grub.efi を /EFI/grub へ、Linux マシンの grub-core フォルダ内にある組み込まなかったモジュール関連ファイル(*.mod, *.lst) は grub.efi のシェルで組み込めるように OS X の /EFI/grub/x86_64-efi へそれぞれコピーします。この段階での /EFI 以下のファイル配置は以下のようなイメージです。 {{{ /EFI ├── grub │   ├── grub.efi │   └── x86_64-efi │    ├── *.mod │    └── *.lst ├── refind(rEFInd) └── tools }}} ここで再起動すると、rEFInd から grub.efi が選択できるようになるはずです。ただ、この時点では grub.cfg がないのでシェルに落ちます。 grub.cfg は[https://help.ubuntu.com/community/UEFIBooting 参考にしたサイト]等の情報から以下のような感じで作ってみました。root や swap の値は適宜読み替えてください。三つ目は GRUB から OS X を起動するためのものです。 {{{ set debug=video insmod efi_gop menuentry "Vine Linux" { search --file --no-floppy --set=root /boot/vmlinuz fakebios linux /boot/vmlinuz ro root=/dev/sda4 swap=/dev/sda5 video=efifb initrd /boot/initrd.img } menuentry "Vine Linux (Previous kernel)" { search --file --no-floppy --set=root /boot/vmlinuz.old fakebios linux /boot/vmlinuz.old ro root=/dev/sda4 swap=/dev/sda5 video=efifb initrd /boot/initrd.old.img } menuentry "OS X (Mavericks)" { search --file --no-floppy --set=root /usr/standalone/i386/boot.efi chainloader (${root})/usr/standalone/i386/boot.efi } }}} === 無線ドライバのインストール Late 2013 については、[http://ja.broadcom.com/support/802.11/linux_sta.php Broadcom のサイト]からダウンロードしたドライバで無線LANが動作しました。ここは !MacBook のモデルで違いがあるかもしれません。 ここまでいけば [/wiki/docs/developers-guide/install-VineSeed VineSeed に移行]できる・・・はず。 === [=#yosemite Yosemite への対処] Yosemite では、rEFInd をハードディスクの esp パーティションにインストールしないと認識してくれなくなりました(OS X のルートパーティションが LVM で参照されるようになったため?)。詳細は [http://www.rodsbooks.com/refind/yosemite.html こちらに] に書かれていますが、Yosemite にアップグレード後、以下のような感じで rEFInd をインストールし直します。 {{{ $ sudo ./install.sh --esp --all-drivers }}} GRUB についても esp パーティションにインストールする必要がありますが、esp パーティションのマウント方法については上記リンクを参照してください。 あと、この方法で rEFInd をインストールすると、私の環境では rEFInd の立ち上がりまで30秒ぐらいかかってしまうようになりました。[http://www.rodsbooks.com/refind/installing.html#sluggish このあたり]が原因なのかもしれませんが、実害はないので掘り下げてはいません。 === 参考にしたサイト https://help.ubuntu.com/community/UEFIBooting http://www.rodsbooks.com/refind/yosemite.html