自作PCの構築手順
自作PCの構築手順をまとめておく。パーツの初期不良(=購入時点での不良品、DOA、Dead On Arrival)が無いかを確かめるために、1つ1つ手順を確認しながら組み立てて行く必要があり、無計画にパーツを買い集めると後で後悔することになる。
- 筐体と電源ユニットを買っておく
筐体は納期が長い物もあり、ショップで衝動買いするのでなければ、気に入った筐体を予め通販でオーダーして取り寄せておく。電源ユニットも初期不良が少ないパーツなので先に取り寄せておく。これらのパーツが遅れて、通電するのが遅れて、初期不良保証期間が過ぎちゃった、ということがないように。
- メモリテスト用の起動CDやUSBを作成しておく。
電源を入れてBIOS動作の確認後、最初に行うのはメモリテストになるので別のPCを使って予めメディアを用意しておく。Linuxの場合は、LiveCDやインストールCDで立ち上げるとメモリテストを実行できるし、UbuntuなどではLiveCDで作成した起動用USBからもメモリテストを走らせることができる。私はネットワーク・ブートを使ってネットワーク経由でメモリテストを起動するので、これは省略している。
- MoBo、CPU、メモリ、CPUクーラーを買う。
これらのパーツは一気に買う。出来ればショップで相談して部品の干渉とか無いか、組合せに矛盾がないかを確認しておく。これらの部品は何かあった時のために同じショップで買い揃えておいた方がいい。場合によっては持ち込んで状況確認してもらうこともあり得る。またメモリの相性保証を付けておく方がいい。確かにMoBoとの相性もあるのだが、メモリの初期不良のためでもある。以前、メモリの初期不良に出くわし、メモリテストの結果を証拠として写真に撮ってショップに持っていったが、確認のために半日位テストしなければならず、ショップでのテストが通ってしまうと交換にはお応じられないと言われた。でも幸い、相性保証を付けていたので相性問題ということでスンナリ交換してもらった。(ただ、元のメモリは不良品ではなく、商品としてまた棚に戻されるのを見ているので、以降、そのショップではパーツは買わないことにしている。)
- MoBoにCPU、CPUクーラー、メモリを取り付ける。
PCとして動作する最低限のパーツ、CPU、CPUクーラー、メモリを取り付けて、パーツ相互に干渉がないか確認する。今回、CPUクーラーが大きくて、CPUクーラーを取り付けた後だと、メモリを取り付けることが出来なかった。仕方ないので、一旦、CPUクーラーを取り外してからメモリを取り付け、再度CPUクーラーを取り付けている。取り付け後の干渉はない。
- 電源を接続して通電する。
筐体に入れる前に、新聞紙の上などにMoBoを置いて通電してみる。勿論、キーボードやディスプレも接続しておく。まず、BIOSが起動するか、BIOSの設定(CPUやメモリの認識)は正しいかを確認する。上手く起動せず原因が分からない場合は、これらのパーツを取り付けた状態でショップに持ち込み見てもらうという手もある。
また、BIOSのバージョンも確認しておこう。MoBoが新製品の場合、BIOSのバージョンは頻繁にアップするので、出来る限り最新のものにしておく。最近のBIOSはWebからUSBメモリにダウンロードして、それをMoBoに挿して起動するするとアップデートできるようになっているので簡単だ。
- 筐体にMoBo、電源を取り付け配線する。
MoBoと電源ユニットを筐体に取り付け、干渉が無いかを確認する。もっとも、この段階で干渉が見つかってもパーツを変更するしかないが。電源スイッチなどを配線し、電源ケーブルの取り回しなどを確認する。なお、これは仮取り付けということで、ネジなどは軽く締め付ける程度にしておく。DVDやBLドライブを接続する場合は、これらも取り付けてみて、干渉を確認しておく。組合せによってはMoBoとドライブが当たるということもあり、ビニールテープなどで保護する必要もある。
- 電源を入れて、メモリテストを実行する。
MoBoが裸の状態で長時間通電するのは危険なので、筐体に入れてからメモリテストを実施する。私はMemtest86+を使っている。プログラムを起動して、メモリの認識や設定に間違いないかを確認して、1日程度テストプログラムを走らせておく(今回は16GBのメモリで1回約3時間かかる)。以前のメモリの初期不良ではこの段階で、特定のアドレスが書き込みエラーとなっていた(書き込んだデータと読み出したデータが合わないビットがあった)。このテストをやらずに行き成りOSを動かしても、不具合の原因の特定が困難だったり、保障期間が過ぎてから分かったりすることになってしまうので、じっくりとテストしておきたい。
今回の場合はこんな感じ。
Memtest86+ v4.20 Intel Core Gen2 2500 MHz L1 Cache: 32K 83335 MB/s L2 Cache: 256K 37879 MB/s L3 Cache: 8192K 28409 MB/s Memory : 16G 17482 MB/s IMC: Intel(R) Core(TM) i7-3770T CPU @ 2.50GHz / BCLK : 100 MHz Settings: RAM : 800 MHz (DDR3-1600) / CAS : 11-11-11-28 / Dual Channel WallTime Cached RsvdMem MemMap Cache ECC Test Pass Errors ECC Errs --------- ------ ------- -------- ----- --- ---- ---- ------ -------- 15:00:00 16G 2780K e820 on off std 5 0 ------------------------------------------------------------------------------
- HDDを買って来てテストする。
メモリのテストが終わってからHDDを買ってきて取り付ける。私の場合は、Linux(具体的にはUbuntu)をLiveCDなどで起動してHDDのテストを行う。Live CDに不慣れな場合やWindows環境しかない場合は、一時的にHDDを他の稼働中のPCに接続して試験するのが簡単だろう。なお、UbuntuのLive CDを使う場合は起動後、smartユーティリティをインストールしておく。
$ sudo -s # apt-get install smartmontools
OSをインストールする前にHDDを徹底的にテストしておく。最初にやらなければならないは、S.M.A.R.Tの情報の読み出しとSMARTのロング・セルフテストである。まず、SMARTの最初の情報を取得しておく。
# smartctl -a /dev/sda > smart.log # cat smart.log smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-26-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === START OF INFORMATION SECTION === Device Model: ST3000DM001-9YN166 Serial Number: W1FXXXXX LU WWN Device Id: 5 abcdef 012345678 Firmware Version: CC4B User Capacity: 3,000,592,982,016 bytes [3.00 TB] Sector Sizes: 512 bytes logical, 4096 bytes physical Device is: Not in smartctl database [for details use: -P showall] ATA Version is: 8 ATA Standard is: ATA-8-ACS revision 4 Local Time is: Thu Jul 21 08:53:33 2012 JST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED :省略 SMART Attributes Data Structure revision number: 10 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 100 100 006 Pre-fail Always - 15776 3 Spin_Up_Time 0x0003 094 094 000 Pre-fail Always - 0 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 6 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 100 253 030 Pre-fail Always - 36 9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 0 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 6 183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0 184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0 188 Command_Timeout 0x0032 100 253 000 Old_age Always - 0 189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0022 067 067 045 Old_age Always - 33 (Min/Max 31/33) 191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0 192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 5 193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 6 194 Temperature_Celsius 0x0022 033 040 000 Old_age Always - 33 (0 27 0 0) 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 253 000 Old_age Always - 0 240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 47098611367936 241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 0 242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 1616 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 No self-tests have been logged. [To run self-tests, use: smartctl -t] SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay.
この状態で既にErrorが発生していたり、異常な値があれば、交換してもらう。なお、上の例では“Head_Flying_Hours”が非常に大きな値になっているが、これは“生値”でSeagateの場合には実際のヘッドの稼働時間以外の情報も上位バイトに含まれており、“2AD6 0000 0000”を10進数で表しているので、下位バイトはゼロであり、実際に稼働時間はまだゼロ時間ということで正常値だ。このように“生値”はメーカーによって値が違うので、この値が大きいからと言って騒ぐと恥ずかしいことになってしまう。最悪値(WORST)が閾値(THRESH)以下になっていなければ一応はOK。
ここで、ファームのバージョンも確認しておく。今回買ったSeagateのHDDはメーカーのホームページに最新ファームが載っている。もし、購入したHDDが最新ファームでなければ、直ぐに最新ファームに変更する。上の例は“CC4B”で最新ファームは“CC4H”だったので、このあと直ぐにファームを書き換えた。(しかし、IBM/日立や東芝といったHDDを使って来た私としてはユーザによるHDDのファームアップなんて信じられない話だが。)SeagateのST3000DM001は海外ではトラブルが多いようなので、速攻で最新ファームに上げておいた。
SMARTの初期値を確認したら次にSMARTのロング・セルフテストを実施する。
# smartctl -t long /dev/sda
3TBのHDDで約5時間かかる。気長に待とう。(セルフテスト中にHDDを使うこともできるがセルフテストを少しでも早く終わらせるためには、無負荷の状態で実行する方がいい。)なお、セルフテストは終わっても何もメッセージを出してくれないので、適当な間隔で“smartctl -a”で進行状況と結果を確認する。
# smartctl -a /dev/sda smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-26-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === START OF INFORMATION SECTION === Device Model: ST3000DM001-9YN166 Serial Number: W1FXXXXX LU WWN Device Id: 5 abcdef 012345678 Firmware Version: CC4H :省略 Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. :省略 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed without error 00% 5 - :省略
もし、ここでエラーが記録されたら直ぐに交換してもらおう。
SMARTのセルフテストがパスしたら、次に念のためOSからHDDの全セクタの読み出しと書き込みを実行する。
# dd if=/dev/sda of=/dev/null bs=1G && dd if=/dev/zero of=/dev/sda bs=1G
HDDにもよるが読み出しと書き込みを合わせて10時間程度掛かるので、セルフテストも含めると1日作業となる。
なお、この試験を実行する前にHDDの内容を見てみたが、SeagateのST3000DM001では最初の10GBは“ゼロ”で埋まっていたが、それ以降はランダムぽいデータが入っていた。最初は“中古品”を売りつけられたのか、と思ったがSMARTの情報を見る限りはその形跡はない。どうも、出荷検査を最初の10GBしかやっていないのではないか、と思われる。日立のHDDは新品でも頭の天辺から足のつま先まで綺麗に“ゼロ”になっているのだが....。やはり、その辺が品質にも表れるのだろう。
余談だが、HDDはメカニカルな構造を持っているので初期テストはしっかりやっておいた方が良いが、SSDは別だ。電子回路だけで構成されるSSDは精々SMARTの確認程度で良いだろう。逆に全セクタの書き込みテストなどは厳禁だ。
- OSをインストールする。
ここまでメモリ、HDDをテストしておけば初期不良でトラブルになる可能性は極めて少なくなるので、配線を再確認しつつ、ネジを増し締めしてハードウェアとしては完成となる。あとはいつもの通りOSのインストールとなる。