Knowledge for WordPress

Knowledge for Google Products

2019年7月12日金曜日

macOS のリカバリーモードで USB Ethernet アダプタ(LANアダプタ)を認識させる方法

macOS のOS再インストールは、リカバリーモード(Command + r を押しながら起動)から行います。途中で認証のためにネット接続が必要です。どうやら標準搭載されているデバイスでしか GUI によるネット接続をサポートしていないのか、手持ちの MacBookAir では Wi-Fi しか認識しません。WPA の Enterprise 認証の場合、どうやら接続ができないようなのです(接続エラーになる)。手持ちのUSB Ethernet LAN アダプタを接続してもネット接続できません。そうした場合に networksetup コマンドで手動認識させる方法を見つけたので紹介します。

試した環境


  • macOS 10.14.5
  • MacBookAir 13inch 

参考情報



1. リカバリーモードで networksetup コマンドを利用するには


networksetup コマンドは /usr/sbin/networksetup に入っています。しかしながら、

リカバリーモードにはこのコマンドが入っていません。そのため、

  1. リカバリーモードでディスクユーティリティを開き、内蔵HDD(SSD)をマウントする(内蔵HDDの名前が「Macintosh HD」と仮定します)
  2. ディスクユーティリティを終了し、ターミナルを開きます
  3. /Volumes/Macintosh\ HD/usr/sbin/networksetup  -listallhardware とタイプして Enterキーを押します。MacBookAirの場合には
     Hardware Port:  Wi-fi
     Device: en0
     Ethernet Address: *****

     Hardware Port:  Thunderbolt 1
     Device: en1
     Ethernet Address: *****

     Hardware Port:  Thunderbolt Bridge
     Device: bridge0
     Ethernet Address: *****

    の3つが出てきました。
  4. /Volumes/Macintosh\ HD/usr/sbin/networksetup  -listnetworkserviceorder とタイプしてEnterキーを押します。
     (1) Wi-Fi
     (2) Thunderbolt Bridge

    の2つが出てきます。つまりはこれが認識されているハードウェアのうち、有効なデバイスということです。

ということで、内蔵HDDの networksetup コマンドを間借りするということになります。


2. Apple USB Ethernet Adapter を Mac に接続し、LAN接続する


  1. 物理的に USB Ethernet Adapter をMacに接続して、さらにLANケーブル経由でLAN ネットワークに接続します。
  2. /Volumes/Macintosh\ HD/usr/sbin/networksetup  -listallhardware とタイプして Enterキーを押します。MacBookAirの場合には
     Hardware Port:  Apple USB Ethernet Adapter
     Device: en2
     Ethernet Address: *****


     Hardware Port:  Wi-fi
     Device: en0
     Ethernet Address: *****

     Hardware Port:  Thunderbolt 1
     Device: en1
     Ethernet Address: *****

     Hardware Port:  Thunderbolt Bridge
     Device: bridge0
     Ethernet Address: *****

    *以後、Apple USB Ethernet Adapter がMacが認識した devicename(デバイス名)になり、コマンドで使うことになります。これはアダプタによって名称が違います。沢山あってわからない場合には、そのアダプタを抜いた場合と接続した場合の両方で、このハードウェア一覧表示コマンドを使って違いをチェックして確認してください。
  3. /Volumes/Macintosh\ HD/usr/sbin/networksetup  -listnetworkserviceorder とタイプしてEnterキーを押します。
     (1) Wi-Fi
     (2) Thunderbolt Bridge

    のようにハードウェアとしては認識していますが、それが使える状態にありません。

3. Apple USB Ethernet Adapter を認識させる


  1.  /Volumes/Macintosh\ HD/usr/sbin/networksetup  -detectnewhardware とタイプしてEnterキーを押します。  
  2. /Volumes/Macintosh\ HD/usr/sbin/networksetup  -listnetworkserviceorder とタイプしてEnterキーを押します。
     (1) USB Ethernet Adapter
     (2) Wi-Fi
     (3) Thunderbolt Bridge
