Version 9 (modified by shaolin, 10 years ago) (diff) |
---|
停滞なう。
MacBook Pro (Retina, 13-inch, Late 2013) に Vine Linux 6.2 をインストール→Seed 化した際の備忘録。
先頭パーティションに Mac OS X を維持しつつ、他のパーティションに 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 やもん)
Vine Linux をインストールするための領域を適宜確保してください。OS X 標準のディスクユーティリティで十分。私はインストールパーティションとスワップパーティションを作りました。
OS X の EFI パーティションにインストールします。rEFInd のインストール方法については、既にインターネット上に数多の解説があるので詳細は割愛はしますが、binary zip 版(本稿執筆時点のバージョンは 0.8.3)をダウンロード、解凍して
$ sudo ./install.sh
で /EFI ディレクトリ以下にインストールされるでしょう。
用意したパーティションに Vine Linux をインストールします。私の MacBook ではグラフィカルインストーラで問題なくインストールができました。ファイルシステムは ext3 を利用しました(ext4は試してません)。Vine Linux のインストーラは、インストールパーティションの先頭セクタに GRUB(バージョン1)をインストールしますが、これは使用しません(上述したとおり、使用できません)。
インストールが終わって再起動すると、rEFInd からインストールした Vine Linux のパーティションが選択できるようになります。が、選択しても起動できません。もう少し我慢してください。
Linux マシン上で、 grub-2.00 のソースコードをダウンロードして展開、ビルドします。configure オプションは以下のような感じで。
$ ./configure --with-platform=efi —target=x86_64 --program-prefix="” $ make
VineSeed/x86_64 でのビルドには patch がいくつか必要でした (shaolin)
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 <freetype/ftsynth.h> +#include <ftsynth.h> #undef __FTERRORS_H__ #define FT_ERROR_START_LIST const char *ft_errmsgs[] = {
make 完了後に grub.efi(EFI バイナリ)を作成します。モジュールをどこまで組みこむかはお任せですが、 参考にしたサイトの受け売りです(笑)。 -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 は 参考にしたサイト等の情報から以下のような感じで作ってみました。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 については、 Broadcom のサイトからダウンロードしたドライバで無線LANが動作しました。ここは MacBook のモデルで違いがあるかもしれません。
ここまでいけば VineSeed に移行できる・・・はず。