Raspberry Pi 5をモニターなしでセットアップする。Windows PCだけでOS書き込みからSSH接続まで
モニターもmicro HDMIケーブルもなしで、Windows PCだけでRaspberry Pi 5を初期設定します。Raspberry Pi ImagerのCLIとfirstrun.shでWi-FiとSSHを仕込み、SDカード挿入から約3分でSSH接続できるまでの全手順を実測値つきで解説します。
こんにちは!
Qualitegプロダクト開発部です!
本稿はRaspberry Pi(ラズベリーパイ、通称ラズパイ)をインターネット越しにコントロール方法についてシリーズでお伝えいたします。
第1回の今回は、ラズパイの入手から初期セットアップ手順に関する内容です。
Windows 11のPCだけでOSの書き込みからSSH接続までを完了させた手順を、実測値つきでご紹介します。SDカードを挿して電源を入れてから、SSHでログインできるまでは約3分でした。
用意するもの
- Raspberry Pi 5本体・・・本稿では4GBモデルを使います。
- microSDカード・・・今回は64GB。初回起動時に全容量まで自動拡張されます
- Rasberry Pi5用のヒートシンク・・・熱対策用
- USBカードリーダー・・・SDカードにラズパイイメージを書き込みます
- Windows 11のPC
- USB-C電源(Raspberry Pi 5は5V/5A給電が推奨で、公式のRaspberry Pi 27W USB-C Power Supplyなどが該当します。5V/3A級の充電器でも構成によっては起動できますが、電力不足による制限や不安定動作が起きる可能性があります)
実機のセットアップ
組み立て
では、さっそくラズパイを組み立てていきましょう!
これがラズパイです。

まず、熱対策としてヒートシンクをつけていきます。

ヒートシンクをつけるまえに、CPUチップなど発熱するパーツに付属のシリコンゴムっぽい素材を貼り付けていきます。これはサーマルパッド(熱伝導パッド)というやつですね。

はい、すっかりサーマルパッドをはりつけましたので、次にヒートシンク本体を取り付けましょう。

絶縁プラスチックでできたネジでこんなふうに裏側からヒートシンクをとめてできあがり。

ヒートシンク本体がとりつけられました。
ファン用電源コネクタがラズパイ基盤上部にあるので、そこにヒートシンク側から出た電源ケーブル差し込みます。

ちなみに、SDカードはまだ挿しません。何もはいっていないので挿しても何もできません。
さて、ここまで数分で終わると思います。
次に、ソフトウェアをやっていきましょう。
モニターなしでラズパイをセットアップしていく
さっそくソフトウェアをセットアップしていきましょう。
今回はCLIのみでセットアップしていきます。つまりヘッドレスセットアップですね。
動作確認した環境は、
・書き込みソフト:Raspberry Pi Imager 2.0.8
・書き込んだOS:Raspberry Pi OS 64-bit(Debian 13 trixieベース、カーネル6.18)
・作業PC:Windows 11 Proです。
手順1: 書き込み先の物理ディスク番号を確認する
まずラズパイに差し込むSDカードを作る作業からです。
そのためには、専用の書き込みソフト「Raspberry Pi Imager 2.0.8」をつかいます。
SDカードへの書き込みは物理ディスク単位で行うため、最初にディスク番号を確認します。
Raspberry Pi Imager 2.0.8には、内蔵ドライブなど書き込み対象外のデバイスへの書き込みを拒否する安全機構がありますが、それでも、別のUSBストレージを取り違えればデータを消してしまうため、ディスク番号・容量・BusTypeの確認は必ず行ってください。
SDカードをカードリーダーでPCにつなぎ、PowerShellで次を実行します。
Get-DiskNumber FriendlyName BusType SizeGB
------ ------------ ------- ------
0 CT4000P3PSSD8 NVMe 3726
1 Generic- SD/MMC/MS PRO USB 59.5今回の環境では、内蔵SSDがディスク0、USBカードリーダー経由のSDカードがディスク1と表示されました。容量(59.5GB)とBusTypeがUSBであることからSDカードだと判断できますね。
以降の手順では書き込み先を \\.\PhysicalDrive1 と指定します。ディスク番号はお使いの環境で必ず読み替えてください。
手順2: Raspberry Pi ImagerとOSイメージを用意する
Raspberry Pi Imagerはwingetで入ります。
winget install --id RaspberryPiFoundation.RaspberryPiImager --silent --accept-package-agreements --accept-source-agreementsインストール先は C:\Program Files\Raspberry Pi Ltd\Imager\ です。GUIで使うのと同じ実行ファイルがCLIモードを持っていて、スクリプト用のラッパー rpi-imager-cli.cmd も同梱されています。
OSイメージは公式のダウンロードサイトから取得します。
raspios_arm64_latest というURLは常に最新の64-bit版(デスクトップあり)へリダイレクトされるので、覚えておくと便利です。
curl.exe -L --fail -o C:\qualiteg_examples\raspi\raspios.img.xz https://downloads.raspberrypi.com/raspios_arm64_latestサイズは約1.3GBでした。xz圧縮のまま書き込みに使えるので、自分で展開する必要はありません。
手順3: 初回起動スクリプトfirstrun.shを作る
ここがヘッドレスセットアップの心臓部です。
Raspberry Pi OSに標準で入っているヘルパー imager_custom と userconf を呼び出して、ホスト名、SSH、ユーザー、Wi-Fi、キーボード配列、タイムゾーンをまとめて設定します。ファイル名は firstrun.sh とし、置き場所はどこでも構いません(次の手順で書き込み時にパスを渡します)。
#!/bin/bash
# set +e は途中のコマンドが失敗しても最後の後始末まで進めるための指定。
# 設定が反映されないときは、各コマンドの成否を個別に確認すること
set +e
/usr/lib/raspberrypi-sys-mods/imager_custom set_hostname raspberrypi
/usr/lib/raspberrypi-sys-mods/imager_custom enable_ssh
/usr/lib/userconf-pi/userconf 'pi' '$6$…(openssl passwd -6 で生成したハッシュ)'
/usr/lib/raspberrypi-sys-mods/imager_custom set_wlan 'your-ssid' 'your-wifi-password' 'JP'
/usr/lib/raspberrypi-sys-mods/imager_custom set_keymap 'jp'
/usr/lib/raspberrypi-sys-mods/imager_custom set_timezone 'Asia/Tokyo'
rm -f /boot/firstrun.sh /boot/firmware/firstrun.sh
sed -i 's| systemd.run.*||g' /boot/cmdline.txt /boot/firmware/cmdline.txt 2>/dev/null
exit 0SSIDとWi-Fiパスワード(上記スクリプトの'your-ssid' 'your-wifi-password'の部分)はご自身のものに置き換えてください。
ーザーのパスワードは平文ではなくSHA-512ハッシュで渡します。ハッシュはGit Bashなどで次のように作れます。
openssl passwd -6 '設定したいパスワード'末尾の2行は、スクリプトが自分自身を削除して通常起動に戻すための後始末です。Imagerが起動設定(cmdline.txt)に仕込むエントリを外しています。
ひとつだけ重要な注意があります。
このファイルの改行コードは必ずLFにしてください。
Windowsのエディタで作るとCRLFになりがちで、CRLFのままだと初回起動時にスクリプトが失敗します。SSHは有効にならず、Wi-Fiにもつながらず、モニターがないので失敗の様子も見えないという、なかなかつらい状態になります。
セキュリティ上の注意もひとつ。firstrun.sh にはWi-Fiパスワードが平文で入ります。Gitへのコミットや共有フォルダへの配置は避け、Windows側に残った作業用ファイルも不要になったら削除してください。
手順4: CLIでSDカードに書き込む
物理ディスクへの書き込みには管理者権限が必要なので、PowerShellから昇格つきで実行します。UACのダイアログが出たら許可してください。
$imgr = 'C:\Program Files\Raspberry Pi Ltd\Imager\rpi-imager.exe'
$opts = @('--cli', '--debug', '--disable-eject',
'--first-run-script', 'C:\qualiteg_examples\raspi\firstrun.sh',
'--log-file', 'C:\qualiteg_examples\raspi\flash-log.txt',
'C:\qualiteg_examples\raspi\raspios.img.xz',
'\\.\PhysicalDrive1')
Start-Process -FilePath $imgr -ArgumentList $opts -Verb RunAs -Wait使っているオプションの意味です。
| オプション | 役割 |
|---|---|
| --cli | GUIを起動せずコマンドラインモードで動かす |
| --first-run-script | 初回起動スクリプト(firstrun.sh)をSDカードに組み込む |
| --log-file | 進捗と結果をログファイルに書き出す |
| --debug | ログを詳細にする。書き込み速度の自動調整の様子も記録される |
| --disable-eject | 書き込み完了後にSDカードを自動排出しない。書き込み結果を確認したい場合に付ける |
書き込み後の読み戻し検証(ベリファイ)はデフォルトで有効です。実測では、1.3GBのxzイメージの展開に53秒、書き込みと検証を合わせて5分ほどで完了しました。書き込みの遅いSDカードだとログに書き込みレイテンシの警告が出ますが、Imagerが自動でバッファ量を調整して続行するので、そのまま待てば大丈夫です。
進捗表示について補足します。今回のように Start-Process -Verb RunAs で昇格して起動した構成では、元のPowerShell側では進捗を確認できませんでした。そのため --log-file を指定し、ログファイルで進捗と結果を確認しています。ログの最後に succeeded と出ていれば成功です。
手順5: 電源を入れて3分待ち、SSHで接続する
書き込みが終わったSDカードをラズパイ5に挿しましょう。

そして、USB-C電源をつなぐだけで起動します。

Raspberry Pi 5には電源ボタンもありますが、通常の初回起動ではボタン操作は不要です。初回はファイルシステムの自動拡張、firstrun.sh の実行、再起動が順に走るので、2〜3分待ちます。基板の緑のLEDが点滅していれば起動処理中です。
待ったら、WindowsのターミナルからSSHで接続します。
ssh pi@raspberrypi.localraspberrypi.local という名前はmDNSという仕組みで解決されます。Windows 11は標準で対応しているので、追加のソフトは要りません。今回の実測では、SDカードを挿して電源を入れてから約3分でSSHポートが開き、初期設定したユーザーでログインできました。
ログイン後の状態も確認しました。uname -a、vcgencmd measure_temp、df -h の出力の抜粋です。
Linux raspberrypi 6.18.34+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.18.34-1+rpt1 (2026-06-09) aarch64 GNU/Linux
temp=34.0'C
/dev/mmcblk0p2 58G 6.6G 49G 12% /64GBカードの全域がルートファイルシステムに拡張済みで、CPU温度は34.0度、Wi-Fi経由でIPv4アドレスも取得できていました。
ここまでくれば、あとは普通のLinuxマシンとして使えます。
ハマりどころと回避策
今回の作業で実際に踏んだ罠を表にまとめます。
| 症状 | 原因 | 回避策 |
|---|---|---|
| 昇格して実行すると、元のPowerShellに進捗が表示されないことがある | 今回の Start-Process -Verb RunAs での昇格起動では、元のPowerShell側に進捗が表示されなかった(実測) | --log-file でログファイルに書かせて、そちらで進捗と結果を確認する |
| 書き込みがアクセス拒否で失敗する | 物理ディスクへの書き込みには管理者権限が必要 | Start-Process -Verb RunAs で昇格して実行する |
| 初回起動してもWi-Fiにつながらず、SSHもできない | firstrun.sh の改行コードがCRLFになっていてスクリプトが実行に失敗している | LFで保存し直し、書き込みからやり直す |
| raspberrypi.local が見つからない、またはIPv6アドレスが返ってくる | mDNSの名前解決がIPv6を優先することがある | 通常はそのまま接続できる。接続できない場合はルーターの管理画面でIPv4アドレスを確認して直接指定する |
| plinkでスクリプトから自動接続すると初回に固まる | ホストキー確認のプロンプトが標準入力のパイプからの応答を受け付けない | -batch と -hostkey "SHA256:..." でフィンガープリントを明示指定してプロンプト自体を出させない |
最後のplinkの罠は、SSH接続までスクリプトで自動化したい人向けの補足です。手でsshコマンドを打つ分には遭遇しません。
まとめ
モニターなしのRaspberry Pi 5セットアップは、次の5点を押さえれば安全に完走できます。
- 書き込み前に Get-Disk で物理ディスク番号を確認する(最重要)
- OSイメージは raspios_arm64_latest から取得し、xzのまま書き込む
- firstrun.sh にWi-Fi、SSH、ユーザー設定を仕込む。改行コードはLF
- 書き込みは管理者権限で実行し、結果は --log-file のログで確認する
- 初回起動は3分待ってから ssh pi@raspberrypi.local
ログインできたら、次の一手として最初にパスワードの変更とパッケージ更新をおすすめします。
passwd
sudo apt update && sudo apt full-upgrade -yデスクトップ画面を使いたくなったら、sudo raspi-config でVNCを有効にすると、Windowsからリモートデスクトップのように操作できます。
このあたりは別の記事で紹介する予定です。
それでは、また次回お楽しみに!