のように自動認識でうまく認識してくれたらOKです。

4. ネット接続できるか確認する


  1. ifconfig en2 up とタイプして Enterキーを押します。
     *念の為、ifconfig(リカバリーモードで利用できる)で、Apple USB Ethernet Adapter( Device: en2で認識されている )をアクティブにしておきます(アクティブになっていると思いますが)
  2. ifconfig en2 とタイプして Enterキーを押します。
    flags=数字 <UP, BROADCAST, ....> のところに UPが入っていること
    inet6  IPアドレス(IPv6)
    inet IPアドレス(IPv4)
    のいずれか利用しているネットワークで意図したIPアドレスが入っていることを確認する
    <うまくいかない場合>
    • *もしDHCPでのIP自動取得が出来る状況にもかかわらず、出来ないなら /Volumes/Macintosh\ HD/usr/sbin/networksetup -setdhcp "USB Ethernet Adapter"
      としてDHCPによる取得設定を試してみてください。
    • *もし固定IPアドレスの場合には
       /Volumes/Macintosh\ HD/usr/sbin/networksetup -setmanual "USB Ethernet Adapter"  IPアドレス  サブネットマスク IPアドレスで設定します。
  3. ping   www.yahoo.co.jp
    などインターネット越しのサーバーと通信できるか確認する
    nslookup や dig を使いたいなら、
    /Volumes/Macintosh\ HD/usr/bin/nslookup  等にあるので、使って確認してみる

ということで利用できるかどうか分かります。

5. プロキシ設定を確認する、設定する(必要なら)


透過プロキシやプロキシなしで接続できるならプロキシ設定は不要ですが、プロキシ設定をしないと接続できない場合もあるでしょう。
  •  /Volumes/Macintosh\ HD/usr/sbin/networksetup -getwebproxy "USB Ethernet Adapter"
    Enabled: Yes
    Server: *******
    Port: 8080
    Authenticated Proxy Enabled: 0
上記コマンドでもし、プロキシが有効なら上記のように設定が出てくるでしょう。リカバリーモードだと全部OFFがデフォルトじゃないかなと思います。
  •  /Volumes/Macintosh\ HD/usr/sbin/networksetup -setwebproxy "USB Ethernet Adapter"  <domain> <port number> <authenticated> <username> <password>
がマニュアルになりますので、
  • Server: proxy.example.com
  • Port: 8080
  • ユーザー認証なし
だと仮定するから
  •  /Volumes/Macintosh\ HD/usr/sbin/networksetup -setwebproxy "USB Ethernet Adapter"  proxy.example.com  8080
になりますね。
  • /Volumes/Macintosh\ HD/usr/sbin/networksetup -setwebproxystate "USB Ethernet Adapter" on
として設定したプロキシを有効にしておく必要があります。もしセキュアプロキシだと、setsecurewebproxy オプションの方を使うみたいですね。
現時点で下記のようなコマンドの種類があるので、いろいろ見てみると良いと思います。
  • Usage: networksetup -getftpproxy <networkservice>
  • Usage: networksetup -setftpproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
  • Usage: networksetup -setftpproxystate <networkservice> <on off>
  • Usage: networksetup -getwebproxy <networkservice>
  • Usage: networksetup -setwebproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
  • Usage: networksetup -setwebproxystate <networkservice> <on off>
  • Usage: networksetup -getsecurewebproxy <networkservice>
  • Usage: networksetup -setsecurewebproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
  • Usage: networksetup -setsecurewebproxystate <networkservice> <on off>
  • Usage: networksetup -getstreamingproxy <networkservice>
  • Usage: networksetup -setstreamingproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
  • Usage: networksetup -setstreamingproxystate <networkservice> <on off>
  • Usage: networksetup -getgopherproxy <networkservice>
  • Usage: networksetup -setgopherproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
  • Usage: networksetup -setgopherproxystate <networkservice> <on off>
  • Usage: networksetup -getsocksfirewallproxy <networkservice>
  • Usage: networksetup -setsocksfirewallproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
  • Usage: networksetup -setsocksfirewallproxystate <networkservice> <on off>
  • Usage: networksetup -getproxybypassdomains <networkservice>
  • Usage: networksetup -setproxybypassdomains <networkservice> <domain1> [domain2] [...]
  • Usage: networksetup -getproxyautodiscovery <networkservice>
  • Usage: networksetup -setproxyautodiscovery <networkservice> <on off>
  • Usage: networksetup -setautoproxyurl <networkservice> <url>
  • Usage: networksetup -getautoproxyurl <networkservice>
  • Usage: networksetup -setautoproxystate <networkservice> <on off>

