Raspberry Pi セットアップ (2)

昨日は Raspberry Pi が立ち上がるところまでしました。最低限の設定ですね。ここからはお好みの世界です。昨日までは HDD をつなぐことを考えていましたが、どうせならつないだ HDD から立ち上げてみようと言うことに方向転換しました。今までの作業は無駄になりません。ちなみに接続したのは古い320 GB のハードディスク。実はここからSDカードなしで立ち上げる方法もやってみたのですが、うまくいきませんでした。なので、ブートローダーとしてSDカードも使います。

7.接続HDDのフォーマットなど

Linux では ext4 が標準です。無理矢理他のフォーマットにしても意味がないので、 HDD をつないで ext4 にフォーマットします。

$ sudo parted /dev/sda # /dev/sdaは変わる可能性あり
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt                                                      
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? y                                                                 
(parted) mkpart primary ext4 0% 100%                                      
(parted) p                                                                
Model: I-O DATA HDPC-U (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name     Flags
 1      1049kB  320GB  320GB  ext4         primary

(parted) q                                                                
Information: You may need to update /etc/fstab.

パーティション作成ツールの応答も含めてコピペしました。 (parted) というのがプロンプトになります。この例では、 ext4 で全ての領域をフォーマットしました。「分割したい」という方、ググってください。

8.システムのコピー

前日作った環境をそっくり HDD にコピーします。ここでミスるとやり直しになります。慎重にいきましょう。まずは現在の状況を確認します。

$ sudo fdisk -l
(省略)
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 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
Disklabel type: dos
Disk identifier: 0x352a458b

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        8192   532479   524288  256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      532480 31116287 30583808 14.6G 83 Linux


Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Disk model: HDPC-U          
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 14D08399-DC65-4293-9CCD-08C23DAFD12A

Device     Start       End   Sectors   Size Type
/dev/sda1   2048 625141759 625139712 298.1G Linux filesystem

fdisk というコマンドで現在の状況をダンプします。ここで、 /dev/sda が HDD 。 /dev/mmcblk0 がSDカードになります。その他にもいっぱいダンプされますが、省略。HDDを2台つなげたりしているマニアの方は、変わってきますのでよく確認してください。

いよいよコピーです。

$ sudo dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=32M conv=noerror,sync status=progress

if インプットの i です。 of アウトプットの o です。これひっくり返したりすると大変なことになります ( 多分クラッシュする ) 。慎重に。SDカードからHDDへのコピーですね。最後の status=progress はなくてもいいと思いますが、進捗状況がわからないと不安になるのでつけます。時間がかかるので、コーヒーでもどうぞ。

続いて、ディスクのチェックとHDDの領域解放を行います。領域解放って適切な言葉が見つからないので勝手に作りましたが、SDカードからコピーしただけだと、残りの領域を使えないことになるんだそうで、それをHDD本来の容量まで使えるようにする。ということですね。

$ sudo e2fsck -f /dev/sda1
(略)
$ sudo resize2fs /dev/sda1

最初の e2fsck では、フリーブロックのカウントがおかしいよ。というメッセージが出る場合があります。私がやった場合は2回出ました。それぞれ「 y 」で進めてOKです。

9.ブートシステムを調整する

今までは準備。ここからが本番です。といっても操作は比較的簡単なんですが、間違えてしまうと後戻りできません。まずは、HDDの固有番号というか partuuid というのを調べます。

$ ls -l /dev/disk/by-partuuid/
lrwxrwxrwx 1 root root 15 12月 31 11:11 352a458b-01 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 15 12月 31 11:11 352a458b-02 -> ../../mmcblk0p2
lrwxrwxrwx 1 root root 10 12月 31 12:04 5bf1e314-89aa-40ec-944e-12b488a25d99 -> ../../sda1

私の結果をそのまんまコピったけど、並んでいる記号のような部分は違うので、自分の環境に応じて置き換えてくださいね。このままコピーしても UUID が違うので、間違いなく起動しません。

上の例でいくと「 5bf1e…. 」の部分が partuuid です。この部分メモしておきましょう。

次にHDDの中のファイルを読み書きするんですが、まだマウントされていないので、マウントします。 /mnt/ フォルダにマウントしますね。別にここじゃなければダメって訳ではありませんが、後々面倒なので、 /mnt/ フォルダでいきます。

$ sudo mount -t ext4 -o defaults /dev/sda1 /mnt

HDDの内容が、 /mnt/ 以下にマウントされます。で、先ほどSDカードからコピーしたファイルの中で、 /etc/fstab というファイルを編集したいんですが、HDDは /mnt/ にマウントされていますから fstab の場所は、 /mnt/etc/fstab になります。これを編集します。

$ sudo nano /mnt/etc/fstab
------
PARTUUID=352a458b-01  /boot           vfat    defaults          0       2
PARTUUID=5bf1e314-89aa-40ec-944e-12b488a25d99  /   ext4    defaults,noatime  0       1

上記は編集後です。ルート (/) がマウントする場所をSDカードからHDDに変更します。最初先ほどダンプした partuuid のリストで mmcblk0p2 がマウントされていたのが、ルート (/) になっているはずです。それを先ほどメモしたHDDの uuid に書き換えます。私何度もこの fstab ファイルを編集していますが、間違えると間違いなく塡まります。起動しなくなって泣きを見ることも多々ありました。特に今回はヘッドレスでやってますので、お手上げになりますね。

書き換えたらセーブします。くれぐれも間違いのないように。

 $ sudo nano /boot/cmdline.txt
------
console=serial0,115200 console=tty1 root=PARTUUID=5bf1e314-89aa-40ec-944e-12b488a25d99 rootfstype=ext4 elevator=deadline fsck.repair=yes rootw

最終段階です。今度はブートシステムのSDカード上のファイルを編集します。上記例の一番上。 cmdline.txt を編集します。ここの root= のところを書き換えます。例によって先ほどメモした uuid に書き換えます。これも間違えてしまうと起動しなくなりますので、慎重に。

ここまで出来たらOKです。再起動しましょう。うまくHDDから立ち上がれば万々歳ですね。ダメだったら … また1からやり直しましょう。上手くいったら下記のコマンドで確認します。

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root        294G  1.6G  280G    1% /
devtmpfs         430M     0  430M    0% /dev
tmpfs            463M     0  463M    0% /dev/shm
tmpfs            463M   12M  451M    3% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            463M     0  463M    0% /sys/fs/cgroup
/dev/mmcblk0p1   253M   48M  205M   19% /boot
tmpfs             93M     0   93M    0% /run/user/1000

一番上、 /dev/root サイズが 294 GBですね。成功です。320 GB のハードディスクを使ってますが、色々使って294 GB になってます。問題ありません。

10. NAS のマウント

セットアップの最後に NAS をマウントします。私はファイルのやりとりに NAS を使うことが多いです。そこで、自動的に NAS をマウントして使えるようにしたいのでですね。早速、手順を説明しますが、手順は2つ。まずマウントする場所を作ってやります。さっき、一時的に /mnt/ フォルダにマウントしましたが、今度は /mnt/ フォルダ以下にフォルダを作ってそこにマウントさせます。

$ sudo mkdir /mnt/nas
$ sudo chmod 777 /mnt/nas

次に、先ほども出てきた fstab を編集します。ただし、今度はすでにルート (/) にマウントされた状態ですので、アドレスは /etc/fstab になります。さっきとは違いますので、注意してください。

$ sudo nano /etc/fstab
------
//192.168.●.●/freenas/home /mnt/nas cifs username=●●,password=●●,iocharset=utf8,defaults 0 0

fstab に今度は「追記」します。最終行に上記例のコードを書き加えます。途中で改行を入れないで1行にして入力します。 /freenas/home というのは、私の環境に設置した NAS のフォルダなので、自分の環境に合わせてください。自宅だとパスワードなしで運用している人もいるかもしれませんね。その場合は password=, で OK です。さっきも書きましたが、 fstab の記述が間違っていると、起動時にエマージェンシーモードに入ってしまいます。これはヘッドレス環境では操作できないので、慎重に。

セーブしたら確認しましょう。

$ sudo mount -a

これでエラーが出なければよし。エラーが出てしまうようだと何かが間違っていますので、再度見直してください。

$ df -h
ファイルシス                サイズ  使用  残り 使用% マウント位置
/dev/root                     294G  1.6G  280G    1% /
devtmpfs                      430M     0  430M    0% /dev
tmpfs                         463M     0  463M    0% /dev/shm
tmpfs                         463M   12M  451M    3% /run
tmpfs                         5.0M  4.0K  5.0M    1% /run/lock
tmpfs                         463M     0  463M    0% /sys/fs/cgroup
/dev/mmcblk0p1                253M   48M  205M   19% /boot
//192.168.●.●/freenas/home   5.2T  2.2T  3.0T   43% /mnt/nas
tmpfs                          93M     0   93M    0% /run/user/1000

下から2行目に NAS がマウントされています。 OK ですね。

まとめにかえて

長々と書いてきました。ほとんどが、ネット上の受け売りです。自分の環境に合わせるために試行錯誤したところはあります。しかし、先人達には感謝しかありません。ハードディスクから起動できるようになりましたので、SDカードの寿命を気にすることはほぼなくなりました。HDDがクラッシュしたら泣きますけど。

ここまでで、本当の基本設定が終わりました。次は … なんに使おうかまだ決まってません。先のエントリーでも言っていましたが、分散処理システムには興味あります。情報があまりないので手詰まりなんですけどね。さて、もう一台もセットアップしようかな。

投稿者プロフィール

kaizawa
kaizawaブロガー
新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA