Cドライブの交換(作業メモ)

■要約:「KURO-DACHI/CLONE/U3」とAOMEI Partition Assistant でCドライブの交換を楽にすませた.1000円ぐらいのSSD用外付けケースもあると便利.

ずっと使っているパソコンのCドライブが300GBで手狭になってきたので交換することにした.
交換先として2TBのSSD(SanDisk Ultra | 3D SSD)を買った.SSDと一緒に玄人志向「KURO-DACHI/CLONE/U3」(以下では「KURO」と略す)というのを買った.

この「KURO」には3.5inchのHDD二台を同時に差し込むことができる.電源だけ入れて(USBでパソコンにつないでいない状態)「clone」というスイッチを押すだけで簡単にHDD1からHDD2にまるごとコピーできるというのが売りらしい.以前DドライブをバックアップしたときにはUbuntuを使って面倒な作業をしたけれど,これなら疲れていて集中力が落ちていても失敗しないだろうと考えた.

■「この手順でやればよかったな」というコピーの流れ:
1.自分のCドライブがMBRなのかGPTなのか確認する.(「mbr gpt 確認」でググってほしい).忘れないようにメモしておく.少し古いPCだと大抵MBRだと思う.
2.新品のSSDを外付け用ケースに入れてPCに接続し,自分のPCに合わせて MBR, NTFSで初期化する.
3.古い300GBのSSDを「KURO」の「HDD1」に,新しく買った2TBのSSDを「HDD2」に挿入し,「KURO」の電源を入れる.そして小さな「clone」というボタンを押す.正面四つのランプが左右に行き来する感じにオレンジ色に点滅する.
4.コピーが完了(四つのランプが同時に点滅を繰り返す状態)したら「KURO」の電源を切って2TBのSSDをPCにつなぎ,起動する.

■実際に試行錯誤しながらやったコピー作業:
1.メインPCの電源を切り,電源を抜く.
2.PCの筐体を開け,CドライブSSDを取り出す.(ドライバが必要になる作業)
3.古い300GBのSSDを「KURO」の「HDD1」に,新しく買った2TBのSSDを「HDD2」に挿入し,「KURO」の電源を入れる.そして小さな「clone」というボタンを押す.

これでコピーが始まるはずだったのだが,データの転送を示すLEDの点滅が始まらない.

なんらかの方法でSSDを初期化しないといけなかったらしい.(他の人が書いた体験記などを読むとどうも初期化なんかいらないというようなことも書いてある.こちらの条件と何が違うのかよくわからない.なにか私が読み落としたのかもしれない).それはともかく,私がやったのは:

4.2TBのSSDを「KURO」から取り出し,簡単な(1000円ぐらいの)ケースに入れてノートPC(メインじゃない方)に接続した.そして「Windowsマークを右クリック –> ディスクの管理」を開いてSSDをMBR,NTFSで初期化した.(これは自分の古いPCに合わせた.自分のCドライブがMBRなのかGPTなのかは前もって確認しておく必要がある).

5.2TBのSSDを再び「KURO」に戻し,「copy」ボタンを押した.するとコピーが始まった.数十分でコピーは完了する.(正面四つのランプが同期してオレンジ色に点滅し続けるのが完了の合図).
6.「KURO」の電源を切り,2TB SSD をメインPCに刺し,全てのケーブルを元通りにつなぐ.
7.メインPCの電源をつなぎ,起動テストする.

何事もなく「Resume From Hibernation」と表示されたのを見て「この子自分の脳が交換されたのに気づいてないんだろうな」と思ってちょっと面白かった.

■コピー後の作業:
さて,「KURO」の「丸ごとコピー」では全てがそのままコピーされるので,新しいCドライブも300GBまでしか認識されていない.「Windowsマークを右クリック –> ディスクの管理」を通じてその様子が確認できる.

System Reserved | Windows (C:) | 回復パーティション | 未割当て(1.5TB)

のようになっており,ここの未割当の1.5TBを割り当てても,間の「回復パーティション」で隔てられていてCドライブを大きくすることができない.「回復パーティション 移動」で検索し,AOMEI Partition Assistant の無料バージョンでパーティションの移動を行った.GUIですっとパーティションを動かして「確定」するだけで作業が完了するので衝撃を受けた.

広告

32ビット?64ビット?(自分用メモ)

■gccが32ビットか64ビットか:
gcc -v の出力の Target: のところを見る.

32ビットの場合 Target: mingw32
64ビットの場合 Target: x86_64-pc-msys

などのようになる.システムの細かな差異によって文字列は少しずつ違うが,64ビットの場合 x86_64 が部分文字列としてしばしば含まれる.

■ghcが32ビットか64ビットか:
次のようなファイルを作る:

main = print ()

そして

$ ghc --make foo.hs
[1 of 1] Compiling Main             ( foo.hs, foo.o )
Linking foo.exe ...

$ file foo.exe

32ビットの場合には
PE32 executable (console) Intel 80386, for MS Windows

64ビットの場合には 
PE32+ executable (console) x86-64, for MS Windows

のようになる.