2019年7月12日 @kimipooh

2019年6月23日日曜日

Quora Word Meetup 2019 に参加して #quora #meetup #QuoraWorldMeetupWeek2019


   Photo by Quora

2017年11月に Quora の日本上陸というニュースを見て、面白そう!と思って参加してから 1年半。毎日1つぐらいは何か回答しようかなとコツコツ積み重ねていたおかげか、2018年は、
のような機会に恵まれて、とても有意義な年でした。
今年は、Quora World Meetup Week 2019 に日本が初参加し、私も参加してきました。



一定期間に Quora World Meetup 2019 を全世界規模でやろうというイベントですね。
どういった体験したかは、

に掲載しました。
参加した人もそのうちブログで感想を述べたりするでしょうから、そういうのを見つけたら上記ブログに追加していこうと思います!

Quora 中毒に・・・


毎日1つぐらい回答しないと、落ち着かなくなっています。

どうしても多忙な時期は回答できない日もあります。そうするとソワソワしてしまうのですよね、これは中毒症状が出ていますかね。
ただし Quora 以外に、Google プロダクトヘルプコミュニティのいくつかで、同じような活動をしているので、何か役に立ちそうな回答をすることは仕事に間接的に役立つこともありますが、趣味の部分が大きいのだろうなと思います。

さて Meetup については別にブログ記事をかいたので、ここではその時の Meetup以外の体験について備忘録を込めて書き出しておきます。

18時30分から開始なので・・・



土曜日ということもあり、時間的余裕もあったのでギリギリにいくより(京都から東京へ)も少し早めに行って、どこか観光に行こうかなと思っていました。実際にいったのは日暮里駅から谷中銀座商店街を通って根津神社に至る散策でした。とはいっても、それほど時間が有り余っているわけでもないこと、並ぶのがあまり好きでないこともあり、さささっとみたって感じです。

日暮里って「にっぽり」って読むんですね、、、パッとみたとき読めませんでした。。

根津神社って東京大学本郷キャンパスから歩いていける距離だというのを今更ですが発見。東京大学本郷キャンパスって行く機会がそれなりにあったのですが、全く行動範囲内に入っていませんでした、、、もったいない。

参考サイト

ショコラティエ イナムラショウゾウ でチョコレートを堪能!


  • 口コミ(トリップアドバイザー)


昼食を食べずにいきなりチョコレート!!
日暮里駅から谷中銀座に向かう道すがらにセブンイレブンがあり、その角を置くにいったところにあるチョコレート専門店。 休日の午後は混んでいるよ!という情報があったので無理かなーと思っていました。しかし、小雨が降っていた影響か、空いていてチョコレートを堪能することができました。となると、いきなりチョコレートでも行くしないでしょう! 深みのあるまろやか味のカプチーノ、ふわふわした見た目ですが弾力もあって美味しいドームショコラを堪能できました!

夕やけだんだん



夕やけだんだんの口コミ(トリップアドバイザー)

谷中銀座商店街で食べ歩き!



