文書の過去の版を表示しています。
目次
システム設定
Last Update: 2014/02/14
ここでは、OS-Xに関するシステム設定方法のメモを主に扱う。
Swap suspend/Resume 関連
OS-Xでは、swapはswapfileで管理しているのだが、長期間使っていると結構毒がたまってくる。これが動作がもっさりする理由になったりするので、時々はcleaningした方がよい。
参考URL: [MacBook] swapをやめる。swapファイルの置き場所を変える。
要するに、以下の手順で作業すればよい
- swapを停止
- terminal.appから以下を実行
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
- 再起動
/private/Var/vm/
下にあるswapfile*を削除- terminal.appから以下を実行
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
- swapを開始
- 再起動
これでOK
ちなみに、swapを停止するとスリープから復帰するときに画面がおかしくなったり、フリーズしたりするというリポートがあるので、注意。
Kernel Parameter Tuning
MacOS-XはFreeBSD由来のシステムなので、kernelのパラメータは簡単に調整できる。
Leopardまでは、/etc/sysctl.confが存在する場合、それを参照して起動時に設定できたが、SnowLeopardではlaunchdで対応するしか無いと思われる。
というわけで、Launchdでの設定方法。
- mkdir /Library/StartupItems/Sysctl
- 以下の内容を /Library/StartupItems/Sysctl/StartupParameters.plist に貼り付ける
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <plist version="0.9"> <dict> <key>Description</key> <string>Sysctl</string> <key>Messages</key> <dict> <key>start</key> <string>Starting Sysctl</string> <key>stop</key> <string>Stopping Sysctl</string> </dict> <key>OrderPreference</key> <string>None</string> <key>Provides</key> <array> <string>Sysctl</string> </array> <key>Requires</key> <array> <string>Network</string> </array> </dict> </plist>
- 以下の内容を /Library/StartupItems/Sysctl/Sysctl に貼り付ける
#!/bin/sh case "$1" in start) echo "Starting Sysctl" # limits ulimit -HSd unlimited ulimit -HSs unlimited ulimit -HSu unlimited ulimit -HSn unlimited # FreeBSD style sysctl.conf if [ -f /usr/local/etc/sysctl.conf ]; then while read var comments do case ${var} in \#*|'') ;; *) /usr/sbin/sysctl -w ${var} ;; esac done < /usr/local/etc/sysctl.conf fi ;; stop) echo "Shutting down Sysctl" ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac
- chmod 755 /Library/StartupItems/Sysctl/Sysctl を実行
- /usr/local/etc/sysctl.confを作成
- 内容はFreeBSDの物と同じで良い。今回は、以下で作成
##### # Sysctl parameter setting. ##### # Kernel kern.maxproc=2048 kern.maxprocperuid=512 kern.maxfiles=16384 kern.maxfilesperproc=14745 kern.maxvnodes=66560 # Network kern.ipc.somaxconn=4096 kern.ipc.maxsockbuf=1048576 net.inet.tcp.delayed_ack=0 net.inet.tcp.rfc1323=1 net.inet.tcp.sendspace=131072 net.inet.tcp.recvspace=358400 net.inet.udp.recvspace=73728 net.inet.udp.maxdgram=57344 net.inet.raw.recvspace=32768 net.local.stream.sendspace=65535 net.local.stream.recvspace=65535 # net.inet.icmp.bmcastecho=0 # net.inet.icmp.icmplim=600 # net.inet.tcp.delayed_ack=0
ホスト名を固定に
Terminalとかを使っていて、ホスト名が色々変わってしまうのに気づいた人、これうっとうしいですよね。
これは、DHCP等でアドレスを割り当てられたときに、お節介にも逆引きからホスト名を設定されてしまうせいで発生します。
というわけで、ホスト名を固定するには、/etc/hostconfigに以下の行を追加します。
HOSTNAME=foo.example.org
Snow LeopardとemonsterでBT DUNを
どうやらLeopardと同じ方法でBT DUNできる模様。
参照URL
- EmonsterにEMONSTERまとめWIKI(FAQ)のBT-DUN接続はどのようにしたら良いですか?を参考にWM6_BT_DUN.cabをemonsterにインストール
- ここからこれ(Zipファイル)をダウンロード
- emonster.ccl.zipをunzipすると、emonster.cclができるので、/Library/Modem Scripts/にコピー
- ネットワーク設定追加
- システム環境設定→ネットワークを開く
- Bluetooh DUNを追加
- Bluetoothデバイスを設定をクリック(ここでペアリング設定もできるので、ここまでペアリングしないこと)
- Bluetoothデバイスの検索を始めるので、Emonsterを選択
- Bluetooth携帯電話設定画面になるので以下を選択
- 電話機の製造元→その他
- 電話機の機種 →EMONSTER.ccl
- ユーザー名 →em
- パスワード →em
- 電話番号 →*99#
- これで設定終了。
Snow Leopardではずいぶん簡単になった。
MacOS-XでIP Addressにaliasを
opengear CM4008を設定する際に、Ethernet I/FにIP addressを複数付けたかったので、設定した。
$ sudo ifconfig en0 192.168.0.2/24 alias
要するに、普通のBSDと思えば良い。
ただし、arpがしばらく残るので、対象機器を変更する場合には、明示的にarpを消してあげなければならない。
$ sudo arp -d 192.168.0.1
これで、取りあえず、大丈夫かな。
環境変数を設定する
MacOS-Xで生活する場合、全般的に参照される環境変数を設定したくなる。しかし、shell環境でもない限り、設定方法が良くわからない。
というわけで、調べてみた。
結果、「いや、これ、どうなのよ?」という気分
以下 Mountain Lion
Mountain Lionだと個人環境で設定する方法は今のところ不明。
System wideに設定するには、/etc/path.d
下に例えば10-PKGとかいうファイルを作って
/usr/pkg/sbin /usr/pkg/bin
等と書けばいい模様。しかし、これはあまりにも気持ち悪い…
この他に、/etc/launchd.conf
に環境変数を設定する方法もある模様。
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/pkg/sbin:/usr/pkg/bin
という方法もあるらしい。これは設定すると再起動が必要。 しかし、これもあまりにもあまりだよなぁ。
Lion
調べてません。Snow Leopardまでの方法か、Mountain Lionの方法が使えるはず。
以下 Snow Leopardまで
個人環境の環境変数は、~/.MacOSX/environment.plist
に書けばいいらしい。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>DISPLAY</key> <string>localhost:0.0</string> <key>XAPPLRESDIR</key> <string>/usr/pkg/lib/X11/app-defaults</string> </dict> </plist>
システム起動時にdmgファイルをマウントする
起動時(もしくはlogin時)に、自作のDisk Imageファイルをマウントしてしまいたい場合がある。例えばpkgsrcとかの場合。これを、実現する方法を記載しておく。
Snow Leopard/Lion/Mountain Lionでも動作した
MacOS-Xでは、/System/Library/StartupItemsや/Library/StartupItemsにある設定を起動時に実行するので、 これを使って自動マウントを実現する。
System/Library/StartupItemsはシステム側で提供しているもので、/Library/StartupItemsはそれぞれの環境毎に設定されるものである。いわゆるサードパーティー製アプリケーションなどは後者を利用していル場合が多い。
前者はいつ書き換えられるか判らない(まぁ、ソフトウェアアップデートのタイミングが一番ありそうですが)ので、後者を利用すべき。
ここでは、「NetBSDのpkgsrcを利用する」で記載したDisk Imageを起動時にマウントする方法を記載する。
マウントしたいDisk Imageファイルが/Users/foo/BSD.dmgであるとする。
まず、StartupItemsにディレクトリを作成する。このディレクトリはシンボリックリンクでは動作しないので、実際にファイルやディレクトリを作成すること
$ sudo mkdir /Library/StartupItems/PKG
このディレクトリ内に、PKG(ディレクトリ名と同じ名前で作成)及びStartupParameters.plistというふたつのファイルを準備する。 これらのファイルはOwner:Groupがroot:wheelである必要があるので注意。
まず、PKGファイルの内容。
#!/bin/sh exec > /tmp/PKG.log 2>&1 ## # Mount HFSX Filesystem for PKG ## . /etc/rc.common PKG_DISKIMAGE="/Users/foo/PKG.dmg" PKG_MOUNTPOINT="/Volumes/pkg" StartService () { local device if [ ! -f "${PKG_DISKIMAGE}" ]; then ConsoleMessage "No diskimage ${PKG_DISKIMAGE}" return 0; fi ConsoleMessage "Mounting HFSX Filesystem for PKG" hdiutil attach ${PKG_DISKIMAGE} \ -mountpoint ${PKG_MOUNTPOINT} \ -owners on -nobrowse # -notremovable -kernel sleep 1 if [ -d ${PKG_MOUNTPOINT}/pkg/etc/rc.d ]; then for rc in ${PKG_MOUNTPOINT}/pkg/etc/rc.d*; do ConsoleMessage "Starting ${rc##*/}"; sh ${rc} start; done; fi } StopService () { return 0; } RestartService () { return 0; } RunService "$1"
このファイルは実行可能でなければならないので、
sudo chmod 755 /Library/StartupItems/PKGSRC/PKGSRC
を実行する。
次にStartupParameters.plistの内容。
{ Description = "Mount Filesystem for PKG"; Provides = ("PKG"); Requires = ("Disks"); }
これで再起動すると自動的にマウントするようになる。