0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【macOS】コマンドラインだけでUbuntu ServerのインストールUSBを作る(curl + shasum + dd)

0
Posted at

はじめに

サポートが切れた古いIntel MacBook Air(2015)を、Linux学習用のサーバーとして再利用しようと思い立ちました。そのためにまず必要なのが OSのインストールUSB です。

balenaEtcherやRufusといったGUIツールを使う方法もありますが、今回は コマンドラインだけ で作ってみました。理由は単純で、インフラの世界では結局これが一番速くて確実だからです。ダウンロード・整合性チェック・ディスク書き込みまで、すべて数行のコマンドで完結します。

この記事では、その手順を「なぜそうするのか」の解説つきでまとめます。

対象読者

  • 古いPCにLinuxを入れて学習環境を作りたい人
  • macOSでブートUSBを作りたい人
  • dd を使ってみたいが、間違えて別のディスクを消すのが怖い人

環境

項目
作業マシン macOS 15.5(Apple Silicon / arm64)
書き込むOS Ubuntu Server 24.04.4 LTS(amd64)
インストール先 MacBook Air 2015(Intel / amd64)
USBメモリ 16GB(FAT32フォーマット)

ポイント:ISOのアーキテクチャは「インストールする先」に合わせる
作業マシンはApple Silicon(arm64)ですが、ダウンロードするのは amd64 です。なぜなら、OSを動かすのはインストール先の2015年MacBook Air(Intel = amd64)だから。焼く側のMacのCPUは関係ありません。dd はバイトをコピーするだけなので、ここを取り違えると「起動しないUSB」ができあがります。

