昨日は 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がクラッシュしたら泣きますけど。
ここまでで、本当の基本設定が終わりました。次は … なんに使おうかまだ決まってません。先のエントリーでも言っていましたが、分散処理システムには興味あります。情報があまりないので手詰まりなんですけどね。さて、もう一台もセットアップしようかな。
投稿者プロフィール
最新の投稿
- Linux2024年9月8日24.04 の Update ではまった
- ノン・カテゴリ2024年7月21日Kindle 世代交代
- Linux2024年7月7日convert → magick
- Mac2024年7月6日消えてしまった ATOK を再び出す方法