ソフトウェアとハードウェアの境界

ホビー開発に関する誰得情報満載☆

MINIBIAN 最小構成のRASPBIAN (Raspberry Pi) ②

ちょっとページ長いっぽいので目次を入れてみた。

正式に正社員、スーツを卒業

僕は今年からITインフラ管理の仕事に転職したのだが、2月から正式に正社員として採用していただけた。 上司からの評価も(本当かどうかはわからないが採用担当の話では)良いらしく、すこぶる嬉しい。 逆に、僕はいい上司に出会えて喜んでいたところだったし。
しかしそんな中些細ではあるが、一つ悩みができた。 スーツでなく私服で出勤するということだ。
僕は正直それほど私服のセンスもなく、UNIQLOがなければ今頃田舎の中学2年生のような格好をしていただろう。 今はなんとか中学3年生くらいの格好はできているはず。 また、「あまり派手でなく、一般的なオフィスカジュアルで」という事を言われたのだが、一般的なオフィスカジュアルがどういった服装なのか全くわからない。 とりあえず、月曜日はスーツで行ってもう一度、良い服装、ダメな服装を聞いておこうと思う。 加えて、それに回答できる読者の方、コメントしていただくようよろしくお願いします。

最近、僕の応援していたブロガーの方も異国の地で就職を勝ち取れたようだ。2016年、僕に加えて彼までも迎え入れたIT業界は、きっと良い風が吹くのではないかなぁ…(この超絶上から目線はジョークです、御了承お願い致します)。

Raspberry Piで遊ぶ

前回の予告したが、とりあえず今回は以下のうち最初の1つを記したい。

  • raspi-configなしでディスクを拡張
    MINIBIANにはraspi-configがないので、知っておくと便利。

  • RPiのイメージを1GBキッチリにしたい。
    いくつか方法があるが、SDカードにGPartedでパーティションを作りたい。 FAT32を64MB、ext4を960の合計キッチリ1GBの領域を確保する。 そこに必要なファイルをコピーし、イメージの作成、読み出しなどをする。

  • イメージファイルをPC上にマウントして中身を書き換えたい。
    イメージファイルはPC上にマウントすることができる。なんか面白いのでやってみたい。

[raspi-config]なしでディスクパーティションを拡張

こちらのページが非常にわかりやすい。
wordpress.ideacompo.com
tomoyukim.hatenablog.com

僕が利用しているOS、MINIBIANにはraspi-configがインストールされていない。よって、このような作業が必要になる。
ほぼ転載にはなるが、自分でもう一度手順を記しておきたい。

df -hでデバイスを確認

% df -h
Filesystem     Size Used Avail Use% Mounted on
/dev/root      705M  431M  223M  66% /
...
/dev/mmcblk0p1  61M   20M   42M  32% /boot
% ls -l /dev
...
brw-rw---- 1 root disk  179,   0 Nov 10 00:32 mmcblk0
brw-rw---- 1 root disk  179,   1 Nov 10 00:32 mmcblk0p1
brw-rw---- 1 root disk  179,   2 Nov 10 00:32 mmcblk0p2
...

上記の/dev/mmcblk0p1がbootパーティション、つまりFAT領域だ。
そしてdf -hでは表示されていないが、/dev/mmcblk0p2Linuxファイルシステムとして使われている。 SDカードのデバイス名は/dev/mmcblk0である。
RPiのイメージをSDカードに書き込んですぐの時点では、ディスクデバイスドライバファイルシステムはSDカード全体を使うように設定されていない。 その2つを適切に設定すれば、目標達成である。 SDカード/dev/mmcblk0の2つ目のパーティションを拡張して、FAT領域とext4領域とを合わせて1GBとなるようにする。

fdiskでパーティションを作り直す

# fdisk /dev/mmcblk0

上記のコマンド実行後、以下のように操作する。

  1. p : パーティションのアドレス情報などを表示
  2. d : 隠し部分のパーティション削除
  3. 2 : 2番目のパーティションなので、2を指定。
  4. p : 結果確認
  5. n : 新しいパーティション作成
  6. p : primaryを指定
  7. 2 : 2番目のパーティションを指定
  8. 数字 : 最初のpで表示した2番めのパーティションのstartアドレスを指定
  9. 2097152 : 1セクタが512として、1GBを計算した値を入力
  10. w : 変更を書き込み。
root@minibian:~# fdisk /dev/mmcblk0
...
#1. p : パーティションのアドレス情報などを表示
Command (m for help): p
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
...

Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1          16  125055  125040 61.1M  b W95 FAT32
/dev/mmcblk0p2      125056 1626112 1501057  733M 83 Linux
#2. d : 隠し部分のパーティション削除
Command (m for help): d
#3. 2 : 2番目のパーティションなので、2を指定。
Partition number (1,2, default 2): 2

Partition 2 has been deleted.
#4. p : 結果確認
Command (m for help): p

#/dev/mmcblk0p2が消えた
Device         Boot Start    End Sectors  Size Id Type
/dev/mmcblk0p1         16 125055  125040 61.1M  b W95 FAT32

#5. n : 新しいパーティション作成
Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
#6. p : primaryを指定
Select (default p): p
#7. 2 : 2番目のパーティションを指定
Partition number (2-4, default 2): 2
#8. 数字 : 最初のpで表示した2番めのパーティションのstartアドレスを指定
#この場合、デフォルト値が先頭セクタからずれているので、入力し直すこと。
First sector (125056-31116287, default 126976): 125056
#9. 2097152 : 1セクタが512として、1GBを計算した値を入力
# 512 x 2097152 = 1073741824 = 1GB(1024^3で割る)
Last sector, +sectors or +size{K,M,G,T,P} (125056-31116287, default 31116287): 2097152

Created a new partition 2 of type 'Linux' and of size 963 MiB.
#10. w : 変更を書き込み。
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
# reboot

ここでfdiskコマンドから抜ける。 そして再起動。

resize2fsファイルシステムを拡張

# resize2fs /dev/mmcblk0p2
...
# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       932M  432M  442M  50% /
...
/dev/mmcblk0p1   61M   20M   42M  32% /boot

以上で、ディスクの拡張が終わり、(このログではわからないが)キッチリ1GBの領域を使用するRPiができた。

私事

次回予告中、1つしか書けなかったけど、まぁ許してください、次回また書きますゆえ。

最近はあまりRPiで遊べていないのが現状。 今の仕事は組込みとは全くかけ離れた領域の仕事である。 ネットワーキング、DNS、MTA、データベース、LDAPなどの各種サーバについての知識などを猛勉強中。 まさに僕が避け続けてきた分野だ。 誰かがやってくれるだろう、と思っていたことであった。 こんなことなら、このあたりももっと勉強しておくんだったなと思う自分と、それでも仕事を通して勉強できて幸せだなと思う自分がいて面白い。
うん、なんか幸せ。