谷中ぎんざ商店街の口コミ(トリップアドバイザー)

小雨が降っていたので、そこまで食べ歩きを堪能できたかといえば微妙ではあります。
ひみつ堂やアイスクリーム屋などは大行列だったのでスルー。
トルコランプの店もよりましたが、とくに買い物はせず。

根津神社


千駄木駅方面から入りました。


谷町銀座から結構な距離がありました。

口コミ(トリップアドバイザー)


鳥居も思ったよりも長く、外国人観光客も結構きてましたね!


せっかくなのでお守りを購入。子どもたちには幸福を、妻には長寿を!


池の小亀、可愛いですね!



ここから根津駅(東京メトロ)に乗りました。観光はこれぐらいですね!
もう少し、時間と気力があれば、谷中霊園などによって猫を堪能したいものです!東京大学から徒歩でいける範囲内のようなので、今度機会があったらいきたいですね!

ホテル


今回宿泊したホテルは、
  • アパホテル銀座宝町(口コミ:トリップアドバイザー)
でした。休日なこともあり、どこも2-3万していた中、1.3万円は銀座という立地を考えるとやすかったです。

帰りにて



朝食は、ドトール京橋中央通り店(口コミ:トリップアドバイザー)で食べ、そのまま東京駅まで歩きました。その道すがら、八重洲ブックセンターに少しよりました。

昼食は、東京駅地下街でラーメン。
とんこつらーめん俺式東京駅店(口コミ:トリップアドバイザー)で食べました。
運良く10周年記念ということで、記念の海苔をもらいました、ちょっと食べるのがもったいなかったですね!





2019年6月23日 @kimipooh

2019年5月31日金曜日

【備忘録】LibreSSL 2.9.2 + Postfix 3.4.5 + nginx 1.17.0 へのアップグレード

Postfix 3.4系は、OpenSSL 1.0.1以下のサポートを打ち切ったため、Redhat Linux ES 6(まだ現役の場合も多いハズ)の標準 OpenSSL 1.0.1にいれると悲劇が・・・というつぶやきがありますね。なら、LibreSSLなら問題ないはずだよね?ってことでやってみました。ついでに nginx もバージョンアップしておきました。

サーバー環境:Redhat Linux ES 6

過去記事


LIBRESSL自体は簡単


./configure
make
sudo make install

openssl version
LibreSSL 2.9.2

です。何も苦労はしません。
上記では /usr/local 以下にインストールされるようになっているので、
/usr/local/lib/libssl.so(シンボリックリンク) の実体が
/usr/local/lib/libssl.so.47.0.5
ならOKということになります。

LibreSSL 2.8.x では
/usr/local/lib/libssl.so.46.0.x 
だったので、2.9.x 系は、libssl.so.47.0.x ってことですね。


動作中の NGINXへの影響はありません


NGINXについては、コンパイル時にその時利用するlibreSSLを組み込むため、影響をうけません。
 --with-openssl=../libressl-2.9.2
など。

nginx -V 
...
built with LibreSSL バージョン
...

のように組み込まれていることがわかります。


動作中の POSTFIXについては影響を受けませんが注意が必要です。


動作中のものはメモリ上に展開されて実行されているため、即座に影響は受けませんが、postfixを再起動したときには少なくても影響を受ける可能性があります。

今回 2.8.x --> 2.9.x へのアップグレードのため影響は受けませんでした。

ldd /usr/sbin/postfix | grep libssl
 libssl.so.46 => /usr/local/lib/libssl.so.46.0.x

のように 2.8.x 系は libssl.so.46 ですが、2.9.xは libssl.so.47 (2.9.2 は libssl.so.47.0.5 が実体)となっているためです。もし 2.9.2 --> 2.9.3 にアップデートした場合には、おなじ libssl.so.47 の実体を参照するので影響をうけるというわけです。

NGINXのアップグレード