■おまけ:
自分がどの gcc を使ってるのかわからなくなった場合などは
which -a gcc
すればよい.使い分けをしたい場合は適宜 .bashrc に alias を張ればよさそう.

export PYTHONIOENCODING=UTF-8

pythonでユニコードを扱いたいときは .bashrc にこう書いておくといいみたい.とりあえず,これで sys.stdout.write にまつわる UnicodeEncodeError が解消してくれた.

Windowsからevinceを使う

■evinceとは
ubuntuなどをつかってるときのデフォルトのPDFビューワです.

■evinceをWindowsで使うメリット
アドビのPDFビューワと異なり,ファイルをロックしません.TeXWorksのような統合環境ではなくコマンドラインからlatexをコンパイルしているときに便利です.

■インストール方法
$ pacman -Ss evince
とやれば幾つか候補がでてくるはずです.

■使い方
$ evince hoge.pdf&
としてやり,hoge.texを色々編集してコンパイル.いちいちhoge.pdfを閉じる必要はありません.

D ドライブをバックアップする(自分用メモ)

WindowsマシンのD ドライブ(1TB HDD)がそろそろ古くなってきたので、1TB SSDに換装しました。あまりやらないことなので、自分用に手順を記録しておくことにします。記事自体は長く見えますが、作業ログを垂れ流してるだけなので実質的な内容は少ないです。(昔作った手順書をよくわからずになぞってるので、意味不明なことをしているかもしれません。)

※なお、Cドライブ(起動ドライブ)をバックアップするときの手順とは細かいところが違うのでこの記事は参考になりません。

準備:
1. 裸族のお立ち台(でもなんでもいいですが手軽なやつが望ましい)に新しいSSDをセットする
2. ubuntu usb をPCに刺して起動する(usbから起動するとHDDにインストールするかい?みたいな事を聞かれますが「試すだけ」みたいなのを選択しましょう)。usb からの起動をするときに、F11だったりF8だったり、なんかのキーを押すことになるかもしれません。
3. terminal を立ち上げます。以降、terminal での作業になります。

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 300.1 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders, total 586072368 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: 0xfb95cd73

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848   586070015   292931584    7  HPFS/NTFS/exFAT

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xfb95cd6c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048  1953521663   976759808    f  W95 Ext'd (LBA)
/dev/sdb5            4096  1953521663   976758784    7  HPFS/NTFS/exFAT

Disk /dev/sdc: 1024.2 GB, 1024209543168 bytes
255 heads, 63 sectors/track, 124519 cylinders, total 2000409264 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

Disk /dev/sdc doesn't contain a valid partition table

■解説■
fdisk はディスク管理のコマンドです。ここでは Disk /dev/sda, Disk /dev/sdb, Disk /dev/sdc の3つのディスクについてそれぞれの詳細が表示されていることだけ理解できれば良いです。sda や sdb という名前は ubuntu がつけた名前で、Windowsのドライブレターとは対応していません。よって、上の情報から対応を読み取らねばなりません。

1.sda の箇所を見ると
Device Boot (略)
/dev/sda1 * (略)
となっていますが、Boot の下に*があることから sda はCドライブであることがわかります。
2.sdc の Disk identifier が 0x00000000 であることから、ブランクメディアであることがわかります。
3.よって残る sdb が D ドライブとなります。

ubuntu@ubuntu:~$ sudo dd if=/dev/sdb of=/dev/sdc bs=1 count=512
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.00141734 s, 361 kB/s

■解説■
MBRをコピーしました。今回はDドライブをそのまま複製したいので、パーティション情報もそのまま受け継ぐわけです。このあと、fdisk で /dev/sdc を編集していきます。

ubuntu@ubuntu:~$ sudo fdisk /dev/sdc
Warning: ignoring extra data in partition table 5
Warning: ignoring extra data in partition table 5
Warning: ignoring extra data in partition table 5
Warning: invalid flag 0xfffe of partition table 5 will be corrected by w(rite)

■解説■
以降、しばらく fdisk の対話モードに入ります

Command (m for help): p #パーティションの情報を表示する

Disk /dev/sdc: 1024.2 GB, 1024209543168 bytes
255 heads, 63 sectors/track, 124519 cylinders, total 2000409264 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: 0xfb95cd6c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048  1953521663   976759808    f  W95 Ext'd (LBA)
/dev/sdc5   ?  3385380806  6838131599  1726375397   c2  Unknown

Command (m for help): d #現在のパーティションを削除する
Partition number (1-5): 1

Command (m for help): p #パーティションの情報を表示する

Disk /dev/sdc: 1024.2 GB, 1024209543168 bytes
255 heads, 63 sectors/track, 124519 cylinders, total 2000409264 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: 0xfb95cd6c

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n #新しいパーティションを作成する
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): e #Dドライブなので拡張領域を選択する
Partition number (1-4, default 1): 1
First sector (2048-2000409263, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2000409263, default 2000409263): 
Using default value 2000409263

Command (m for help): p  #パーティションの情報を表示する

