2015年12月29日火曜日

Copy Syntax Highlight for OS X

Appleちゃんねるさんが、Copy Syntax Highlight for OS Xというものを紹介している。

なかなか便利そうなので、入れてみることにしたが、Homebrewを使わない希少な存在には引っ掛かりがあったので、以下メモしておく。

  1. pipのインストール
    Copy Syntax Highlight for OS Xを利用するためには、Pygmentsをインストールする必要がある。ところが、Pygmentsのパッケージをダウンロードしても何をして良いのか分からない。では、pip install Pygmentsではどうかというと、pipがないと言われる。
    それもそのはず、pipは、次のようにしてインストールするものなのだ。(参考サイト

    sudo easy_install pip
    
  2. Pygmentsのインストール
    pipをインストールしたら、Pygmentsを次のようにしてインストールする。

    sudo pip install Pygments
    
  3. Copy Syntax Highlight for OS Xのインストール
    あとは、Appleちゃんねるさんの記事にある通り、こちらからCopy Syntax Highlight for OS Xをダウンロードして解凍、ダブルクリックする。

    インストール確認ダイアログ

    インストール完了

  4. Copy Syntax Highlight for OS Xの使い方
    使い方は次の通り。

    1. コピー元のコードが書かれている書類で、範囲選択してコピー
    2. コンテクストメニューからCopy Syntax Highlight for OS Xを選ぶ
    3. ハイライトすべき文法を入力するダイアログが表示されるので入力
    4. テキストエディットなどにペーストすると、ハイライトされたコードが得られる。

以上。

2015年12月19日土曜日

Boot CampでのWindows 10アップグレード後の不具合対策(その2)

前のエントリの続きである。

現象

Retina Display搭載MacのBoot Camp環境下で、以前のWindowsをWindows 10へアップグレードすると、アップグレード後最初に目にする画面に驚く。アスペクト比が4:3で、デスクトップ上のアイコンが異常に大きいのだ。(状況の説明として画像を添付するが、分かってもらえるかは自信はない)

原因

前のエントリで述べた通り、Windows OSアップグレードに伴う、Boot Campサポートソフトウェア(ドライバ)の動作不良が原因である。

対策

対策は2段階に分かれる

  1. 前のエントリで述べた通り、Boot Campサポートソフトウェアを修復インストールする。
  2. ディスプレイ設定で調整する。

Boot Campサポートソフトウェアの修復インストールと、それに伴う問題への対処については前のエントリで述べた。
ここでは、ディスプレイ設定での調整について述べる。

  1. Boot Campサポートソフトウェアの修復インストール直後の画面
    4:3の画面からBoot Campサポートソフトウェアの修復インストールを経て再起動すると、今度はデスクトップ上のアイコンが異常に小さい。(Retinaのフル解像度で表示されている)
  2. ディスプレイ設定
    デスクトップ上で右クリックし、ディスプレイ設定を開く
  3. カスタムの拡大/縮小率設定解除
    画面にあるカスタムの拡大/縮小の設定を無効にして、サインアウトするを選択すると、サインアウトする。
  4. 調整完了
    サインインし直すと、拡大率が200%になり、Retinaでもちょうど良いサイズになる。以下に示す画像は、Twitterを開いた状態での、Boot Camp、VMWare Fusion、Macのスクリーンショットである。

    Boot Campの画面
    Boot Campの画面
    VMWare Fusionの画面
    VMWare Fusionの画面
    Retina Macの画面
    Retina Macの画面

    2年前RetinaディスプレイとBoot Campというタイトルのエントリでこき下ろしたBoot Campだが、Windows 10のおかげで、他の環境と遜色ないものになったようだ。

    【ちょっとした補足】
    Retinaディスプレイに最適な状態のMacはひとつのピクセルを4つの画素(縦2×横2)で表現している。つまり200%表示ということになる。
    VMWare FusionはMacのアプリケーションだから、これに従っている。
    Windows 10になって、ディスプレイ設定にテキスト、アプリ、その他の項目のサイズ変更が一括で出来るようになった。以前のWindowsではテキストの150%拡大しかできなかった。

Boot CampでのWindows 10アップグレード後の不具合対策(その1)

現象

  • Boot CampのWindowsをWindows 10にアップグレード後、Macのかなキーを押してもIMEがオンにならない。
  • Boot Campでのキーコンビネーション(fn + shift + F11)によるスクリーンショットが取れない。
  • Retina DisplayのMacBook Proで画面解像度がめちゃめちゃになる。

原因

この問題は、Boot CampにWindows 10を導入する際に、以前のWindowsを踏み台にするケースで発生する。より正確を期するならば、以前のWindowsにBoot Campサポートソフトウェアがインストールされ、それをWindows 10へのアップグレードで引き継ぐ場合に発生する。

すなわち、Windows OSアップグレード時に、一部のBoot Campサポートソフトウェアが正常に動作しなくなるのが原因である。

対策

当たり前のことだが、Boot Campサポートソフトウェアを修復インストールすれば良い。しかし、ここで新たな問題が出てくる。

  1. OSXRESERVEDパーティションの有無
    Boot CampサポートソフトウェアとWindows OSをOSXRESERVEDというパーティションに保存するMacがあり、これはWindowsインストール完了後に消えてしまう?(筆者の場合、消えずに残っている)
  2. RealTekオーディオインストールで止まる問題
    Boot Campサポートソフトウェアを修復インストールする際に、RealTekオーディオのインストールで止まってしまう。初回のWindows 8.1インストール時には発生しないので、修復インストールの際の問題があると思われる。(Apple調査中とのこと)

つまり、Boot Campサポートソフトウェアの入手方法と、それの実行時の問題への対処の2点が課題である。以下、順に説明する。

  1. Boot Campサポートソフトウェアの入手方法

    • USBメモリにBoot Campサポートソフトウェアを保存するタイプのMac
      説明するまでもない。そのUSBメモリを使えば良い。

    • 起動ディスク上にBoot Campサポートソフトウェアを保存するタイプのMac
      1. Windowsのインストール完了後、保存したパーティションが消えてしまうケース
        何も難しくはない。Macで再起動し、Boot Campアシスタントを起動、アクションメニューからBoot Campサポートソフトウェアを入手すれば良い。
      2. 保存したパーティションが消えずに残っている場合
        次のようにしてドライブレターを割り当てれば、Windows上でアクセスできるようになる
        1. PC管理を開く
        2. 記憶域 > ディスクの管理でOSXRESERVEDとあるのが、そのパーティションである
        3. OSXRESERVEDを選択して右クリックし、ドライブ文字とパスの変更(C)…を開く
        4. 開いた画面で追加ボタンを押す
        5. ダブらないドライブレターが選択されているので、OKボタンを押す
        6. ドライブレターを削除する場合は、ドライブ文字とパスの変更(C)…を開いて削除を押す
  2. RealTekオーディオインストールで止まる問題への対処
    Boot Campサポートソフトウェアを入手したら、Windowsで起動し、それを実行する。

    1. Boot Campセットアッププログラムの実行
      USBメモリ、あるいはマウントしたOSXRESERVEDパーティション > BootCampを開き、Setupをダブルクリックする
    2. 修復ボタンを押す
    3. 途中で以下の画面が出ることがあるが無視(このほかもう一種類ある場合もあるが、それも無視)
    4. RealTekオーディオの表示で止まる
      しばらく待つとプログレスバーが進むが、画面にRealTekオーディオと表示されたところで、再び止まってしまう。放っておくと、このまま変化しない。
      これは何らかの原因(Apple調査中)でRealTekオーディオのインストーラーがハングしているためなので、これを強制終了させる。
    5. タスクマネージャーを起動する。(タスクバー上で右クリック)
    6. RealTekSetupタスクを終了させる
    7. Boot Camp Setupプログラムの終了
      タスクマネージャーでRealTekSetupタスクを終了させると、あっという間にBoot Camp Setupプログラムが終了する。完了ボタンを押すと、OSの再起動を要求されるが、この時点では無視して良い。
    8. RealTekオーディオSetupを開く
      USBメモリ、あるいはマウントしたOSXRESERVEDパーティション > BootCamp > Drivers > RealTekを開き、RealTekSetupをダブルクリックする
    9. RealTekオーディオインストーラー
      RealTekオーディオインストーラーが開くので、指示に従ってインストールする。
    10. RealTekオーディオインストーラーの終了
      終了すると、OSの再起動を要求されるので、ここで再起動する。
  3. Retina Displayの解像度調整
    Retina Displayを搭載したMacの場合、あと一工程だけ作業があるが、長くなったので、別エントリとする。

参考情報

RealTekオーディオの処理で止まる件、幾つかの嘘情報があったが、このサイトが正解だった。感謝する。
BootCampでRealTekオーディオのインストールが止まる対処方法

2015年12月18日金曜日

Boot Campと他社製NTFSドライバ

前置き

仮想マシン派だった筆者だが、Boot Campに乗り換えることにした。理由はあるゲームで仮想マシンが落ちるからだ。仮想マシンを復活させるためには、OS自体の再起動がいる。(VMWare Fusion)

Boot Campなら大丈夫なのではないか?と考えてやってみたところ、さすがはネイティブ環境、問題なかった。
だが、Boot Campを導入するにあたって幾つか引っかかったことがあるので記録しておくことにする。

問題点

問題点は3つあった。今回は、そのうちシステム環境設定の起動ディスクにBoot Campパーティションが表示されない問題を取り上げる。

と言っても、この問題が発生するのは、他社製NTFSドライバを導入してMac上でNTFSでフォーマットされたメディアを読み書きしているケースだけである。

ドライバというとギョッとするかも知れないが、ハードディスクを始めとするI/O機器がコンピュータに認識される場面の影には、Mac、Windowsに関係なく存在するソフトウェアである。ここでいう他社製NTFSドライバとは、Paragon社やTuxera社などのものを指す。

結論

結論をいうと、システム環境設定の起動ディスクにBoot Campパーティションが表示されない理由は、これら他社製NTFSドライバのせいであった。

最初は不可思議に思うかも知れないが、次のように考えれば、ちゃんと説明はできる。

Boot CampパーティションもNTFSフォーマットされたボリュームの一つである。当然マウントするときには、Apple純正の読み取り専用ドライバか、読み書き可能な他社製NTFSドライバのどちらかが用いられることになる。

他社製はApple純正よりも優先して動作するから、他社製が動作しているときにFinder上で見えるBoot Campパーティションは読み書き可能な状態である。
これに対して、他社製が停止しているとき、つまりApple純正でマウントされているときは、読み取り専用になる。

起動ディスクを選択する画面にBoot Campパーティションが表示されるかどうかは、推定だが、それがAppleのドライバに認識されているかどうかにかかっているのだろう。別のドライバでマウントされたものが認識されないのは、自然と言えば自然ではある。

対策

多少面倒ではあるが、他社製NTFSドライバとBoot Camp機能を共存させる方法はある。それは、他社製NTFSドライバを一時停止し、Boot Campパーティションをマウントし直すことだ。

筆者はTuxera社の製品を使用しているが、一時停止ボタンはParagon社の製品にもある。そしてBoot Campパーティションのマウント解除、再マウントはディスクユーティリティを用いれば良い。

参考情報

Solved Bootcamp not mounting: was Tuxera NTFS problem

以上。

2015年12月7日月曜日

GnuTLSを使ったradiko録音環境の構築

radikoは、誰でも知っているであろう、インターネットラジオ放送の一つである。これを録音する方法というのもあって、ググればわらわらと出てくる。

録音に必要なのは、それ用に作られたシェルスクリプトと、そのシェルスクリプトで使われるUNIXコマンドラインツールである。
Macであれば、Homebrewを使えばツールは簡単に揃う。しかし、今更Homebrewを使った解説をするつもりはない。理由は簡単で、筆者はHomebrewを使っていないからだ。

シェルスクリプトの方は、幾つかあるが、筆者はザリガニが見ていたさんのファンなので、そちらのrtmpdumpでradikoにアクセスする手順という記事にあるものを使わせて戴くことにする。

UNIXコマンドラインツールは、以下をインストールする。(このために、それぞれの依存ライブラリもインストールする)

  • rtmpdump
  • wget
  • swftools
  • ffmpeg

rtmpdumpとwgetではGnuTLSを暗号化(SSL)接続に用いる。
従来のこの手の記事ではOpenSSLを用いていたが、EL Capitan以降で使えるXcode 7.x以降ではOpenSSLはサポートされない。ライセンスの問題もあるので、OpenSSLではなくGnuTLSを用いる。

以下、順を追って説明する。

  • git
    rtmpdumpのソースコードはgitで管理されているので、こちらからダウンロードしてインストールする。
  • pkg-config
    いろいろなツールをインストールするときの依存関係などを記述したファイルを管理する。
    curl -LO https://pkg-config.freedesktop.org/releases/pkg-config-0.29.1.tar.gz
    cd pkg-config-0.29.1
    ./configure --with-pc-path=/usr/local/lib/pkgconfig --with-internal-glib
    make -j 4 && sudo make install
    
  • xz
    圧縮アルゴリズムである。インストールするファイルを解凍するために使う。(Yosemite以降では不要
    curl -LO http://tukaani.org/xz/xz-5.2.2.tar.bz2
    tar xf xz-5.2.2.tar.bz2
    cd xz-5.2.2
    ./configure
    make -j 4 && sudo make install
    
  • zlib
    圧縮アルゴリズムである。gnutls, rtmpdump, wgetで使用する。
    curl -LO http://zlib.net/zlib-1.2.8.tar.gz
    tar xf zlib-1.2.8.tar.gz
    cd zlib-1.2.8
    ./configure
    make test
    sudo make install
    
  • libgmp
    gnutlsの依存ライブラリである。
    curl -LO https://gmplib.org/download/gmp/gmp-6.1.1.tar.xz
    tar xf gmp-6.1.1.tar.xz
    cd gmp-6.1.1
    ./configure
    make -j 4 && sudo make install
    make check
    
  • nettle
    gnutlsの依存ライブラリである。
    curl -LO https://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz
    tar xf nettle-3.3.tar.gz
    cd nettle-3.3
    ./configure --with-include-path=/usr/local/include --with-lib-path=/usr/local/lib --disable-openssl
    make -j 4 && sudo make install
    
  • gnutls
    rtmpdumpとwgetで暗号化(SSL)接続時に使用する依存ツールである。
    curl -LO ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.4.tar.xz
    tar xf gnutls-3.5.4.tar.xz
    cd gnutls-3.5.4
    env LDFLAGS=-L/usr/local/lib LIBS=-lgmp \
    ./configure --without-p11-kit --disable-cxx --with-included-libtasn1 \
    --disable-doc --disable-gtk-doc-html \
    --with-unbound-root-key-file=/etc/unbound/root.key
    make -j 4 && sudo make install
    
    gmp、nettle、gnutlsのインストール方法は、こちらのサイトを参考にさせて戴いた。
  • rtmpdump
    Real Time Messaging Protocolを取り扱うツールである。
    KSV氏によるパッチファイル
    こちらからrtmpdump-2.4.zipをダウンロード、解凍して、Patch.diffを取り出す。(gitでソースコードを入手後、そのディレクトリに入れる)
    このパッチは、rtmpdumpがインストールされていない状態で適用すること。
    git clone git://git.ffmpeg.org/rtmpdump
    cd rtmpdump
    patch -p0 -i Patch.diff
    make SYS=darwin CRYPTO=GNUTLS SHARED= XCFLAGS="-I/usr/local/include" XLDFLAGS="-L//usr/local/lib"
    sudo make install CRYPTO=GNUTLS SHARED=
    
  • wget
    コマンドラインでWebデータを取得するツールである。
    curl -LO http://ftp.gnu.org/gnu/wget/wget-1.18.tar.xz
    tar xf wget-1.18.tar.xz
    cd wget-1.18
    env LDFLAGS=-L/usr/local/lib LIBS=-lgmp  ./configure
    make -j 4 && sudo make install
    
  • swftools
    画像とSWFを相互変換するらしい。本来幾つかの依存ライブラリがあるが、今回は不要なので入れない。
    curl -LO http://www.swftools.org/swftools-0.9.2.tar.gz
    tar xf swftools-0.9.2.tar.gz
    cd swftools-0.9.2
    LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include/ -I/usr/local/include/lame" ./configure --disable-lame
    make -j 4 && sudo make install
    
    swftoolsのconfigureフラグはこちらのサイトを参考にさせて戴いた。
  • ffmpeg
    ffmpegは、当ブログにコンパイルガイドがあるので、ここでは詳細は説明しない。
    (シェルスクリプトで用いられる機能はストリームコピーなので、極端な話外部ライブラリは不要である。ただし、筆者はこのガイドに沿ったものをインストールしている)

以上でツールは揃った。あとはrtmpdumpでradikoにアクセスする手順にあるシェルスクリプトを起動すれば録音できる。例えばFM横浜を10分録音するならば、次の通りである。

sh Path/To/rec_radiko.sh -t 600 YFM

以上。

2015.12.13更新

  1. gmpをlibgmpという呼び名に修正(内容は変更なし)
  2. wgetのバージョンアップ(1.17 → 1.17.1)
  3. rec_radiko.shの使用例で、放送局名と録音時間の順序が逆だったので修正

2016.10.2更新
libgmp(6.1.0 → 6.1.1), nettle(3.1.1 → 3.3), gnutls(3.4.9 → 3.5.4), wget(1.17.1 → 1.18)のバージョンアップ。

2015年12月1日火曜日

Xcode7のワナ

これは開発関連のブログに書くか迷ったが、Macを使うことに、UNIXの資産を引き継ぐことが含まれると考え、それに沿った文脈で、このブログに書くことにする。

発端は、当ブログの古いエントリffmpegコンバイルガイドの更新であった。このエントリは現在更新中でEl Captan対応していない。原因の一つは、道具であるgitのインストールでopenssl/ssl.hが存在しないと言われたことにある。

git自体は、配布元でOS X用パッケージを用意しているので問題ないのだが、openssl/ssl.hがないというエラーを吐く方は他にも影響があるようでイヤらしい。

Xcode6.4(正確には10.10SDK)までは、openssl/ssl.hファイルは存在する。(Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/openssl/ssl.h)だが、Xcode7(正確には10.11SDK)以降では同様の場所には存在しない。件のエラーは、これが原因である。

これは、OS XというよりもAppleがOpenSSLを見限ったことによるらしい。(SDKとしての代わりのものは、Common Cryptoと呼ばれるようだ)それは分かったとしよう。Appleの開発者は今後Common Crypto使えば良い。だが、UNIXの資産を引き継ぐという使い方では、どうしてくれるのだろうか?

UNIXの資産を引き継ぐのは、事実上、Homebrewを使えば良い状態にある。だから問題ないのだろうか?

Macを使う上で、Xcodeに手を出すかどうかは一つの分かれ目である。なくても問題ない使い方はいくらでもある。
Homebrew を使うには必須だが、Xcodeの内容まで知る必要はない。Xcodeは、提供されるUNIX資産を用意するまでの過程同様、ブラックボックスで良い。こうして残るわずかが、ヘンテコな互換性問題に直面するわけだが、それは無視しても構わないのかも知れない…。

2015年10月1日木曜日

El Capitan Beta版をお勧めされた時の対処

OS X El Capitan 10.11がリリースされた。ビルド番号は15A284だ。

しばらく前からPublic Betaでもフィードバックもなく、リリース版が出たら移行しようと思っていたので、早速そうした。
手順の詳細はここには書かない。Time MachineでバックアップしておいてHDD(SSD)を初期化、インストールするだけのことだからだ。

ただ一件だけトラブルがあったのでそれについて書く。
筆者はMacを2台所有している。MacBook Pro Retina Early 2013とMacBook Air Early 2015だ。両方ともβ版から正式版に移行したのだが、MacBook Proの方だけ、ソフトウェア・アップデートでPublic Beta 10.11.1が利用可能だと言われたのである。
もちろん、ここに書かれた手順でMacハードのβ版登録解除はしていた。

よせば良いのにApple Careに電話をしたら、Developerの問題だと言われてたらい回し、そしてそこでもApple Careに相談しろと言われる始末で、怒りを覚えてしまった。
(折に触れ、こういうことを書くのは、Apple Careへの加入が無意味だからである。あれはAppleの盲腸以下の存在だ)

対策は、ちょっと考え直したらすこぶる簡単だった。Macの設定情報は、設定ファイルに書き込まれることを思い出したからだ。
つまりこの場合起動ディスク > ライブラリ > Preferencesにあるcom.apple.SoftwareUpdate.plistが関係しているはずで、これをゴミ箱に移動してMacを再起動、ソフトウェア・アップデートを再確認したところ、しつこいβ版のセールスは帰ってくれたのだった。

2015年9月26日土曜日

El Capitan OS X 10.11.1 (15B17c)のMailでPOPアカウントを作る

以前、MailでPOPアカウントを作る方法を書いた。画像は古くなっているが、Yosemiteまでは、Option (alt)キーを押すことで、POPサーバーが選べた。

El Capitan OS X 10.11.1 (15B17c)は、Option (alt)キーが効かなくなった。今時、POPでメールを使うなんてありえないとAppleは考えたらしい。

だが、過小とはいえ、需要はまだあるのだ。例えばYahoo! Japanである。筆者が捨てアド感覚で作ったアカウントには、今でも1日当たり十数通のバルクメールが来る。
IMAPにすると、バルクメールが入ったメールボックスがMail.app側にも反映され、これを削除、非表示にはできない。POPならば、このメールを目にすることはない。

トライアンドエラーの結果、El Capitan Beta(15B17c)でも、POPアカウントを作ることはできた。キーワードはわざと間違うである。

  1. Mail.app側でもシステム環境設定のインターネットアカウント側でもどちらでも良い。始めにその他のメールアカウントを選ぶ。
  2. メールアドレスを入力するところを、敢えてYahoo!のアカウントを入れる。
  3. アカウント名またはパスワードを確認できませんというメッセージが書かれた、POP/IMAPを選択できる画面が表示される。
  4. 空欄を適切に埋めてサインインボタンを押せば、一丁上がりである。

問題の根本的な解決は、POPを使うことではないのは分かっている。

  • 汚れたアドレスの使用をやめる
  • 他にもバルクが来ているに違いないYahoo! Japan側のメールボックス構造を変えてもらう
  • Apple Mail側で非表示にできるようにする

難易度が低い順に書いてみた。のち検討する。

2015年9月8日火曜日

Apple IDを使わないログインパスワードのリセット

現在のOS Xでは、標準状態でセットアップすれば、ログインパスワードはApple IDを使ってリセットできる。

そのせいなのかどうか分からないが、Ricovery HDから起動することで可能だったログインパスワードリセットは、GUI(グラフィック・ユーザー・インターフェース)から消えている。

筆者はそれを知らず、旧バージョンのOSをインストールするときに、Apple IDを登録しなかった。そして何故かパスワードが通らなくなった。

困った。困ったが、幸いMacがもう一台あった。(力むわけではないが、スマホやタブレットは持っていない)もう一台のMacで検索すると、以下のようにRicovery HDで起動した状態でターミナルを操作すると、パスワードリセットのGUIが出てくることが分かった。

resetpassword

なぜ、リカバリ画面のメニューから消えていて、ターミナル経由で呼び出せるのかは、Appleに聞いて欲しい。

El Capitanでのディスク作成(Disk Burning)

本来、β版ソフトウェアの内容を書くのはご法度だ。それに、いつ変更されるかも知れない。
しかし、前回El Capitanについて書いたときにDisk Utilityからディスク作成機能がなくなったのを知り、GUIでディスクを作成することができなくなったと考えてしまった人間としては、訂正の必要を感じる事態となったので、その目的で記事を書く。

結論から言うと、YosemeiteまではDisk Utilityにあったディスクイメージからディスクを作成する機能は、Finderに統合されている。(El Capitan Public Beta 15A278b)

これに気づいたのは、どうしてもディスクイメージからディスクを作成する必要があって、空のディスクを挿入した時だった。Yosemiteまでの処理を選択するダイアログ(下図)

は表示されず、代わりに空のディスクがデスクトップにマウントされたのだ。もしかしてと思って、Finderのファイルメニューをみると、Yosemiteでは(ディスクイメージを選択しようが何をしようが無関係に)次のように表示されるメニュー

が、El Capitanでは、ディスクイメージを選んだ場合だけ下図のように表示されていた。

また、Finderのアクションメニューからも同様で、Yosemiteでは、

のように表示されるものが、El Capitanでは、次のように表示される。

Finderからメニューを選ぶと、お馴染みのディスク作成ダイアログが表示される。(下図)

なお、Finderに従来からあったディスク作成フォルダの機能はそのままになっており、こうした機能をFinderに集約したものと思われる。

いつだったか忘れたが、この逆のことがあった。すなわち、FinderからDisk Utilityにイメージのディスク作成機能が移動したのである。だが、だからと言って先祖返りだなどと口汚く罵るつもりは、ない。

2015.09.09更新
Yosemiteまでの状態のスクリーンショットを追加。それに伴い、文章を修正。

2015年8月29日土曜日

MacでWindows 10を動かす上で最適な環境は?

問題が解決しないまま、時間が過ぎた。もし筆者が指摘した問題がWindows10にあるとしたら大問題だろう。だが、世間の様子は違う。これは、また筆者がポカをやった証拠ではあるまいか? そう考えて調べた結果、MacTypeが犯人であることが判明した。

Windows10をセーフブートして、msconfigでMicroSoft以外のサービスを止めながら確認した結果、MacTypeが稼働すると、画面点滅が起きた。

ややこしいのは、MacTypeがアップグレード前のOSに入っている時(筆者の場合サービスモードで稼働)のみ、アップグレード後のWindows10で画面点滅や、Windows10が強制再起動するという現象に結びつくことだ。
Windows10をクリーンインストールしたり、アップグレード前にMacTypeをアンインストールしておいて、後からMacTypeを入れる分には、一向に問題はない。

偉そうに入れ替え実験の話まで書いたが、見落としがあった。陳謝する。

Windows 10が出てしばらく経った。筆者も、もはや慣れてはいるものの、まっとうなスタートメニューを体験したくて入れてみた。代表的な仮想環境3種類(Parallels Desktop 11、VirtualBox 5.0、VMWare Fusion 8)と、BootCampだ。

いろいろ試した結果、結論を言うと、MacでWindows 10を動かす上で最適な環境は現在はない。
どの環境もWindows 10対応をうたっている。だが、肝心のWindows 10が重要な問題を含んでいるからだ。 (あくまで個人見解だが)

筆者は、Windowsというのは、Macと全く違い、古いソフトもちゃんと動作する環境だと理解している。少なくとも今までは、ずっとそうだった。だからここに来て急に動作しないソフトが出るのはおかしいのではないかと考えている。

少し前にRetina MacでのVMWare Fusion 7とWindows10というエントリを書いた。このエントリでは、VMWareのディスプレイドライバが問題なのだろうと書いている。

しかし、今は違う。なぜならば、Parallels Desktop 11、VirtualBox 5.0、VMWare Fusion 8の3種類の仮想環境で、問題が発生することが分かったからだ。それだけではない。BootCampも、一つのソフトで同じ問題が発生した。

問題についておさらいしておこう。
筆者が言う問題とは、以下の順に発生する現象を言う。最後まで行くのは運が悪いソフトだ。

  1. アプリケーションの起動時、UAC (User Account Control。例のコンピュータの変更を許可しますか画面だ)が必要ないソフトの起動も、UACがある時と同様に画面が点滅する。(点滅しないケースが珍しい)
  2. アプリケーションの動作(ボタンを押す等の操作の他、画面のアップデート)一つ一つで、UACと同様の点滅。
  3. ディスプレイドライバが適用できないと表示され、Microsoftデフォルトのドライバに切り替わる。(横長画面は4:3になる)
  4. アプリケーションの動作が停止、Windows 10が自動的に再起動

一種類の仮想環境でだけ発生するならば、その仮想環境の問題だと言えるだろう。しかし、すべての仮想環境で発生する上、BootCampでも発生するとなると話は別である。

昔勤めていた会社で入れ替え実験をやった。機械を構成するどのユニットに問題が付いてくるのかを調べたものだった。そこからすると、これはWindows 10に問題が付いてくるケースだ。

Windows 10の見た目はWindows 8/8.1に比べて良くなった。だが、Windows 8/8.1を超える失敗でないことを早くMicrosoftが証明してくれることを切に望む。

最後に環境としてのどんぐりの背比べについて書く
VirtualBoxは無料なだけあって限界がある、Parallels Desktop 11は、Windows 10で、共有したHFS+ハードディスクの容量計算が間違っていた。そして、Windows 8.1に戻しても、ImgBurnが途中で応答がなくなった。BootCampは相変わらず字が小さいし、操作がセンシティブ、つまりボタンを押すにしても、反応する場所が仮想環境に比べてピンポイントが狭い。
結論として、浮気する前に使っていたVMWare Fusionが一番良かったという話になってしまった。ヘ(´-`)ヘである。

2015年8月15日土曜日

Mackeeper Blocker

本ブログで最も読まれている記事はMacKeeperは必要ない!!である。2年以上前に書いたものだが、それだけ、MacKeeperが邪魔だと感じる人が多いのだろう。

AppleちゃんねるさんがMackeeper BlockerというRubyスクリプトプログラムを紹介している。関連するヒット記事を持つ関係上、当ブログでも使い方を転載することにする。

  1. Mackeeper Blockerの導入
    ターミナル.appで次のコマンドを実行する。

    git clone https://github.com/avatsaev/mackeeper_blocker.git
    

    この作業では、git cloneというコマンドでターミナル.appが開いた時のディレクトリにmackeeper_blockerをコピー(クローン)している。通常ターミナル.appはホームディレクトリを起点に開くはずなので、ホームディレクトリにmackeeper_blockerというフォルダができる。

  2. Mackeeper Blockerの使い方
    上記git cloneをしたそのまま間の状態で、ターミナル.appで次のコマンドを実行する。

    cd mackeeper_blocker
    ./mackeeper_blocker
    
  3. 作業が終了したら、(通常は)ホームディレクトリにあるmackeeper_blockerというフォルダは削除して構わない。

Appleちゃんねるさんの説明にある通り、このRubyスクリプトプログラムは/etc/hostsというファイルに、通信を拒否するエントリを追加しているだけである。(/etc/hostsのアクセスは管理者権限がいる)
怪しいところは何もないので、安心して使ってみて欲しい。

2015年8月7日金曜日

Retina MacでのVMWare Fusion 7とWindows10

Retinaディスプレイを持つMac、筆者の場合はMacBook Pro Early 2013だが、これにVMWare Fusion7を使ってWindows10をインストールするのは、(少なくとも今は)止めたほうが良い。

筆者はVMWare Fusion7最新版(7.1.2)を使っている。WIndows10のリリースが近づいた頃から、ゲストOSであるWindows8.1のタスクバー右端にWIndows10をガイドする表示(Get Windows X。以下GWXと略)が出るようになった。
ところが、リリース直前に見るとディスプレイの互換性がないのでインストールできないと表示されていた。

ここでGWXは公式情報だと考えなかったのが失敗であった。ググってみるとVMWare Fusion7であればWIndows10(プレビュー版)が問題なく動いたという(素人の)報告が結構見つかった。

そこで、MicroSoftがディスクイメージでWindows10を配布し始めたのを、いち早くダウンロード、ディスクイメージをMacでマウントして中身をWIndows8.1から参照する方法でWindows10をインストールした。

まさかとは思ったが、この方法で、ちゃんとWindows8.1を上書きする形でWindows10はインストールできた。

だが、すぐに異常が見つかった。アプリケーションの起動を始めとする操作ひとつひとつで、画面が一時的に真っ黒になり、また戻るのだ。
それだけではない。そのまま使い続けると、画面の縦横比(アスペクトレシオ)が4.3になってしまうのだ。WIndows10は、ディスプレイドライバの互換性がないので標準ディスプレイドライバで動かしていると警告していた。

まぁ使えなくはないと言えば、確かに使えなくはない。だが、筆者はダメだと判断した。なるほど、当初GWXが表示していた警告は正しかったのだ。

今後、VMWareがディスプレイドライバをアップデートするなどの対応をすれば、無事使えるようにはなるだろう。だが、それまでは、我慢してWindows8.1を使ったほうが良さそうだ。

2015.08.12追記
Retina Displayに限らず、VMWare SVGA 3DディスプレイドライバがWindows 10に対応していないことを確認した。確かに、MacBook AirでもRetinaほどではないが、おかしな動作はした。

2015.08.15追記
VMWare SVGA 3Dディスプレイドライバについて、VMWareより公式見解が出ている。
これを受けて筆者も再度Windows10をインストールし直した。だが、画面が一時的に真っ黒になる現象、縦横比(アスペクトレシオ)が4.3になる現象は、特に共有フォルダアクセスで相変わらず発生する。
縦横比は再起動で直るが、果たしてこれで、公式見解にある通り、ドライバが対応していると言えるのかは甚だ疑問だ。
ちなみに、本日時点ではWindows8.1には戻していない。しばらく使い込んでみようと考えている。

2015.08.29追記
問題はVMWareのディスプレイドライバではないことが判明した。こちらでそれについて述べている。

2015年7月26日日曜日

VMWare Fusionの仮想マシンのバックアップ再考

VMWare Fusionの仮想マシンバックアップにTime Machineを用いる方法が、VMWare KBに紹介されている。
かいつまんで説明すると、VMWare Fusionに備わっているAuto Protectスナップショットという機能を用いることで仮想ディスク全体の更新を止め、変更分(スナップショット)のみ新規保存するようにすることで、Time Machineバックアップへの負荷を軽減するというものだ。

筆者も、半年ほど、この機能を使ってTime Machineに仮想マシンをバックアップしてきた。だが、止めることにした。バックアップ側ではなく、Mac本体にある仮想マシンのサイズが、実容量の倍以上に肥大してしまったからである。(履歴が残る分、バックアップ側はもっと大きい)

仮想マシンファイルはパッケージ形式で、中に仮想ディスクイメージがあるのだが、そこにあるスナップショットと思われるファイル群が、元の仮想ディスクと同じくらい容量を食っていた。
即刻VMWare Fusionのスナップショット管理ウインドウで、Auto Protectを止め、スナップショットを削除したところ、予想通り、仮想マシンファイルのサイズは、ほぼ半減した。

以前筆者は、仮想マシンバックアップに、rsyncというコマンドを使っていた。履歴を残したら大変なので、最新状態のみバックアップしていた。Time Machineを使えば履歴が残る。良さそうに思えたのでAuto Protectに浮気したが、やっぱりrsync戻るしかないと考えた。戻りついでに、手順を残しておくことにした。

Auto Protectがまずい理由を説明しようとして長くなった。ここからが本エントリの主題である。以下、rsyncの最新版ビルド、launchdシェルスクリプト、launchdプロパティリストの順に説明を進める。

  1. 仮想ディスクの分割
    仮想ディスクは分割しておくことをお勧めする。その方が、バックアップされるファイルの量が減るはずだ。
  2. rsyncの最新版ビルド
    rsyncの最新版は3.1.1である。対するにOS X Yosemite収録のrsyncは2.6.9で、2006年更新のものだ。ここではこちらの記事を参考に、OS Xが持つファイル属性がコピーできるものをビルド、インストールすることにする。
    curl -LO https://download.samba.org/pub/rsync/src/rsync-patches-3.1.1.tar.gz
    tar xf rsync-patches-3.1.1.tar.gz
    mv rsync-3.1.1/patches ./
    rm -rf rsync-3.1.1/
    curl -LO https://download.samba.org/pub/rsync/src/rsync-3.1.1.tar.gz
    tar xf rsync-3.1.1.tar.gz
    mv patches rsync-3.1.1/
    cd rsync-3.1.1/
    patch -p1 < patches/fileflags.diff
    patch -p1 < patches/crtimes.diff
    ./configure
    make
    sudo cp -pR rsync /usr/local/bin/rsync-311
    
  3. launchdシェルスクリプト
    次のシェルスクリプトは、rsync-311を用いて指定したディスクに仮想マシンの入ったフォルダごとコピーする。これをvm.backup.shというファイル名(例)で保存する。保存場所は任意だが、次項で使うので覚えておいて欲しい。
    #!/bin/sh
    
    
    # バックアップを置く外付けハードディスク名、およびフォルダ名を設定
    backUpHdd="ExternalHDDName"
    backUpPath=/Volumes/"$backUpHdd/"
    
    thePath="/Users/{Account Name}/Documents/Virtual Machines.localized"
    
    if [ -d "$thePath" -a -d "$backUpPath" ]; then
      Ver1=`Date`
      Ver2=`/usr/local/bin/rsync-311 -avNHAX --fileflags --force-change --delete --stats "$thePath" "$backUpPath"`
      echo $Ver1"\n\n$Ver2" > /tmp/vm.backup.log
    fi
    
    exit 0
    
    シェルスクリプトには、実行権限を付与する。
    chmod 755 vm.backup.sh
    
  4. 指定時間ごとにシェルスクリプトを実行するLaunchdプロパティリスト
    次のLaunchdプロパティリストは、外付けHDDのマウント時に6時間おきに仮想マシンをバックアップする。これをjp.yourName.vm.backup.plistというファイル名(例)で保存する。保存場所はホームディレクトリ > Library > LaunchAgentsである。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
        <dict>
            <key>Label</key>
            <!-- yourNameを書き換える -->
            <string>jp.yourName.vm.backup</string>
            <key>ProgramArguments</key>
            <array>
                <!-- Account Nameを書き換える -->
                <string>/Users/{Account Name}/Library/LaunchAgentsScripts/vm.backup.sh</string>
            </array>
            <key>StartInterval</key>
            <!-- 数字をバックアップする時間間隔(秒)に書き換える -->
            <integer>21600</integer>
            <key>StandardErrorPath</key>
            <string>/tmp/StandardError.log</string>
            <key>StandardOutPath</key>
            <string>/dev/null</string>
        </dict>
    </plist>
    
    プロパティリストをLaunchdに登録する。
    launchctl load /Users/YourAccount/Library/LaunchAgents/jp.yourName.vm.backup.plist
    

以上の手順で、仮想マシンの最新状態のみ、Launchdプロパティリストで指定した時間間隔でバックアップされるようになる。時間間隔は、あまり細かすぎると、仮想マシンをいじりすぎて元に戻したい時などに困る。筆者は取り敢えず6時間を設定した。

なお、Time Machineバックアップからの仮想マシンバックアップ削除も実行した。これは通常のTime Machine操作方法と同じなので、ここでは説明していない。

VMWare Fusionの例で説明したが、VirtualBoxでも、仮想ディスクを分割すれば、この方法でバックアップできる。

2015年7月23日木曜日

"SUIDGuard.kext"補足

DYLD_PRINT_TO_FILEの権限昇格脆弱性に対する有志の対策である"SUIDGuard.kext"の存在そのものは、Appleちゃんねるさんが紹介しているのを読んで知った。
インストールは/System/Library/Extensionsにコピーするだけだと書いてある。
だが、コピーしただけでは読み込まれないと思う。少なくとも筆者の場合はそうだった。試したMacの台数は2台である。

機能拡張の入手先
これが失礼ながらAppleちゃんねるさんの記事では分かりにくい。筆者は関連リンクからXcodeのプロジェクトをダウンロードしてしまった。正しくは、こちらである。
ちなみにダウンロードするのは、SUIDGuard.kext.tar.bz2である。

機能拡張のインストール
よく知っている人には常識かも知れないが、失礼ながらAppleちゃんねるさんの記事では抜けている手順がある。以下説明する。

  1. ファイルの解凍
    これはさすがに常識レベルだと考える。説明が抜けているなどと言うつもりはない。
  2. 所有者権限の変更
    解凍した"SUIDGuard.kext"を/System/Library/Extensionsにコピーするだけでは、次のように表示されてしまう。

    ターミナルで次のようにして、所有者をrootとwheelにする。

    sudo chown -R root:wheel SUIDGuard.kext
    
  3. 機能拡張フォルダへの移動
    Finderでやっても構わないし、また次のようにターミナルで移動しても良い。

    sudo mv SUIDGuard.kext /System/Library/Extensions
    

    ただ、機能拡張フォルダに入れただけでは読み込まれず、次の図のようになる。

  4. 機能拡張の読み込み
    読み込みは、システムの再起動か、あるいは次のようにターミナルで読み込ませる必要がある。

    sudo kextload /System/Library/Extensions/SUIDGuard.kext
    

以上、Appleちゃんねるさんみたいにメジャーでない、冥王星のようなブログでこんな小言めいたことを書いても…とも思うが、念のために補足しておく。

それにしても、キーチェーンの件といい、本件のDYLD_PRINT_TO_FILEの権限昇格脆弱性といい、最近のAppleは抜けが多すぎる。そして何より問題なのは、発覚した問題を放置することだ。
筆者のブログは小言めいた記事が多いが、だからと言ってAppleが嫌いなわけではない。逆に好きだからこそ、ちゃんとやって欲しいのだ。

2015.08.16追記

  1. 本記事の内容だけでは、OSを再起動した際にSUIDGuard.kextが読み込まれない。再起動後にも読み込まれるものがパッケージ形式で配布されている。(SUIDGuardNG-Installer.pkg、またはSUIDGuardNG.dmgをダウンロードする)
  2. OS X 10.10.5でDYLD_PRINT_TO_FILEの権限昇格脆弱性の問題は修正されたが、何やらきな臭い。動向はAppleちゃんねるさんなどで報告されると思われるので、注視されたい。問題が完全に修正されるまでは、SUIDGuardNGをアンインストールしない方が良さそうだ。

星とラブの困惑からの脱出 - iTunes 12.2

Appleは、iTunes 12.2から、従来の星によるレーティングに加え、Loveというレーティングを追加した。
これは、Apple Musicへの対応に伴うものだそうだ。Loveしたトラックまたはアルバムから、Apple Musicでのオススメを作り出すためのモノらしい。

なぜ、今回Appleは、過去の遺産も必要とあればバッサリ切る、いつもの方針を示さなかったのだろうか?
例えば、技術的には、星によるレーティングで、星いくつ以上ならばLoveにするというような機能を持たせることは、可能だったはずだ。

こういう中途半端な事をすると、すぐにこんな記事が書かれることになる。記事は英語で、筆者も辞書を引きながら読んだ箇所もあるが、爆笑モノだ。一読をお勧めする。(笑)

冗談はさて置いて、確かに、図のように、トラックまたはアルバムの評価基準を選択する設定はある。だから、レガシーな星によるレーティングをいじらないまま、見えなくする事はできる。

だが、見かけ上の操作ができるとしても、星かラブのどちらかにするか、あるいは、可能であれば星からラブへの移行がしたいと思った。別にApple Musicを使うつもりだからではなく、評価基準を統一したいと思ったのだ。

星からラブへの移行
冒頭にも書いた通り、iTunes自体にこの機能が欲しかった。だが、今のところはない。調べてみると、星の方はiTunes Library.xmlに記録されているのだが、ラブはなかった。
すわっ、Objective-Cで何か作らなきゃと思ったのは愚かだった。多分、その方が処理速度は早いだろう。だが、速度はさておき、手軽な手段を忘れていた。AppleScriptである。

次のAppleScriptは、ラブにする星の数を設定し、また、星からラブに移行するかどうかも選択できる。(掲載例は移行しない設定)

-- ラブにする星の数(実際は整数値)を設定。数値と星の対応:20=★, 40=★★, 60=★★★, 80=★★★★,  100=★★★★★
set thresholdRating to 80

-- ラブに移行する場合はtrue、移行しない場合はfalse
set delteteStar to false

set trackCount to 0

tell application "iTunes"

    -- iTunesのバージョンチェック。ラブは12.2以降。
    considering numeric strings
    set newEnough to version ≥ "12.2"
    end considering
    
    if newEnough then
        
        -- 総トラック数の算出
        set totalTracks to (every file track)
        set totalTracksCount to count totalTracks
        
        repeat with aTrack in totalTracks
            
            set trackRating to rating of aTrack
            
            -- レーティングがゼロでなければ処理
            if trackRating ≠ 0 then
                
                -- 設定★数以上の場合はラブにする
                if trackRating ≥ thresholdRating then set loved of aTrack to true
                
                -- ラブに移行する場合はレーティングをゼロにする
                if delteteStar then set rating of aTrack to 0
                
            end if
            
            -- カウンターのインクリメント
            set trackCount to trackCount + 1
            
            -- メッセージ欄に進捗状況を出力
            log "Processing: " & trackCount & " of " & totalTracksCount
            
        end repeat
        
    end if

end tell

作業は、一時的に、iTunes 12.2(以降)の詳細環境設定で、iTunes ライブラリ XML を他のアプリケーションと共有をオフにしたほうが早い。

iTunesライブラリの各トラックに設定されている星をラブに置き換えるので、上図の表示設定とは関係なく実行できる。確認のため星とラブを表示しておくのも良し、ラブにしておくのも良し、お好みでどうぞ!

2015.07.25 改訂
AppleScriptにラブに移行する設定でも星が残ってしまうバグがあったので修正。

2015年7月22日水曜日

QLColorCodeに要注意!

QLColorCode(あえてリンクしない)という名前のQuickLookプラグインがある。ソースコードをQuickLookした時、プログラム言語特有の文字列を色付け(Syntax Hilighting)してくれる、プログラミングをする人間などには嬉しい機能を持っている。

ところが、このプラグインをインストールして、QuickLookでテキストを選択できるようにしていると、QuickLook画面上で選択した文字列のコピーができなくなる場合があるのだ。

問題が発生したのは、MacBook Pro Retina Early 2013とMacBook Air Early 2015、OSはYosemite 10.10.4である。同じOSでも、破棄予定の不調なMacBook Late 2009では発生しない。なぜ機種によって差があるのかはよく分からない。

ちなみに派生系と思われるQLColorCode-extraでも、同じ問題がある。

筆者はコピー&ペーストを多用する。当然のことながら、この機能に問題があるモノは、たとえ便利でも使わないことにした。

他の環境で問題が出るかどうかは分からない。だが、そういう事実があったことは記録しておくべきだと考え、このエントリを書いた。

2015.07.22 9:50 P.M.
内容が不明確なところ、間違いがあったので、加筆修正。

2015年7月21日火曜日

スパースバンドルの夢、再び

本ブログの最初の方にスパースバンドルの見果てぬ夢というエントリがある。Time Machineバックアップを、ローカルハードディスクに置いたスパースバンドル・ディスクイメージに保存できるかについて書いたものだ。

そういうことはできないというのが、当時の結論だった。

だが、最近、Time Capsuleに置いたスパースバンドル・ディスクイメージの振る舞いそのもの ー 必要な時にMacにマウントされ、バックアップが終わったら、マウント解除される ー は、無理な(ややこしい)ものの、似たような事はできる事が分かった。

本エントリでは、2年半強の時を経てたどり着いた、ローカルハードディスクに置いたスパースバンドル・ディスクイメージにTime Machineバックアップを保存する方法を説明したい。
なお、スパースバンドルについては、こちらに分かりやすい説明があったのでリンクしておく。

  1. スパースバンドル・ディスクイメージの作成
    イメージの作成自体はディスクユーティリティで次の図のようにすれば良い。イメージのサイズと名前はお好みである。図の例では、サイズを128GB、名前をTM_BackUpとしている。
  2. Time Machineを騙す
    Time Machine環境設定パネルからは、マウントされたディスクイメージをバックアップディスクとして選択することはできない。だが、次のようにターミナルから入力すると、認識させることができる。[情報ソース]
    sudo tmutil setdestination /Volumes/TM_BackUp
    
  3. ディスクイメージをマウントさせるシェルスクリプト
    ディスクイメージがマウントされていないと、自動バックアップはできない。手動ならできるが、それでは、筆者のようなモノグサ者には不満が残る。そこで、シェルスクリプトを使う。
    次のシェルスクリプトをAuto mount TM Image.shというファイル名(例)で保存する。保存場所は任意だが、次項で使うので覚えておいて欲しい。
    #!/bin/sh
    
    # Auto mount Time Machine disk image on Login.
    
    # ここは自分のバックアップHDDにする
    TM_Volume="/Volumes/Data 750GB"
    
    # ここは自分のディスクイメージ名にする
    Image_Name="TM_BackUp.sparsebundle"
    
    ImagePath="$TM_Volume"/"$Image_Name"
    
    Mount_Image="/Volumes/"`echo $Image_Name | cut -d . -f1`
    
    if [ -w "$ImagePath" -a  ! -d "$Mount_Image" ]; then 
        /usr/bin/hdiutil attach "$ImagePath"
    fi
    
    exit 0
    
    シェルスクリプトには、実行権限を付与する。
    chmod 755 "Auto mount TM Image.sh"
    
  4. ログイン時に、シェルスクリプトを実行するLaunchdプロパティリスト
    こういうことはLaunchd.plistにやってもらうのが手っ取り早い。
    次のプロパティリストをjp.yourName.tm_image.mount.plistというファイル名(例)で保存する。保存場所はホームディレクトリ > Library > LaunchAgentsである。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
        <dict>
            <key>Label</key>
            <!-- yourNameを書き換える -->
            <string>jp.yourName.tm_image.mount</string>
            <key>KeepAlive</key>
            <dict>
                <key>PathState</key>
                <dict>
                    <!-- ExternalHDDNameを書き換える -->
                    <key>/Volumes/ExternalHDDName</key>
                    <true />
                </dict>
            </dict>
            <key>ProgramArguments</key>
            <array>
                <!-- シェルスクリプト保存場所を絶対パスで指定 -->
                <string>/Path/To/YourScript/Auto mount TM Image.sh</string>
            </array>
            <key>RunAtLoad</key>
            <true/>
            <key>StandardErrorPath</key>
            <string>/tmp/StandardError.log</string>
            <key>StandardOutPath</key>
            <string>/dev/null</string>
        </dict>
    </plist>
    
    プロパティリストをLaunchdに登録する。
    launchctl load /Users/YourAccount/Library/LaunchAgents/jp.yourName.tm_image.mount.plist
    

以上で、外付けローカルハードディスクに置いたディスクイメージにTime Machineバックアップが作成できるようになった。
ディスクイメージだから、上限サイズ(拡張も可能)は決まっている。すなわち、Time Machineによるハードディスクの使用容量制限ができることになる。

2015.07.23改訂
ディスクイメージがある外付けHDDのマウント状況に応じたLaunchd.plistの加筆修正。(HDDがマウントされたらシェルスクリプトを起動するという条件を追加)以下参照。

<key>KeepAlive</key>
<dict>
    <key>PathState</key>
    <dict>
        <key>/Volumes/ExternalHDDName</key>    <!-- ExternalHDDNameを書き換える -->
        <true />
    </dict>
</dict>

2015年7月15日水曜日

さよならFlashコンテンツ

Adobe Flash playerの脆弱性が次々と見つかっているようだ。mixiのアカウントを持っていた頃、ゲームといえばFlashだった。2年程前に持っていたFaceBookアカウントでも同じだった。だからSafariにFlashのバグがあると噛み付いたりもした。
だが、ゲームを伴うSNSを止めてみるとFlashはパソコンの世界でも劇的に比重が下がっていることに気がついた。そこへ来ての相次ぐ脆弱性の発見である。そろそろFlashは終わりかなと思ってMacから削除してしまうことにした。

Flash Playerの削除方法自体はこのサイトにある通りで良い。
(補足:アンインストーラーをダウンロードしなくてもアプリケーション > ユーティリティにあるAdobe Flash player Install Managerを起動する方法でもFlash Playerを削除できる)

問題はXHTML1.0 StrictまたはXHTML1.1でホームページを記述していて、YouTubeの動画を埋め込んでいた場合である。
XHTML1.0 StrictまたはXHTML1.1では、YouTubeが埋め込み用コードとして提供する<iframe>要素が使えないため、<object>要素を使うのだが、ここに落とし穴がある。
<object>要素では、YouTube動画を埋め込む際type属性でtype="application/x-shockwave-flash"と記述するからだ。

Youtubeはとっくの昔にHTML5プレーヤーに置き換わっている。だからYouTube本家ページや埋め込み用コードを用いれば、Flash Playerを削除しても動画は再生できる。だが、XHTML1.0 StrictまたはXHTML1.1適合化のために<object>要素を使った場合、埋め込み動画は再生できなくなってしまう。

対策はXHTMLを使い続けるならばXHTML1.0 Transitionalに変更する、またはHTML5に移行することである。両者ともYouTubeが埋め込み用コードとして提供する<iframe>要素が許容されるからだ。ただし、適合させるには、以下のようにちょっとだけ修正が必要だ。

YouTubeが提供する埋め込みコード


XHTML1.0 Transitional向け埋め込みコード(allowfullscreenを取り除く)


HTML5向け埋め込みコード(frameborder="0"をstyle="border:0;"で置き換え)


参考:XHTML1.0 TransitionalまたはHTML5に適合させる方法の英語のネタ元

2015年7月13日月曜日

El Captain Public Beta

Yosemite Public Betaでひどい目にあったのにも懲りず、El Captain Public Betaをインストールした。しかもメインで使っているMacだ。
だって別のパーティションにインストールして時々立ち上げる程度で何のテストができるだろう? そう、筆者は勇敢なのだ。(笑)

ところでEl Captain Public Betaだが、クリーンインストールが良かろうと思って、ここにある手順でUSBメモリを作成したが、起動可能にならなかった。 Yosemite Public Betaでは同じ手順で作成できたのだが…。
まぁ筆者の場合、クリーンインストールと言っても、OSを新規インストールするだけで、アプリや書類は転送するから、どこまでクリーンかというと甚だ怪しい。原則としてソフトウェアはパッチ等で最新状態にできるはずなので、上書きでも良いかなと思っている。

雑談はここまでにして、筆者が使っているソフトウェアで課題、あるいは問題があったものを書いておく。

  • Apache (2.4.12)
    拡張子appが付くアプリケーションではないが、筆者はホームディレクトリにサイトフォルダを置いて使っている。
    Yosemiteでコメントアウトしたhttpd.confの一部がコメントされ、サイトフォルダが使えなくなっている(404 Not foundになる)ので、以下のようにコメントアウトする。

    変更前

    #LoadModule userdir_module libexec/apache2/mod_userdir.so
    #Include /private/etc/apache2/extra/httpd-userdir.conf
    

    変更後

    LoadModule userdir_module libexec/apache2/mod_userdir.so
    Include /private/etc/apache2/extra/httpd-userdir.conf
    
  • Audio Hijack (3.1.1)
    Instant Onの互換性がなく、システムオーディオを操作できない。
  • Bartender (1.2.41)
    OS標準メニュー項目を収納できない。(作者既に知っている)
  • CotEditor (2.1.4)
    行番号を表示させていると、スクロール後、スクロール前の行番号とダブって見にくくなる。エディタとしては、ちょっと困るかも。(作者報告済み)
  • Epson Printer Utility 4 (9.42)
    インク交換時、画像のようにウインドウが乱れる。(本来表示されるべきでないヘッドクリーニングとギャップ調整ボタンが乱れて表示される)
    インク交換時のEpson Printer Utility 4ウインドウの乱れ
  • Genymotion (2.5)
    El CapitanをYosemiteの上書きでインストールした場合、kextが削除されているのでVirtualBoxを再インストールする必要がある。
  • Gomoku - Online Game Hall (1.2.0)
    起動しようとするとクラッシュする。
  • Google Chrome (43.0.2357.132)
    一度だけフォームで日本語が入力できなかったが、Google Chromeの再起動と、変換学習のリセットで治った。
  • Kindle for Mac
    購入したKindle本のうち一冊(筆者の場合最後に購入したもの)しか表示されない。El Capitanでの起動時に互換性がないと表示された。
    互換性がなかったのは、Ver.1.11.2。現在のVer.1.12.0では問題はない。
  • mi (3.0 Beta 10)
    HTMLの編集でタグ内に文字入力しようとすると、カーソルポインタがタグの直前に入る。スクロールキーで正しい位置にポインタを移動する必要がある。(作者報告済み)
    3.0b11a2にて改善済み。
  • Paragon NTFS for Mac OS X
    動作しない。
  • SATSMARTDriver (0.8)
    動作しない。SATSMARTDriver.kextのコード署名が不正だとされて読み込まれない。Yosemiteで動いていたバージョン0.8もダメ。
  • Soundflower (1.6.6b)
    動作しない。インストールはできるが、本体であるSoundflower.kextのコード署名が不正だとされて読み込まれない。
  • Xcode (7.0 Beta 3)
    起動するまでが大変。
    GateKeeper(セキュリティとプライバシー環境設定)を動作させていると、開く前の検証中にXcodeの応答がなくなる。
    GateKeeperの検証を途中で止めたら、起動しようとするとコンピュータが破損すると表示されるようになった。セーフブートでXcodeを起動したら、長い時間はかかったが、何とか立ち上がった。

El Capitan Public Betaの印象は、リリース前のYosemite Public Betaに比べたら月とスッポンである。何しろアプリケーションの互換性チェックをする余裕があるくらいだ。(笑)フィードバック項目も2015.07.13時点で10件、内容もいかにもベータテストらしいレベルである。

2015.07.15 追記
El Capitan Public BetaのDIskUtilityには光ディスク作成(Disk Burn)機能がない。ネットには超好意的にまだ搭載されていないだけとの意見が多いが筆者はそうは思わない。Public Betaで搭載されていないということは、Macのハードウェアラインナップから考えると削除されたと判断すべきである。光ディスクを作成するユーザーは進歩的なAppleの考え方によって切り捨てられたに違いない。
見た目も速度も大して変わらないEl Capitanは、筆者にとってこの一点で失格となりアンインストールされた。

2015年7月6日月曜日

キーチェーンアクセスの脆弱性(XARA)

MacではGoogle Chromeで入力したパスワードを保存すると、Google Chromeの設定ファイルではなく、キーチェーンアクセスに保存される。Google Chromeでパスワードを表示するためには、キーチェーンアクセスのパスワード、つまりユーザーアカウントのパスワードが必要になる。
一方Windowsではどうなっているかと言うと、8.1ではGoogle Chromeで保存したパスワードを表示するためにはユーザーアカウントのパスワードが必要だが、XPでは認証なしで見えてしまう。
だから、WinXPでもGoogle Chromeを使う場合、折角Mac側でキーチェーンアクセスに保存したパスワードが丸見えになってしまうので、Googleアカウントでパスワードを同期しないほうが良いと思うという趣旨の記事を書こうとしていた…。

ところがだ…。

パスワードについて調べているときに、信頼の拠り所だったキーチェーンアクセスに脆弱性があるという記事を見つけた。(英語の記事はこちら
問題の根は深いようで、Apple側の要請で公開を6ヶ月待って欲しいと言われたものの、期限を過ぎてもAppleが無回答(!)だったために公開されたらしい。(英語版より)
この研究でGoogle Chromeのパスワードが全て読み出せた(英語版より)とあるが、Mac版Google Chromeのパスワード管理の仕組みからも納得できる。

さらに恐ろしいのは、Mac App Store(iOSはApp Store)の審査を、この脆弱性を利用してパスワードを盗むアプリが通過できたことである。

まさにどうなっちゃてるの? Apple!?という気分である。Apple Musicなどに浮かれている場合ではない!

AppleもWindows同様に脆弱性があるようになったのだろうか? しかし、Windowsは月1回脆弱性を修正するアップデートを配布している。それに対してAppleは放置である。なかなか素晴らしい顧客を舐めきった態度ではあるまいか?

どうやら真剣にMacからWindowsへ移行する準備をする時期が来たのかも知れない。あるいは、もう少し様子見をするならばキーチェーンアクセスにパスワードを保存しないようにするなどの対策が必要なように思う。

最後に、例によってフィードバック窓口へのリンクを書いておく。より多くのユーザーが改善を要望すれば、Appleが問題を改善する気になる可能性もゼロではないと(半信半疑だが)信じている。

2015年7月5日日曜日

Wake On Demandの落とし穴(?)

今更ながらだが、Mac OS X Snow Leopard(10.6.x)以降、MacにはWake On Demandという機能が備わっている。
これは、LAN内にあるMacは、スリープ中でもFinderのサイドバーの共有項目に表示され、それをクリックするだけでスリープを解除、中身にアクセスできるという優れものだが、一つ落とし穴(?)がある。
それは、Macの他にAirMac ベースステーションなどのApple製Wi-Fiルーターをセットで使う必要があるということだ。先の記事を注意深く読むと、Bonjour Sleep Proxy という分かりにくい用語で説明されていることに気付く人もいるかも知れない。

筆者はこのことに気づかず、他社製Wi-Fiルータを購入してしまった。Macは2台持っているが、同じ部屋に置いてあるのでWake On Demandの必要性はない。(と、意地を張ってみるが、実はこのエントリを書くまでWake On Demandを知らなかった)

AirMac ベースステーションがなければ、Appleの言う所のWake On Demandは不可能だ。だが、似たようなことは可能だ。それはWake On Lanである。(参考までにWake On Demandという用語はApple語で、一般的にはWake On Lanと言う)
Wake On LanとはLAN内に接続された機器に対してマジックパケットという信号を送って機器を起動(Macはできない)したりスリープ解除することを言う。(詳しい情報

以下では、擬似的なWake On Demand(Wake On Lan)を実現する方法を説明する。

  1. wolコマンド

    wolコマンド(マジックパケットを発行するコマンド)はソースコード付きでこちらから入手できる。

    圧縮ファイルを解凍し、中のwolというファイルをインストールする。(ターミナルで以下のコマンドを実行する)

    sudo cp wol /usr/local/bin
    
  2. AppleScript

    AppleScriptを用意しなくてもwolコマンドを直接起動すれば目的は果たせる。AppleScriptは筆者のようなモノグサ人間向けである。

    --接続するMACアドレスの設定
    set myMACAddr to "00:11:22:33:44:55" -- スリープ解除するMacのAirMacカードのMACアドレス
    
    --エラーフラグの初期化
    set errFlag to false
    
    --Wake On Lanコマンドの存在チェック
    try
        do shell script "test -f usr/local/bin/wol"
    on error
        
        say "WOLコマンドがありません"
        set errFlag to true
        
    end try
    
    if not errFlag then
        do shell script "usr/local/bin/wol " & myMACAddr
    end if
    

    スリープ解除するMacのAirMacカードのMACアドレスは、Appleメニュー > このMacについて > システムレポート... > Wi-Fi > インターフェイス:で調べることができる。

    このAppleScriptを実行すればMACアドレスを登録したMacのスリープ解除ができる。スクリプトメニューに登録して使うとさらに便利かも知れない。

なお、このWake On Lanは、Wake On Demand同様、省エネルギー環境設定パネルでWi-FI ネットワークアクセスによるスリープ解除がチェックされている必要がある。(デフォルトではチェックされている)

Wi-Fi アクセスによるスリープ解除受け入れ
Wi-Fi アクセスによるスリープ解除受け入れ

Wi-FI ネットワークアクセスによるスリープ解除はWake On Demandと連動しており、2時間に1回程度の間隔でMacのスリープが解除される。この時Macは自分がWake On Demandに対応できるよという信号を送った後、再びスリープする。
Wake On Demandを含めて、いわゆるオンデマンドな利便性を求める場合、定期的なMacの目覚めというゾンビ現象(?)がセットになっていることは覚えておく必要がある。

2015年6月18日木曜日

Yosemite Apple MailでのSMTPサーバー設定

さきほど、Yosemite Apple Mailで突然メールが送信できなくなった。全てではなく契約しているプロバイダのアドレスで起きた。

証拠写真を撮り忘れたので信じてもらえないかもしれないが、プロバイダのメール設定とは異なる設定に勝手に変更されていた。中でも事故が起きたアカウントはポート番号が25になっていた。

Yosemite BetaでOS X10.8時代への先祖返りを経験していた筆者は、すわ、やはり付け焼き刃の対策が剥がれたのかと疑ったが、違った。

トライ&エラーの結果、問題は下図に示すアカウント設定を自動的に検出して管理にあったことが分かった。(それにしても今時自動的にSMTP25番ポートを検出するなんて、Apple Mailって素敵過ぎる)

以下の図はSMTPの認証(SMTP AUTH)で暗号化していないパスワードを使う場合、Yosemite Apple Mailの芸術を防ぐ方法である。

暗号化していないパスワードでのSMTP認証
暗号化していないパスワードでのSMTP認証

今時暗号化していないパスワードを使って認証するSMTPサーバーがどのくらいあるかは知らない。だが、少なくとも筆者が使っているぷらら(NTTぷらら)は、この方式だ。
暗号化していないことについてぷららに食ってかかったこともあるが、よく分からない用語を出されて逆ギレされた経験があり、暗号化は遠いだろう。よって共有するに足るものと判断し、このエントリを書いた。参考になれば幸いである。

2015年5月16日土曜日

Android StudioがGenymotionを見失ったら…。

新しいAndroid開発専用のブログに記事を移動した。

Macでm2ts動画を再生する

m2ts動画、正確にはファイルの拡張子がm2tsである動画は、ハイビジョン動画の規格のひとつである。通常、MacのOS付属の動画再生ソフトQuickTime Playerでは再生できない。

誰も書かないみたいだし、検索すると変換ソフトばかりヒットするので書いてしまうことにするが、QuickTime Playerでこれを再生できるようにする方法があるのだ。

それはVLCメディアプレーヤをインストールすることだ。

馬鹿なことを言っていると思うだろう。VLCメディアプレーヤを使えば、m2tsを含めたさまざまな動画が再生できるようになる。これは筆者も百も承知のことだ。だが、こうやってブログエントリにする以上、VLCメディアプレーヤでファイルを開いてください…などと言うつもりは、ない!

VLCメディアプレーヤのバージョン2.2.1をインストールした後、ファイルの拡張子がm2tsである動画をFinderで選択して、スペースバーを押して見て欲しい。QuickLookで動画が再生できるはずだ。もちろんQuickTime Playerでも再生できる。

これを見つけたMacBook Pro with Retina Display Early 2013だけでなく、MacBook Late 2009でも検証済みだ。OSは10.8 Mountain Lion以降で確認済み。ただし10.8ではQuickLookでは再生できない。

VLC側の何かのバグ(?)でこうなっているなら、このエントリの命運も長くはないかも知れない。だが、そうでなければ、これはなかなか興味深い発見だと筆者は感じている。

2015.6.21追記
上記環境でQuickTime Playerでm2ts動画を再生すると、副音声も一緒に再生される。筆者は動画再生はもっぱらQuickLookなので気がつかなかった。QuickLookは副音声を制御できないので主音声のみ再生される。QuickTime Playerで副音声をオフにする方法は不明。

2015年3月9日月曜日

Command Line Tools for Xcodeのアンインストール方法

2016.11.12追記
Command Line Tools for Xcodeには、2つのパッケージが内蔵されている。ひとつは本記事で扱う、まさにコマンドラインツールだが、もう一つDevSDKをインストールするパッケージも存在する。DevSDKのアンインストールは一筋縄ではいかない。参考:Command Line Tools for Xcodeのもう一つの顔

実験的にCommand Line Tools for Xcodeをアンインストールしてみる必要が発生した。Google検索で上位にヒットする情報が嘘ばかりなので、本当の事を書く。

嘘記事達
YosemiteでCommand Line Toolsをアンインストールする方法
OS X コマンドライン版cc (Clang LLVM cc)のインストール方法 (Xcode CLI / Command Line Tools for Xcodeのインストール)
XcodeからインストールしたCommand Line Toolsを削除する方法
Xcode4.3 と Commad Line Tools をアンインストールする

余談だが、上位3位をプログラミング知識を共有するサイトQiitaが占めているのは笑える事実だ。実際、このサイトの記事は他の場合でも、当たるも八卦当たらぬも八卦であり、とても共有できるものではない。(笑)

Command Line Tools for Xcodeをインストールすると、インストーラーによってインストールされるファイルは、すべて起動ディスク直下のライブラリフォルダ -> Developerフォルダ -> CommandLineToolsフォルダにインストールされる。従って、アンインストールは、このフォルダを削除すれば良い。

仕組み
OS Xでは、Command Line Tools for Xcodeに収録されているコマンドに該当する名前のUNIX実行ファイルは、すでにインストールされている。
ただし、これらは実際に機能するファイルではなく、コマンドが入力された時に該当コマンドが見つからなかった場合、Command Line Tools for Xcodeをインストールするようにメッセージを表示する機能を持ったファイルである。
Command Line Tools for Xcodeがインストールされている場合は、それらにリンクしてコマンドを起動するようにできている。

アンインストール方法の検証
Command Line Tools for Xcodeがインストールされている環境で次のコマンドを実行されたい。すべてのファイルは/Library/Developer/CommandLineTools以下にインストールされていることが確認できるはずだ。

$  pkgutil --files com.apple.pkg.CLTools_Executables | less

従って、アンインストールは/Library/Developer/CommandLineToolsフォルダを削除すれば事足りる。いちいち、このパッケージでインストールされる項目を削除する必要など全くない。

なお、XcodeにはCommand Line Tools for Xcodeと同じものがアプリケーション内に入っている。(OSX 10.8.4向けのXcode 5.0.2以降で確認済み)XcodeとCommand Line Tools for Xcodeが両方入っていた場合、使われるのは新しい方のようだ。(CLT6.1.1とXcode 6.2で確認済み)Xcodeがインストールされた環境にはCommand Line Tools for Xcodeを追加インストールする必要はない。

2015.3.26改訂。Xcode内蔵Command Line Tools for Xcodeについての記述を変更。

2015年1月3日土曜日

Linux LIve USBを作る

ひょんなことから、Linux Live USBを作る羽目になった。Macは簡単で使いやすい反面、ちょっとマニアックなことになるとできないことを痛感したが、それを議論するのは今回の主題ではない。

LinuxにはLive CDと呼ばれるCDまたはDVDのみでPCを起動できるバージョンのOSが存在する。いわゆるIntel Macは、これらのLIve CDを用いてLinux PCとして起動することができる。

最近のMac(確認したのは手持ちのMacBook Pro Retina Early 2013)であれば、配布されているディスクイメージをそのままUSBメモリにコピーするだけで動作するはずだ。だが、ちょっと古いMac(同MacBook Late 2009)では、一工夫が必要だ。

以下は、故障したHDDのデータ救出などで有名なKnoppixを題材とした、そのちょっと古いMac向けのLinux Live USBの作り方である。(実際の作業では、USB接続ではなく、本体のHDDを差し替えられる構造のMacが必要になる。そういうMacは、現在ではみなちょっと古いMacである)

  1. USBメモリのパーティション
  2. rEFIndの準備
  3. rEFIndパーティションの不可視化
  4. Live Linux(Knoppix)の準備

手順は上記の通り4段階に分かれる。以下、順に説明する。

  1. USBメモリのパーティション

    当然のことながら、USBメモリはLive Linuxイメージのサイズより大きいものが必要だ。その他にLinux上で作成したり設定したものを保存する空間が必要になる。見合ったサイズのものを用意されたい。(筆者は8GBを用意した)

    パーティションはディスクユーティリティ.appで行う。LaunchPadのその他という項目に入っているはずだ。

    • パーティションの数:2
    • パーティション(マップ)方式:マスター・ブート・レコード(下図参照)
      パーティション方式の選択
      パーティション方式の選択
      マスター・ブート・レコードの選択
      マスター・ブート・レコードの選択
    • rEFInd用パーティションのサイズとフォーマット

      サイズ:9.4MB(最小値。サイズ欄に0.09と入力)
      フォーマット:Mac OS 拡張(ジャーナリング)

    • Live Linux用パーティションのサイズとフォーマット

      サイズ:rEFInd用で残った全て(自動)
      フォーマット:MS-DOS(FAT)

    • 上記設定後の状態は、下図のようになる。適用ボタンを押してパーティションを行う。
      パーティション設定の状態
      パーティション設定の状態
  2. rEFIndの準備
    USBメモリの第1パーティションにrEFIndをカスタムインストールする。インストールするのはrEFItでも構わないが現在はメンテナンスされていない。ここでは64bit環境用の例を紹介する。

    ターミナル.appで以下のコマンドを実行する。Path/To/refind-bin-0.8.4の部分は実際にある場所に置き換えること。

    mkdir -p /Volumes/rEFInd/efi/refind
    cd Path/To/refind-bin-0.8.4/refind
    cp -pR drivers_x64 icons refind.conf-sample refind_x64.efi tools_x64 /Volumes/rEFInd/efi/refind/
    cd /Volumes
    sudo bless --folder rEFInd/efi/refind --file rEFInd/efi/refind/refind_x64.efi
    Password:
    cd rEFInd/efi/refind/
    mv refind.conf-sample refind.conf
    
  3. rEFIndパーティションの不可視化
    Live-CDをインストールしたパーティションはMac側でいじれないようにFinderでは見えないようにする。USBメモリ取り出しにまつわる無用なトラブルを防ぐために、rEFIndをインストールしたパーティションもFinderでは見えないようにする。

    ターミナル.appで以下のコマンドを実行する。

    cd /Volumes/
    diskutil unmount /Volumes/rEFInd
    Volume rEFInd on disk2s1 unmounted
    sudo asr adjust --target /dev/disk2s1 -settype "Apple_Boot"
    Password:
    Fsck /dev/disk2s1 ....10....20....30....40....50....60....70....80....90....100
    Adjust completed successfully
    
  4. Live Linux(Knoppix)の準備
    これ以降は、MacをLive CD(今回の場合はKnoppix Live DVD)で起動しての作業になる。

    LXTerminalを起動し、以下のコマンドを実行する。

    1. ルート権限の取得

      sudo -s
      
    2. USBメモリのパーティション番号の確認

      fdisk -l
      

      次のように表示され、/dev/sdcであることが分かる。

      Disk /dev/sdc: 7721 MB, 7721713664 bytes
      255 heads, 63 sectors/track, 938 cylinders, total 15081472 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0x00000000
      
      Device    Boot      Start         End      Blocks   Id  System
      /dev/sdc1               2       18433        9216   ab  Darwin boot
      /dev/sdc2           18435    15081471     7531518+   b  W95 FAT32
      
    3. Knoppixパーティションの不可視化

      LXTerminalを起動し、以下のコマンドを実行する。

      fdisk /dev/sdc
      

      以下のような画面が表示されるので、t2とタイプする。

      Command (m for help): t
      Partition number (1-4): 2
      

      lとタイプすると、次のように可能なフォーマットがリストされる。

      Hex code (type L to list codes): l
      
      0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
      1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
      2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
      3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
      4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
      5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
      6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
      7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
      8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
      9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
      a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
      b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
      c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
      e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
      f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
      10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
      11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
      12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
      14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
      16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
      17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
      18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
      1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
      1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
      1e  Hidden W95 FAT1 80  Old Minix      
      
      1cとタイプし、FAT32を選択、wで書き込む。
      Hex code (type L to list codes): 1c
      Changed system type of partition 2 to 1c (Hidden W95 FAT32 (LBA))
      
      Command (m for help): w
      
      The partition table has been altered!
      
      Calling ioctl() to re-read partition table.
      
      WARNING: If you have created or modified any DOS 6.x
      partitions, please see the fdisk manual page for additional
      information.
      Syncing disks.
      

      上記の通りfdiskを実行すると、/dev/sdcのパーティションリストは以下のようになる。

      Disk /dev/sdc: 7721 MB, 7721713664 bytes
      255 heads, 63 sectors/track, 938 cylinders, total 15081472 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0x00000000
      
      Device    Boot      Start         End      Blocks   Id  System
      /dev/sdc1               2       18433        9216   ab  Darwin boot
      /dev/sdc2           18435    15081471     7531518+  1c  Hidden W95 FAT32 (LBA)
      
    4. USBメモリへのKnoppixのインストール

      root@Microknoppix:/home/knoppix# mount -t vfat /dev/sdc2 /media/sdc2
      root@Microknoppix:/home/knoppix# cd /mnt-system/
      root@Microknoppix:/mnt-system# ls
      DVD-VL-KNOPPIX-20140928  autorun.bat  autorun.pif  cdrom.ico  index.html
      KNOPPIX                  autorun.inf  boot         efi
      root@Microknoppix:/mnt-system# cp -rf boot KNOPPIX /media/sdc2
      root@Microknoppix:/mnt-system# cd /media/sdc2/boot/
      root@Microknoppix:/media/sdc2/boot# ls
      isolinux
      root@Microknoppix:/media/sdc2/boot# mv isolinux syslinux
      root@Microknoppix:/media/sdc2/boot# cd syslinux/
      root@Microknoppix:/media/sdc2/boot/syslinux# mv isolinux.cfg syslinux.cfg 
      root@Microknoppix:/media/sdc2/boot/syslinux# rm -f isolinux.* *.cat
      root@Microknoppix:/media/sdc2/boot/syslinux# cd /home/knoppix/
      root@Microknoppix:/home/knoppix# umount /media/sdc2 
      root@Microknoppix:/home/knoppix# syslinux /dev/sdc2
      
      1行目 KnoppixをインストールするUSBパーティションのマウント
      2行目 Knoppix起動ディレクトリ(MacのSystemに相当するディレクトリ)に移動
      6行目 Knoppixディレクトリおよび、起動に必要なディレクトリをUSBメモリにコピー
      7行目 USBメモリ上のbootディレクトリに移動
      10行目 isolinuxディレクトリをsyslinuxディレクトリにリネーム
      11行目 リネームしたsyslinuxディレクトリ内に移動
      12行目 isolinux.cfgファイルをsyslinux.cfgファイルにリネーム
      13行目 不要なファイルの削除
      14行目 USBメモリをアンマウントするため、ホームディレクトリに移動
      15行目 USBメモリのアンマウント
      16行目 syslinuxのインストール

以上で、KnoppixのLive-USBが出来上がった。後はUSBメモリ上に設定保存用ファイルを作成することで、Wi-fiの設定等を保存できるようになる。

参考ページ:
Mac OS Xの内蔵ディスクはそのままに、外付けUSBディスクのLinuxとデュアルブートする方法
Mac で起動する USB メモリタイプの KNOPPIX/Math の作成法
2つのパーテーションのUSBメモリにKNOPPIX7.4.x をインストールす 2/3
2つのパーテーションのUSBメモリにKNOPPIX7.4.x をインストールす 3/3