先に nginx の方をやってしまいます。
【備忘録】LibreSSL 2.8.1 + Postfix 3.3.1 + nginx 1.15.5 へのアップグレード
を参考にして

 --with-openssl=../libressl-2.9.2

の部分を上記のように libssl-2.9.2 ライブラリを使いように気をつけてください。

objs/nginx -V
...
built with LibreSSL 2.9.2
...

とうまく組み込むことができれば、
/usr/local/nginx で起動するように作っていると仮定すると、

/usr/local/nginx-1.17.0 にインストールされたことになります。

/etc/init.d/nginx stop
cd /usr/local/nginx
rm nginx
ln -s nginx-1.17.0 nginx
/etc/init.d/nginx start

のように前のバージョンに手軽に戻すことができるようにしておきましょう。それが出来るのがソースからコンパイルする利点の一つでもあります。

POSTFIX のアップグレード



を参考にして src/tls/tls.h に対して、OPENSSLのバージョンをごまかす設定を追加します。今回は、1.0.1 以下だと TLSが組み込まれなくなるので注意が必要です。

src/tls/tls.h の設定をしなかった場合


../../lib/libtls.a(tls_certkey.o): In function `use_chain':
/usr/local/src/postfix/postfix-3.4.5/src/tls/tls_certkey.c:159: undefined reference to `SSL_CTX_use_cert_and_key'
/usr/local/src/postfix/postfix-3.4.5/src/tls/tls_certkey.c:162: undefined reference to `SSL_use_cert_and_key'
../../lib/libtls.a(tls_server.o): In function `tls_server_init':
/usr/local/src/postfix/postfix-3.4.5/src/tls/tls_server.c:521: undefined reference to `SSL_CTX_set_num_tickets'
collect2: ld はステータス 1 で終了しました
make: *** [smtpd] エラー 1
make: *** [update] エラー 1

のように make エラーになります。

src/tls/tls.h に設定追加


#include <openssl/ssl.h>
の下に

#undef OPENSSL_VERSION_NUMBER
#define OPENSSL_VERSION_NUMBER  0x1000900fUL

を追加します。今回 OpenSSL 1.0.9 だと名乗ることにしました。
LibreSSLは 1.0.1g をベースにカスタマイズされてきたため、あまりバージョンをあげて OpenSSL独自の機能を使っておかしなことにならないように注意したほうがいいかなと思ったためです。

なお tls.hには

#if (OPENSSL_VERSION_NUMBER < 0x1000200fUL)   
#error "OpenSSL releases prior to 1.0.2 are no longer supported"
#endif
  
 /* Backwards compatibility with OpenSSL < 1.1.0 */
#if OPENSSL_VERSION_NUMBER < 0x10100000L 
 /* Backwards compatibility with OpenSSL < 1.1.1 */
#if OPENSSL_VERSION_NUMBER < 0x1010100fUL  
  * Backwards compatibility with OpenSSL < 1.1.1a.
#if OPENSSL_VERSION_NUMBER < 0x1010101fUL

のように、1.0.2 未満だとエラーになりますし、1.1.0 未満、1.1.1未満、1.1.1a 未満それぞれに対する互換設定もあるので、1.0.9 あたりしておこうかなと思ったわけです。

make makefiles CCARGS="-DUSE_TLS -I/usr/local/include"  AUXLIBS="-L/usr/local/lib -lssl -lcrypto -lz -ldl"
make

などを指定して make するわけですが、
./tls.h:99:1: 警告: "OPENSSL_VERSION" が再定義されました
のように警告はでます。確信犯的にやっているわけなので無視します。

ldd bin/postfix | grep libssl
libssl.so.47 => /usr/local/lib/libssl.so.47
(libssl.so.47 の実体は、 libssl.so.47.0.5)

のように LibreSSL 2.9.2 のライブラリを参照していることを確認した上で、/etc/postfix をバックアップし

make upgrade

をしてアップグレードします。
念の為
/etc/postfix/master.cf 
の末尾をチェックしてください(*)。

それから
/etc/init.d/postfix restart
をして再起動します。

*今回、
fatal: master_spawn: exec /usr/libexec/postfix/smtppostlog: No such file or directory
と出てうまく動かないトラブルが発生しました。

理由は
master.cf の末尾に
postlog   unix-dgram n  -       n       -       1       postlogd
が今回から追加されたわけなのですが、その前の行で改行されていなかったからか
smtp-hogehoge   unix   -   -   n   -   -    smtppostlog   unix-dgram n  -       n       -       1       postlogd
となってしまっていたのでした。

正しくは

smtp-hogehoge   unix   -   -   n   -   -    smtp
postlog   unix-dgram n  -       n       -       1       postlogd

のようにする必要がありました。

なおメールログには
postfix/smtpd[12446]: warning: run-time library vs. compile-time header version mismatch: OpenSSL 2.0.0 may not be compatible with OpenSSL 1.0.0
が定期的にでます。

LibreSSL 2.9.2 だからです。postfix的には 2.9.2 だけをみて 1.0.1 互換ないかもしれないよって親切に教えてくれているわけです。でも確信犯的に LibreSSLを使っているので無視です。早く postfix が LibreSSLに対応してくれないかなぁ。

2019年5月31日 @kimipooh

2019年1月25日金曜日

【備忘録】archive.org のアーカイブサイトを httrack ツールでダウンロードする方法

研究所の一番最初に作成されたウェブサイトってどういうものだったかなと興味本位っで
を過去に何度かみていたのですが、このデータってダウンロードできないのかな、もし上記アーカイブプロジェクトがなくなったときのことに備えてと思うようになりました。単純な方法ではできなかったので備忘録としてやり方を残しておきます。

STEP 1. httrack をインストールしよう


筆者は macOS 10.14 にインストールしたので、Homebrew というツールでインストールしました。このツールが入っているなら「ターミナル」(アプリケーション > ユーティリティフォルダ内)より

brew install httrack

でインストールできるでしょう。
ツールが入っていないなら、インストールしてから実行してみてください。

Windowsであるなら、https://www.httrack.com/ よりインストーラーをダウンロードできます。

STEP 2. クローンしてみよう


  • クローンしたいアーカイブ:https://web.archive.org/web/○○○○/サイトのURL
  • サイトのURL:http://[ドメイン]/
  • サイトのドメイン:[ドメイン]
  • 保存したい場所:ダウンロードフォルダの aaa フォルダ($HOME/Download/aaa)

とします。

1. 「ターミナル」(アプリケーション > ユーティリティフォルダ内)を起動します。

2. 次のコマンドを実行して、($HOME/Download/aaa)フォルダを作成します。
mkdir $HOME/Download/aaa

3. 作成したフォルダに移動します
cd $HOME/Download/aaa

4. クローンスクリプトを作成します。
touch mirror.sh
open -a textedit  mirror.sh
とすると、mirror.sh ファイルが作成され、それを テキストエディットが開いてくれます。
次のコードを入れましょう。
httrack\
    https://web.archive.org/web/○○○○/サイトのURL/\
    '-*'\
    '+*/[ドメイン]/*'\
    -N1005\
    --advanced-progressinfo\
    --can-go-up-and-down\
    --display\
    --keep-alive\
    --mirror\
    --robots=0\
    --user-agent='Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5'\
    --verbose

上記をコピーして、mirror.sh のファイルにペーストし、赤文字の部分を変更しましょう。
そして保存してください。

このコードの大元は、GitHubの
に置いてあるものを参考にしました。

5. クローンスクリプトを実行します。
sh mirror.sh 
これで確認を聞いてくるので、そのまま Enterを押すとクローンが始まるはずです。

注意点


あくまで archive.org プロジェクトにアーカイブされたデータになります。
もし CMSシステムを使っていたとしても静的HTMLに変換されていますし、ディレクトリ構造が変更になっているかもしれません。そのため、ここのデータをバックアップだと思ってそのまま復元しても、その復元した状態では動くかも知れませんが、あとから編集できなかったり、いろいろトラブルが生じる可能性が高いです。
また archive.org でキャッシュするためのスクリプトが埋め込まれてもいます。
そのため、あくまでコンテンツとして取り出したいときにつかうのがよいと思います。
復旧するなら1つずつデータをコピー&ペーストして、復旧したシステムに落とし込む必要があると思ったほうがいいということです。

2019年1月25日 @kimipooh

2018年12月14日金曜日

【備忘録】macOS でスリープから復帰がとても遅いときがある場合の対処

macOS 10.14 になってから顕著になったなぁと思って、ネットで調べた対処方法をまとめて置きます。現状は検証中なので、効果があるかどうかはわかりません。ただ備忘録としてメモしておかないと忘れそうなので先にメモっておく感じです。

原因


SSD内蔵の macOS 搭載マシンについては、節電対策としてスタンバイモードというのが搭載されています。バッテリー駆動時にスリープして一定時間がたつとディープスリープ(休止モード)になるモードのことです。
macOS 10.14 のデフォルトでは、スタンバイモード設定については、次のようになっています。
(ターミナルより pmset -g で確認可能)
  • stanby 1 (スタンバイ有効)
  • standbydelayhigh 86400(1日) - バッテリ駆動時
  • standbydelaylow 10800(3時間)- バッテリ駆動時
ディープスリープ(休止モード)は、デフォルトの「セーフスリープ」設定の場合、バッテリーが少なくなってきたときか、一定時間待機(ここが曲者)したら自動移行します。
ディープスリープは、メモリ内容をSSDに保存して完全に電源OFFにして、次回復帰時にSSDからメモリへデータを復帰させるため、物理メモリ搭載量が多ければ多いほど時間がかかる可能性が高くなります。。
ここで問題なのは、一定時間待機という一定時間が、3時間かもしれないという点です。3時間スリープしたらディープスリープになっちゃうかもねーってのは「ちょっと短すぎない!?」ってことです。急いでいるときに、しばらく無反応でレインボーカーソルがぐるぐる回りだして、ジーと待たないといけないのにイラってきているなら、やる価値はありそうです。なお、バッテリーを頻繁に完全放電するような人には向きません。

さてこれでうまくいくかはしばらく使ってまたコメントいれます。

STEP 1. スタンバイ時間を長くする

  • hibernatemode 3 (セーフスリープ)
  • standbydelayhigh 86400(1日)
  • standbydelaylow 10800(3時間)
だったのを
  • hibernatemode 3 (セーフスリープ)
  • standbydelayhigh 604800(1週間)
  • standbydelaylow 604800(1週間)
にしちゃえというものです。

ターミナルアプリより

sudo pmset -a standbydelay  604800

とすることで設定できます。

ただ、そうすると Bonjour (mDNS)によるスリープからの復帰問題によってバッテリーが意図せず浪費する可能性があります。参考:Macでスリープ時にバッテリーが減る現象を改善する方法まとめ

Bonjour (mDNS)がどれぐらい動いているかは、

log show --style syslog |fgrep "Wake reason"

とタイプして、

Wake reason: RTC (Alarm) が大量に出ているようなら、Bonjour (mDNS) がスリープ時に動いていることになります。

そうした場合には STEP 2. にて止めると良いとのことです。プリンタも最近は Bonjour ではなく、Air Printとか IP(TCP/IP)プリントとか出来るものも多いですしねぇ。

STEP 2. Bonjour (mDNS) を止める



ターミナルアプリより

sudo  defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool YES

を実行して設定した上で、

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

で mDNSResponder を再起動する(あるいは端末を再起動する)。

2018年12月14日 @kimipooh