ブログ検索

メタ情報
RSS

・備忘録です
・ちなみにiMacの仕様上、不完全な結果(SMARTは無視)
・自力で交換すると保証なくなるそうです。
・しかしこのようなことでは連休もクソもないお…

うちのiMacについて

・型式:MC508J/A (2010 Mid)
・症状:HDDの異音や不調、とうとう起動しなくなってきた(?フォルダ)
・地震で散々揺られておかしくなったと個人的には推測。

iMacをバラす

・工具はトルクスドライバのT8とT10があればよさげ。あと吸盤。
・【バラす順番】下部メモリスロットのカバーを外す→前面液晶カバー板を吸盤を使って外す(磁石でくっついているので)→液晶両サイドのネジを外す→裏側の各種ケーブルを外しながら液晶パネルを外す→HDDが見える

Apple純正?HDD

WD5000AAKS

・HDDはWesternDigitalのWD5000AAKS
・SATA、電源、SMART取得用?の3本のケーブルが接続されている。
・SMART用のコネクタはiMac用にカスタマイズされたコネクタのようで、それゆえHDDにもAppleマークが掲載されているのかもしれない。
・このコネクタはHDDメーカーによって形状は異なるし、目的の情報がそのピンに来ているとも限らないかんじ。
・別のPCで使っている他のWD社製HDDについては見た目のピン配置は同じものの、コネクタの切り欠きがなかった(iMac用は切り欠きあり)。

kirikaki

とりあえず交換してみた

・手持ちのHDD在庫は日立製の1TBであり、コネクタ形状が全く合わないので、SMARTはとりあえず無視することにした。
・元のように組み立てて、正常に起動することを確認。

起動ディスクのクローン

・不調HDDはたまに動くので、USBで外付けしてそこからiMacを起動。
・ディスクユーティリティを使って、元HDD(外付け)→新HDD(内蔵)へ復元。
・OS標準のツールで起動ディスクのクローンが作れるのは便利。
・普段からTimeMachineでちゃんとしとけよって話だが…
・このサイトを参考にさせていただきました。
ディスクユーティリティを使ってMac OS Xの起動ドライブを複製する

HDDファンが全力で回ってしまう問題

・SMARTのケーブルは接続せずとも起動や使用はできるものの、HDDからの温度情報がとれないため、HDD用ファンの回転が起動後から徐々に上がり続け、最終的には轟音を立てて全力で回りだす。えらいうるさい。
・ウェブをぐぐると、皆さん様々な方法で対処されてるようですが、私は次の方法を採用。

HDDファンの回転数を強制的に固定する

smcFanControlというアプリを用いてファンの回転数を固定する。
・そのための方法はこちらのサイトで見つかりました。
iMacが故障!!〜そして復活へ〜
・Apple Scriptで設定する方法もコメント欄にありました。

問題点

・結局のところ、HDD温度情報の取得はできていない。
・そこに留意してHDDファン回転数を決める必要がある。
・それが不安な人はやっちゃいけないので素直に修理に出すべき。
・iMacにおいてHDDはHDDであるもののiMacの一部なのでしょう。

・休日の大半をこれに費やしてしまったわけだが…
・忘れないためにメモ。
・分かりづらいので後で清書します…

リポジトリ構築

・サーバ側で操作。
・サーバにsubversionを使える環境を用意する。
・↓このようにsvnadminで手動でリポジトリを作る。
・参考:皆で開発!XcodeでSubversion : レポジトリ作成編
・モックのディレクトリをインポートする段階まで進める。

既存のXcodeプロジェクトをリポジトリに読み込む

・MacのXcodeで操作。
・空のプロジェクトは作らない。
・SCMで利用するリポジトリは登録済みとする。
・trunkフォルダを選択して「読み込む」ボタンを押す。
・適当な場所に配置したプロジェクトフォルダを選択する。
・プロジェクトがリポジトリに読み込まれる。
・後で行う無視ファイル設定のためにリポジトリ上のbuildフォルダを削除。

Mac側にプロジェクトをチェックアウトする

・Macで操作。
・trunkにインポートしたプロジェクトフォルダを選択する。
・「チェックアウト」ボタンを押して、適当な場所を指定。
・完了するとプロジェクトを起動するかダイアログが出るがキャンセル。
※起動とキャンセルはどちらでもいいと思うが、とにかく閉じる。

バージョン管理下に置かない無視ファイル等の設定

・Macで操作。
・ターミナルを起動し、チェックアウトしたプロジェクトフォルダで操作。
・前述のリンク先を参照、「4. バージョン管理下に置かないファイルをレポジトリからはずす」から進めてコミットまでを行う。
・「*.model」の部分は違っている場合があるので自分のに合わせる。

XcodeとSCMが連携するためのプロジェクト設定

・Xcodeで当該プロジェクトを開く。
・「プロジェクト」→「プロジェクト設定を編集」を選択。
・「一般」タブを選択。
・右上の「ルートSCMを構成…」ボタンを押す。
・カラム「リポジトリ」は「(リポジトリ名)- 推奨」を選択。
・IDEの左側「グループとファイル」のさらに左にSCMのカラムが出てくる。
・ファイルの内容を変更して保存し、カラムにMなどと表示されればOK。
・SCMからコミットなどの操作が可能になる。
・以上です。

