2016/07/30

Macに挿して使うubuntu USBメモリ作ってみた

MacにUSBメモリをさしてUbuntuインストール

ちょっと家でも使えるLiveUSBじゃないUbuntu環境が欲しくて家のMacにUSBメモリをさしてそこにUbuntuをインストールしてみた。

参考にさせてもらったのはこことかです。

参考サイトではrEFItを使ってたが、すでにメンテされてないのでそこから
forkされたrEFIndを使いました。

手順としては以下。今回はUbuntu14.04 LTSを入れました。

  1. ubuntuインストールLiveUSBを(UbuntuをインストールするUSBメモリとは別に)作成
  2. インストール先のUSBメモリでrEFInd用パーティションを切る
  3. rEFInd用のパーティションをマウントしてrEFIndをインストール(ここまでMac側で作業)
  4. LiveUSBで起動
  5. インストール先USBメモリをマウント
  6. Ubuntu用のパーティションを切る
  7. Install UbuntuからUbuntuをインストール

OSをインストールして使うとなると容量だけでなく速度が非常に重要になり、最初東芝のUSBメモリ(TransMemory THN-U301W0320)に インストールしたのですが遅くて非常に使い勝手が悪い結果になってしまいました。

結局下の速度に定評のあるSnaDiskのメモリを使う事で快適になりましたw

このくらいのサイズ感です。もっと小さいほうが理想的だけどまぁまぁ支障はないでしょう。

  1. ubuntuインストールLiveUSBを(UbuntuをインストールするUSBメモリとは別に)作成 こちらはUbuntuの公式ページに説明があるので省略 → How to create a bootable USB stick on OS X

  2. インストール先のUSBメモリでrEFInd用パーティションを切る まず、EFI用にUSBメモリの先頭に30MB(後記:20MBでもいいっぽい)のHFS+(ジャーナリング)パーティションと残り全部のパーティションに分けます。 Macのディスクユーティリティ.appからだとうまくできずにUSB全体で1パーティションにしかできず、色々悩んだ結果コマンドのdiskutilからやりました。

以下でUSBメモリの/dev/disk? の?を確認。下の場合は/dev/disk2
% diskutier list
/dev/disk0 (internal, physical):
省略
/dev/disk1 (internal, virtual):
省略
/dev/disk2 (external, physical):
省略
以下でパーティションを分割。最初にGPTJHFS+(HFS+ジャーナリング)でrefiという名前で30MB、次に残り全部をubuntuという名前で切る。ubuntu側はインストール時に再度パーティションを切るのでここでは2つに分割だけできればよし。
% diskutil partitionDisk /dev/disk2 GPT JHFS+ refi 0.03g JHFS+ ubuntu 0b
  1. rEFInd用のパーティションをマウントしてrEFIndをインストール(ここまでMac側で作業) rEFIndのサイトからrEFIndをダウンロード(自分の時はversion0.10.3)し解凍。 2.で作成したrefiパーティションをFinderで開き、efiという名前のフォルダを作成。
    次に回答したrEFIndフォルダのルートにあるrefindというフォルダをフォルダごと↑で作ったefiフォルダにコピー(/efi/refind/にする)

解凍後のrefindフォルダには32bitやARM向けのファイルも入ってるんですが、今回は不要なのでx64のみを残して削除します。
左:削除前、右:削除後

コピーが終わったら、blessというコマンドを使ってブートエントリに加えて貰う必要があるようです。以下はrEFItに付属しているenable.shというものをベースにrEFInd用にUpdateしたものですが、これを/efi/refind/フォルダにコピーし、以下の要領で実行します。

#!/bin/bash

LOADERNAME="refind_x64.efi"

expand_dir () {
  pushd "$1" >/dev/null
  DIR="`pwd`"
  popd >/dev/null
}

expand_dir .
if [ ! -f "$DIR/$LOADERNAME" ] ; then
  expand_dir "`dirname "$0"`"
  if [ ! -f "$DIR/$LOADERNAME" ] ; then
    echo "You must run enable.sh from the directory where you put $LOADERNAME"
    echo "or put enable.sh where $LOADERNAME is!"
    exit 1
  fi
fi

if [ "$(uname -p)" != "i386" ]; then
  echo "You must run enable.sh on an Intel-based Macintosh!"
  exit 1