Disk /dev/sdc: 1024.2 GB, 1024209543168 bytes
255 heads, 63 sectors/track, 124519 cylinders, total 2000409264 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: 0xfb95cd6c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048  2000409263  1000203608    5  Extended

Command (m for help): n #新しいパーティションを作成する
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): l #論理パーティションを作成する
Adding logical partition 5
First sector (4096-2000409263, default 4096): 
Using default value 4096
Last sector, +sectors or +size{K,M,G} (4096-2000409263, default 2000409263): 
Using default value 2000409263

Command (m for help): p #パーティションの情報を表示する

Disk /dev/sdc: 1024.2 GB, 1024209543168 bytes
255 heads, 63 sectors/track, 124519 cylinders, total 2000409264 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: 0xfb95cd6c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048  2000409263  1000203608    5  Extended
/dev/sdc5            4096  2000409263  1000202584   83  Linux

Command (m for help): t #パーティションのタイプを変更する(sdc5 が Linux になってるのでNTFSに修正したい)
Partition number (1-5): 5  #sdc5 を変更したいので「5」を選択する
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      
Hex code (type L to list codes): 7 #NTFSに対応する hex コードを上の一覧から判断して選択する
Changed system type of partition 5 to 7 (HPFS/NTFS/exFAT)

Command (m for help): p #パーティションの情報を表示する

Disk /dev/sdc: 1024.2 GB, 1024209543168 bytes
255 heads, 63 sectors/track, 124519 cylinders, total 2000409264 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: 0xfb95cd6c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048  2000409263  1000203608    5  Extended
/dev/sdc5            4096  2000409263  1000202584    7  HPFS/NTFS/exFAT

Command (m for help): w #変更を保存して fdisk の対話モードを終了する
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

■解説■
以上で、/dev/sdc にDドライブの内容をコピーする準備が整ったはずです。一応確認してみます。

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 300.1 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders, total 586072368 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: 0xfb95cd73

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848   586070015   292931584    7  HPFS/NTFS/exFAT

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xfb95cd6c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048  1953521663   976759808    f  W95 Ext'd (LBA)
/dev/sdb5            4096  1953521663   976758784    7  HPFS/NTFS/exFAT

Disk /dev/sdc: 1024.2 GB, 1024209543168 bytes
183 heads, 63 sectors/track, 173511 cylinders, total 2000409264 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: 0xfb95cd6c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048  2000409263  1000203608    5  Extended
/dev/sdc5            4096  2000409263  1000202584    7  HPFS/NTFS/exFAT

■解説■
今気づいたのですが、sdc1 を f にし忘れてますね。起動時に警告されたわけだ^^;

ubuntu@ubuntu:~$ sudo dd if=/dev/sdb1 of=/dev/sdc1
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.00076339 s, 1.3 MB/s
ubuntu@ubuntu:~$ sudo dd if=/dev/sdb5 of=/dev/sdc5

■解説■
sdb1 を sdc1 に、sdb5 を sdc5 に、それぞれ dd します。後者は非常に時間がかかります。
そこで、別のteminalを開いて
root@ubuntu:/home/ubuntu$ sudo watch -n 100 "pkill -USR1 dd"
のようにして監視してやると、どのくらい進んだか100秒毎に示してくれるので便利です。(pkillはプロセスを殺すためにも使えますが、ここではプロセスへのシグナル送信に使っています。)

さて、今回の作業では sdb が1000.2 GBで、sdc が1024.2 GBなので24GBの余りがあります。このままだとこの24GBが使えないので、リサイズします。

ubuntu@ubuntu:~$ sudo ntfsresize /dev/sdc5
ntfsresize v2012.1.15AR.1 (libntfs-3g)
Device name        : /dev/sdc5
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 1000200991232 bytes (1000201 MB)
Current device size: 1024207446016 bytes (1024208 MB)
New volume size    : 1024207442432 bytes (1024208 MB)
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 330500 MB (33.0%)
Collecting resizing constraints ...
WARNING: Every sanity check passed and only the dangerous operations left.
Make sure that important data has been backed up! Power outage or computer
crash may result major data loss!
Are you sure you want to proceed (y/[n])? y
Schedule chkdsk for NTFS consistency check at Windows boot time ...
Resetting $LogFile ... (this might take a while)
Updating $BadClust file ...
Updating $Bitmap file ...
Updating Boot record ...
Syncing device ...
Successfully resized NTFS on device '/dev/sdc5'.
ubuntu@ubuntu:~$ 

これでubuntuでの作業は完了です。ubuntuをシャットダウンしてPCの電源ケーブルを抜き、ケースを開けてhddをssdに換装します。

treeとかいうぐう有能なコマンドwwwww

ディレクトリの構成をアスキーアートで示したい場合があります。
たとえば

A
├── b.txt
├── c.txt
└── D
    ├── e.txt
    ├── f.txt
    ├── G
    └── H

みたいな感じに。これを作ってくれるコマンドが tree です。(このコマンドを知らなくて、今までは手でちまちま書いてました。)
Ubuntuの人は

$ sudo apt-get install tree

Windows+MSYS2 の人は

$ pacman -S tree