全体の流れ

  1. ISOをダウンロードする(curl
  2. SHA256で整合性を検証する(shasum
  3. 書き込み先のUSBを特定する(diskutil list
  4. USBをアンマウントする(diskutil unmountDisk
  5. dd で書き込む
  6. 書き込み結果を確認する(diskutil list
  7. 安全に取り外す(diskutil eject

手順

1. ISOをダウンロードする

公式の配布サーバーから取得します。最新の点リリース(執筆時点では 24.04.4)を指定します。

cd ~/Downloads
curl -L --fail -o ubuntu-24.04.4-live-server-amd64.iso \
  https://releases.ubuntu.com/24.04/ubuntu-24.04.4-live-server-amd64.iso
  • -L:リダイレクトに追従する
  • --fail:HTTPエラー時に失敗扱いで止める(壊れたファイルを掴まないため)

ファイルサイズは約3.2GBです。

2. SHA256で整合性を検証する

ダウンロードしたファイルが「壊れていないか」「本物か」を確認します。ここを飛ばす人が多いですが、ブートUSBが起動しない原因の多くはダウンロード破損 なので、地味に重要な工程です。

まず公式の期待値を取得します。

curl -fsSL https://releases.ubuntu.com/24.04/SHA256SUMS -o SHA256SUMS
grep 'live-server-amd64.iso' SHA256SUMS

次に、自分の手元のファイルのハッシュを計算します。

shasum -a 256 ubuntu-24.04.4-live-server-amd64.iso

出力された64文字の文字列が、公式の期待値と 完全に一致 すれば、ファイルは無傷かつ本物です。1文字でも違えばダウンロードし直します。

補足:より厳密に「本物」を確かめるには
上の照合は「SHA256SUMS に書かれた値と一致するか」までの確認です。SHA256SUMS ファイル自体が本物かどうかは、配布元のGPG署名(SHA256SUMS.gpg)で検証して初めて完全になります。本記事ではハッシュ照合までにとどめますが、「ハッシュ一致=完全に本物」と言い切れるわけではない、という点だけ覚えておくと安全です(GPG署名検証は別記事で扱います)。

3. 書き込み先のUSBを特定する(最重要)

ここが事故りやすい工程です。dd は指定したディスクを問答無用で上書きするので、書き込み先を間違えると内蔵ディスクのデータが消えます。慎重に特定します。

より確実にするため、まず USBを挿す前 に一度ディスク一覧を撮っておきます。

diskutil list

次にUSBを挿してから、もう一度同じコマンドを実行します。

diskutil list

出力例(USBを挿した後・抜粋):

/dev/disk0 (internal, physical):
   0: GUID_partition_scheme   *500.3 GB   disk0      ← 内蔵SSD(触らない)
   ...
/dev/disk4 (external, physical):
   0: FDisk_partition_scheme  *15.5 GB    disk4      ← これがUSB
   1: Windows_FAT_32 NO NAME   15.5 GB    disk4s1

特定のコツは3つです。

  • external, physical と書かれているもの を探す(内蔵は internal
  • 容量が、自分の買ったUSBと一致するか 確認する(16GBのUSBは約15.5GBと表示される)
  • 内蔵SSD(この例では500GB)とは桁が違うことを確認する

より安全な特定方法
上のように「挿す前」と「挿した後」で diskutil list を2回実行し、増えたデバイスを差分で特定する と、取り違えがほぼ起きません。「挿す前後でどれが増えたか」を見るのが一番確実です。

⚠️ デバイス番号は環境ごとに違います。 この記事の disk4 をそのままコピーせず、必ず自分の環境で diskutil list を実行して、自分のUSBの番号を確認してください。

4. USBをアンマウントする

dd で書き込む前に、OSがそのディスクを使っている状態を解除します。

diskutil unmountDisk /dev/disk4

Unmount of all volumes on disk4 was successful と出ればOKです。これはデータを消す操作ではありません。

5. dd で書き込む

いよいよ本番です。

sudo dd if=$HOME/Downloads/ubuntu-24.04.4-live-server-amd64.iso \
  of=/dev/rdisk4 bs=4m status=progress

各オプションの意味:

  • if=:入力ファイル(書き込むISO)
  • of=/dev/rdisk4:出力先。disk4 ではなく rdisk4(raw device) を指定するのがコツ。バッファを介さず直接書き込むため、disk4 よりはるかに高速です
  • bs=4m:ブロックサイズ。macOSの dd は小文字 m
  • status=progress:進捗を表示する。これがないと dd は完了まで沈黙し、画面が固まったように見えて不安になります

実行中は、status=progress によって転送量がリアルタイムで表示されます(数値は増えていきます)。status=progress を付け忘れた場合でも、macOS(BSD系)では実行中に Ctrl + T を押すと、その瞬間の進捗が一行だけ表示されます。

完了すると、最終的に次のような表示が出てプロンプトに戻ります(macOS / BSD系の dd の出力順)。

811+1 records in
811+1 records out
3405469696 bytes transferred in 370.093583 secs (9201645 bytes/sec)

records inrecords out の数が一致していれば、dd が読んだ量と書いた量が一致した ことの確認になります。ただしこれは「USB側に正しく届いた・展開された」ことまでは保証しません。それは次の手順で確認します。

なお、書き込みにかかる時間はUSBの規格や個体差で大きく変わります。今回の環境(USBメモリ)では約6分・約9.2MB/sでしたが、USB2.0だと20分以上、高速なUSB3.0の良いメモリなら2〜3分で終わることもあります。

6. 書き込み結果を確認する

本当にISOが書き込まれたかを確認します。

diskutil list /dev/disk4

書き込み前は Windows_FAT_32 NO NAME というパーティションが1つだけでしたが、書き込み後は EFIブート用などを含む複数のパーティション構成に変わっている はずです。レイアウトが変わっていれば、ISOがUSBに正しく展開された証拠です。

補足:書き込み直後にダイアログが出ても正常
書き込み後、macOSが「このディスクは読み取れません」というダイアログを出すことがあります。これはmacOSがLinux用のパーティションを読めないだけで、失敗ではありません。「無視」を押してOKです。

7. 安全に取り外す

diskutil eject /dev/disk4

Disk /dev/disk4 ejected と出れば、インストールUSBの完成 です。

ハマりポイント・Tips

  • of= の指定ミスは致命的。内蔵ディスクを指定すると一発でデータが飛びます。書き込み前に番号を指差し確認しましょう。
  • dd は進捗が出ないので、status=progress を付けると安心。付け忘れた場合、macOSでは実行中に Ctrl + T を押すと一瞬だけ進捗が見えます。
  • sudo のパスワードは入力しても画面に表示されません。打てていないように見えますが入力されています。
  • rdiskdisk で速度が段違いrdisk を使うと書き込みが数倍速くなります。
  • 書き込み後の「読み取れません」ダイアログは正常。macOSがLinuxパーティションを読めないだけなので「無視」でOK。
  • ISOのアーキテクチャは「インストール先」基準。作業マシンがApple Siliconでも、Intel機に入れるなら amd64 を選びます。

まとめ

GUIツールを使わなくても、curlshasumdiskutildd の組み合わせで、ダウンロードから検証、ディスク書き込み、確認まで一通り完結できました。

  • curl でダウンロードし、--fail で壊れたファイルを掴まない
  • shasum -a 256 で整合性を必ず検証する(より厳密にはGPG署名検証もある)
  • diskutil list で書き込み先を サイズと種類で 慎重に特定する(挿す前後の差分で確認するとさらに安全)
  • ddrdisk + bs=4m + status=progress で速く・見やすく
  • 書き込み後は diskutil list でパーティション構成の変化を確認する

「黒い画面でOSを焼く」という作業は最初こそ身構えますが、やってみると一行ずつ意味が分かって、むしろGUIより透明性が高いと感じました。これらは実際のサーバー構築でも使う基本操作なので、インフラ学習の良い第一歩になります。

次にやること

完成したUSBで、古いMacBook AirにUbuntu Serverをインストールし、SSH接続できる自宅Linux環境を作っていきます(別記事で続けます)。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?