【番外編その1】

CentOS上にRedmineを構築してリポジトリと連携

・とても素敵な記事が存在したので素直に参考に。
Redmine 1.0をCentOSにインストールする手順
・独自にやろうとしたらRuby関連で詰まった…
・自分はさくらインターネットのVPS(CentOS)上にリポジトリとRedmineを構築し、Redmineのプロジェクト設定において、fileプロトコルを使うことでリポジトリを参照することにした。
・Redmineも秘匿性を向上させるため、クライアント認証のみで接続可能に。
・プロジェクト管理専用のVPSなのでhttpをclose、httpsをopenにした。

【番外編その2】

subversionにsvn+sshで接続する場合の複数ユーザー管理

・リポジトリのユーザー毎に異なる鍵を用意することで解決する。
・sshで接続するLinuxのアカウント自体はひとつ。
・このあたりをご覧ください。
subversionを共有アカウントで使えるようにしてさらにgitした話
・~/.ssh/authorized_keysに、ユーザー毎の公開鍵とコマンドの組み合わせを書いておくことで、複数ユーザーの判別が可能になる。
・これもできたー

XcodeのSCMに秘密鍵(openssh形式)を認識させる

・これは正しいやり方かどうか不明だが、こうしたらできたので…
・ターミナルからsshを使って、目的の秘密鍵を指定して、リポジトリのあるサーバに1回接続を試みる。
・するとダイアログが出てキーチェインに秘密鍵を記録することができる。
・そうしたらSCMのSSHのタブに秘密鍵のリストが出てきた。
・これで鍵交換によるsvn+ssh接続と、複数ユーザーでの利用が可能になる。

微妙にハマったのでメモ。yumだけで完結したい人向け?

【インストール】

・yumでインストール(コレは例なので環境によって違います)
# yum -y install php-pear php-devel gcc

・peclでこれらをインストール
# pecl install pdo
# pecl install pdo_sqlite

・/etc/php.ini に追加
—–
extension = pdo.so
extension = pdo_sqlite.so
—–

・モジュールの読み込みを確認
—–
# php –m
—–
(httpdのリスタートが必要だったかも)

【利用】

・PHPからはPDOで利用します。
・prepared statementみたいなのが使えていいですね。

【謎】

・splite3で直接作ったTABLEをPHPから使用しようとするとエラーが出た。
↓こんなの

SQLSTATE[HY000]: General error: 1 unsupported file format in (DBファイル名)

→ PHP上からDBとTABLEを作成をすることでエラーは出なくなった。

DNSキャッシュポイズニング対策によるアップデート

なにせBINDはRPMでしか入れたことがなかったのでメモです。攻撃ツールが出回ってるとあっては暢気なことも言っていられません。私の場合はウェブをいじっててサーバを触るようになったので、バリバリのウィザードではないのが悲しいところ。したがって、間違いや勘違いもあると思います。

■導入ソフト BIND 9.4.2-P1

既存のBINDのRPMを消して新たにマニュアルで導入
OSはRedHat系

■設定ファイルバックアップ
/var/named以下
/etc/named.conf
/etc/init.d/named (起動スクリプトをお手軽に流用するため)

■コンパイルとインストール
ソースコードダウンロード
展開
./configure –prefix=/usr/local/bind9 –disable-ipv6
(prefixは趣味)
make
make install

コンパイルはすんなり通った。

■設定ファイル
ついでにchroot化も行うべく(なってなかった!)ので基本的にこちらを参照
 @IT Linux Square – 第9回 BIND 9のセキュリティ対策
/var/namedをjailとして設定(ほぼ記事そのまま)
この過程でnamed.confやゾーン設定などをコピーします。

■起動テスト
既存のnamedが動作してる場合はまず止める。
テスト(うちの場合のオプション)
/usr/local/bind9/sbin/named -u named -t /var/named -c /etc/named.conf

■RPM削除
対象パッケージ
・bind
・bind-utils
・bind-libs

■■■移行にともなう問題■■■

ギリギリまでDNSを止めたくなかったので、既存RPMと干渉しないように導入を進め、起動テストをクリア後にRPMを削除した。すると、あるのが当然と思っていた設定やファイルも消えてしまうもので復旧。同じRedHat系でもディストリビューションごとに微妙に違いがある。

ちなみに RedHat9、FedoraCore2、EL3 でやりました。

■named実行ユーザとグループを復旧
/etc/passwd に named:x:25:25:Named:/var/named:/sbin/nologin
/etc/group に named:x:25:

■起動スクリプト
バックアップしておいた named 起動スクリプト
/etc/init.d/named にコピーし、パスやオプション等を書き換える
パスの関係で通りにくそうだった設定ファイル文法チェック部分(EL3版にはあった)はとりあえずコメントアウト。あとで対応。

■起動スクリプトが参照しているシステムファイルを復旧
/etc/sysconfig/named を作成
うちの場合の内容は「ROOTDIR=”/var/named”」の1行のみ

■サービスの登録
/sbin/chkconfig –add named #登録(FedoraCore2は残ってた?)
/sbin/chkconfig named on
/sbin/chkconfig –list named #登録状況確認

■パスを通す
dig を使いたかったので /usr/local/bind9/bin に通した。

以上です。