Macbook ProにOSX El capitanとKALI Linuxをデュアルブートしてみた

#はじめに
ハッキングやってみたーい！
ってノリでいろいろ調べてみたけど、El capitanから仕組みが変わったらしく正しくてわかりやすい情報がなかったので備忘録としてまとめてみました。
時間があればスクショも入れます。

ただし、私は不動産屋の事務員で、「コマンドってな〜に？」レベルなのであしからず。

そうそう、「xxx」となっているところや「disk番号」とかは環境に合わせて変えてくださいね。

#実行環境
- MBP(2015)-El Capitan-10.11.6
- [kali-linux-2016.2](https://www.kali.org/downloads/)
- [refind-bin-0.10.3](http://www.rodsbooks.com/refind/getting.html)
- OS Xはクリーンインストールで暗号化なし
- USB 16GB
- KALIのサイズは50GB（20GB以上ならご自由に）

#コアストレージの削除
1.ターミナルを起動してさっそく打つべし！

```
$ diskutil cs list
```
一番下の方のLogical Volume xxx-xxx-xxxをメモする
2.論理ボリュームグループを解除

```
$ sudo diskutil cs revert xxx-xxx-xxx
```
3.再起動して無効になったか確認する

```
$ diskutil cs list
```
無効になっていれば「No Core Storage logical volume groups found」と表示される
※ダメならこっち↓

```
$ diskutil cs revert disk1
```
[参考:symantec](https://support.symantec.com/en_US/article.HOWTO109622.html)

#KALI用のパーティション作成（A-Bどっちかで）
<dl>
<dt>A</dt>
<dd>1.ディスクユーティリティ開いて、「APPLE SSD……」からパーティションをクリック</dd>
<dd>2.パーティションの名前は適当、フォーマットはMS-DOS(FAT)、サイズは50GB</dd>
<dt>B</dt>
<dd>1.再起動してOSX起動前に、⌘＋⌥＋R を押しながら待つ※ネット接続する</dd>
<dd>2.ディスクユーティリティを選択してパーティション作成したらメニューから再起動</dd>
</dl>

#KALIのインストールディスク作成
1.名前は適当、フォーマットはMS-DOS(FAT)、方式はGUIDパーティションマップ 
2.ターミナル起動後に

```
$ diskutil list
```
USBのディスク番号を覚えておく

```
$ diskutil unmountDisk /dev/disk1
$ sudo dd if=/Users/xxx/Desktop/kali-linux-2016.2-amd64.iso of=/dev/disk1 bs=1m
```
なんか「/dev/rdisk1」にすると書き込みが早くなるらしい

#SIPを無効化
1.再起動してOSX起動前に、⌘＋R を押しながら待つ
2.[ユーティリティ]メニューからターミナル起動

```
$ csrutil disable
```
3.SIP無効化メッセージを確認したらメニューから再起動

#rEFindインストール
1.EFIのIDENTIFIERを覚えておく

```
$ diskutil list
```
2.EFIパーティションをマウント

```
$ mkdir /Volumes/ESP
$ sudo mount -t msdos /dev/disk0s1 /Volumes/ESP
```
3.EFIパーティションにrEFindをインストール

```
$ sudo /Users/xxx/Desktop/refind-bin-0.10.3/refind-install
```
4.rEFIndをブレスする

```
$ sudo bless --mount / Volumes/ ESP --setBoot --file /Volumes/ESP/EFI/refind/refind_x64.efi --shortform
```

#SIPを有効化
1.再起動してOSX起動前に、⌘＋R を押しながら待つ
2.[ユーティリティ]メニューからターミナル起動

```
$ csrutil enable
```
3.SIP有効化メッセージを確認したらメニューから再起動

#再起動してKALIインストール
※後のことを考えると英語で進めていったほうが良い

1.真ん中の丸いの３つあるヤツで起動、グラフィカルでインストール、ゴニョゴニョ
2.パーティション選択時に手動を選び、任意のパーティション(50GB)を選ぶ
3.オプションを選択してパーティションを削除する
4.esc押して、ディスクの検出を押す。もう一回任意のパーティションを削除
5.パーティショニングの終了とディスクへの書き込みを選択
6.ネットワークミラーダメだったら後述の「KALIインストール後」を参照
※「brcm/brcmmac43602-pcie.txt」途中で入れろって出てくるけど無視して問題ない

#システムを再起動するとrEFIndは起動していないはず
1.再起動してOSX起動前に⌥押してMacOS起動
2.rEFIndを再インストール「４.SIPを無効化〜６.SIPを有効化」

てか、もう一回ってめんどいって…いやまじで！
ということで、これはいかがかしらん？

あらかじめrEFIndを解凍して場所覚えておく
1.再起動してOSX起動前に、⌘＋R を押しながら待つ
2.[ユーティリティ]メニューからターミナル起動

```
$ csrutil disable
$ diskutil list
```
EFIパーティションディスク番号覚える

```
$ mkdir /Volumes/ESP
$ mount -t msdos /dev/disk0s1 /Volumes/ESP
$ cd /Volumes/MacOS/Users/xxx/Desktop/refind-bin-0.10.3
```

※環境によってはこっち`$ cd /Volumes/Macintosh\ HD/Users/xxx/Desktop/refind-bin-0.10.3`	

```
$ ./refind-install
```
「Installation has completed successfully.」と表示されればインストール成功

```
$ bless --mount / Volumes/ ESP --setBoot --file /Volumes/ESP/EFI/refind/refind_x64.efi --shortform
$ csrutil enable
```
3.SIP有効化メッセージを確認したらメニューから再起動
※blessだけだめかも…だめなら再起動してblessのコマンドだけ打ってSIP有効にすれば良い

※優先されたからか普通に電源ボタンを押したらKALIが起動する
⌥押しながら起動したらMacOSを起動できる
個人的にはこっちの方が楽な気がする

#KALIインストール後
##apt-getが働かない対処ーリポジトリの追加編集

**`/etc/apt/sources.list`**
ここに下記を追加

>```
deb http://http.kali.org/kali kali-rolling main contrid non-free
deb-src http://http.kali.org/kali kali-rolling main contrid non-free
```

[参考:kali.org](http://docs.kali.org/general-use/kali-linux-sources-list-repositories)
※英語でインストールしたら問題なかった

##日本語ディレクトリを英語に変換

```
$ apt-get install xdg-user-dirs-gtk
$ LANG=C xdg-user-dirs-gtk
```
チェック入れてUpdate namesクリック
再起動か再ログイン

※英語でインストールしてから言語や時間などを日本にすればこれをやらずに済む

##スピーカー音出ない問題

```
$ pulseaudio -D 2> /dev/null
```
だめなら↓ゲットかな？

```
$ apt-get install libasound2 alsa-utils alsa-oss
```
他にも解決方法はあるようですが…

#おわりに
最後まで見たってことはハッキングに興味あるんですよねw
気がるに[連絡](https://plus.google.com/113879649765304291782)くださいね♪

ちなみに、core storageだかSIPだかはHomebrewとか入れる時にも同じことすればいいみたい。
あと、kali linuxはdebianが元だということは、今回のはubuntoとかも同じ要領でできる！！ってことだよね？！

わからないことだらけだけど頑張るぞ〜＼\\٩( 'ω' )و //／


Enjoy..!!