fi

set -x
sudo bless --folder "$DIR" --file "$DIR/$LOADERNAME" 
%cd /Volume/refi/efi/refind/
%./enable.sh
sudoパスワードを入力

*blessコマンドに--setBootオプションをつけるとNVRAMに保存してくれるようなのですが、YosemiteかEl Capitanあたりから入ったSIP(System Integrity Protection)により
sudoでもNVRAMに書き込む処理はできなくなってるっぽい。Safe Modeで起動してSIPをdisableしてbless --setBootして再度enableとやればいいらしいが、--setBootなしでもそれっぽく動作はしてるので今回は無しで。

これでMac側で行う処理は終了。

  1. LiveUSBで起動 起動してください。LiveUSBをさして再起動しOptionキーを押しっぱなしにすると起動時にMacかLiveUSBか選べる。 選択画面がでたら"Try Ubuntu without Install"みたいなやつを選ぶ。

  2. インストール先USBメモリをマウント 指す。

  3. Ubuntu用のパーティションを切る

今回は参考サイトにならってMacやWinからアクセスしてファイル共有できるFAT32パーティションを4Gくらい作った残りをUbuntuにします。 LiveUSBから起動したUbuntu上でGPartedを起動。Commandキー → 検索でGPartとか打つとでてくる

右上のリストメニューからインストール先のUSBのデバイスを選んで、新しいパーティションを作成(未割り当てのパーティションを選んで右クリックで「新規」)
ファイルシステム FAT32を選び、サイズを指定して「追加」

さらに、Ubuntuを入れるパーティションを作成するために残りの未割り当てパーティションを選んで同様に右クリック+新規
ファイルシステム ext4、サイズはデフォルトで残り全部が入ってるのでそのまま、割り当てを"/" ルートに(このあたりは好きな様に)

結果、こんな感じにする。確認できたらツールバー上の✓みたいなボタンを押して実際に反映させる。

  1. Install UbuntuからUbuntuをインストール

デスクトップ上にある”Install Ubuntu”というショートカットをダブルクリックしてインストール画面を出す。

注意点は以下の”インストールの種類”の画面で6.で作ったext4パーティションを選ぶ事と、ブートローダーをインストールするデバイスでインストール先のUSBデバイスを指定する事(↓画像はTOSHIBA USBでやった時のもの)

あとはひたすらインストールが終わるのを待つだけ!

USBを挿してOptionを押しながら起動するとmacOSを起動するかEFI bootか選択画面がでるのでEFI boot側を選択。
rEFIndが起動して何を起動するか選択画面へ進むのでUbuntuを選択すると無事Ubuntuが起動します。
SDXZ80 USBメモリを使うと体感で数秒〜十数秒程度でログイン画面が表示されます。

以下、設定などメモリ書き

Fnキー

デフォルトではFnキーを押さないと、ファンクションキーがF1、F2等々として働かずディスプレイ照度の上げ下げになってました。
デフォルトでは通常のF1として使いたいので以下をセット

sudo bash -c "echo 2 > /sys/module/hid_apple/parameters/fnmode"

TouchPadのnatural scroll

デフォルトではTouchPadの2本指スクロールはPCと同じなんですが、同じMac上でMacでは逆だとややこしいので
Mac側の仕様に統一。

エディタで~/.Xmodmapファイルを開く(なければ作成)。以下を記述。

pointer = 1 2 3 5 4 6 7 8 9 10 11 12

一回ログアウトして再度ログインすると反映される。

ディスプレイの輝度設定が保存されない

そのままだとディスプレイの輝度設定を下げても再起動すると最大に戻ってしまう。GPUに何が使われているモデルかで違うかもしれないが、 自分のMBA('12/Mid)だと以下をする事で保存されるようになった。

エディタで/etc/default/grubを開く。要sudo

以下を修正

修正前
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

修正後
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor acpi_osi=Linux"

修正後以下で設定を反映

$sudo update-grub

再起動するとディスプレイ輝度が保存されるようになった。

Mac Ubuntu Community

後から気がついたがMacでUbuntuを動かす時のドライバ情報(何が動いて何が動かないとか)などの詳細な情報ページあった・・。

https://wiki.ubuntu.com/MactelSupportTeam/CommunityHelpPages#MactelCommunityDocumentation