質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

Q&A

解決済

2回答

3430閲覧

ddコマンドの進行が停止してしまう

solstice

総合スコア10

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

0グッド

1クリップ

投稿2022/03/25 06:48

編集2022/03/30 02:03

質問内容

あらかじめ作成したSDカードイメージを、SDカードに書き込む際に以下のddコマンドをUbuntu上で実行しました。

$ sudo dd if=rpi-basic-image-raspberrypi3.rpi-sdimg of=/dev/sdb bs=16M status=progress

しかし実行した直後には以下のような進行状況のまま固まってしまいます(Ctrl+Cによる中断もできません)。

167772160 bytes (168 MB, 160 MiB) copied, 5.20722 s, 32.2 MB/s

(3/27追記)このとき仮想マシンは一時停止の状態になっていることがVirtualBox Managerで確認できます。

書き込みを正常に進行・完了させるには、どのような手順を踏む必要があるのでしょうか。
Linuxの知識に乏しく恐縮ですが、ご回答いただけますと幸いです。

試したこと

○オプションの追加
conv=fdatasync:変わらず停止してしまいます。
○別ファイルでのddコマンド実行

$ sudo dd if=conf.local of=/dev/sdb bs=16M status=progress 11298 bytes (11 kB, 11 KiB) copied, 1.82475 s, 6.2 kB/s 0+1 records in 0+1 records out 11298 bytes (11 kB, 11 KiB) copied, 1.83054 s, 6.2 kB/s

軽量なファイルでは完了しますが、ホストOS上からはファイルが確認できません。

参考にしたページ

・VirtualBoxでSDカードを認識させる方法
https://scribles.net/accessing-sd-card-from-linux-virtualbox-guest-on-windows-host/
・ddコマンドのフリーズに関する質問
https://superuser.com/questions/1220867/dd-function-seems-to-freeze-when-done

目的

書籍『組込みエンジニアの教科書』(C&R研究所)に記載されている、Raspberrypi3B+でYoctoを起動するための手順を、学習のため手元の環境で再現しています。
その中でビルドした起動イメージをSDカードに書き込む必要があり、上記の質問に至りました。

動作環境

・ホストOS:Windows 8.1
・ゲストOS:Ubuntu 16.04.6
・仮想化環境:VirtualBox 6.1.32 /Vagrant 2.2.19
・SDカード:microSDHC 32GB UHS-I

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sigsegv

2022/03/26 07:22

bs=4M または bs=1M でも同じですか? /var/log/messagesにエラーは出ていませんか? 別の SDカードでも試せますか?
solstice

2022/03/26 17:36

ご質問ありがとうございます。 bsを変えても同様の現象が発生します。 syslogには後にddを実行したときのログがSSH接続時から丸々記録されていません。 手元にあるSDカードは他にありません。
sigsegv

2022/03/27 02:17

個体問題の可能性もあるので、別のSDカード(できれば別メーカーの)を試すといいと思います。 >このときVirtualBox Manager上では一時停止の状態であることが確認できます。 何が一時停止なのかわかりません。ddコマンドだとすると一時停止とはいったい何を意味するのかわかりません
solstice

2022/03/27 08:44

仮想マシンが一時停止(paused)になります。 修正します。
sigsegv

2022/03/27 12:27

てことは >しかし実行した直後には以下のような進行状況のまま固まってしまいます の固まってしまうとは、dd コマンドが応答しないだけではなく Ubuntu自体が固まってしまうということなのですね?(この違いは重要) ちょっと異常すぎですね。やっぱりSDカードの故障じゃないかなあ
solstice

2022/03/27 16:33

今の状況だとオプション追加や設定変更など簡便な方法での解決方法に漕ぎ着けなさそうですね… 別のSDカードを購入して確かめてみます。 また、仮想マシンを新規作成して正常に処理できるか、準備に時間がかかりますが確認してみます。
guest

回答2

0

自己解決

別のSDカードを仮想マシンに認識させてコマンドを実行させたら正常に進行・完了しました

○原因
以前のSDカードでは例外なく固まっていた(仮想マシンが一時停止になっていた)のに対して、別のSDカードでは正常に処理が進行・完了したことから、以前のSDカードの初期不良と推測しています。
○解決方法
(以下の手順のうち1および2はVirtualBoxでSDカードを認識させる方法を参考に、VirtualBoxにおける方法を示す)

  1. 既存のSDカードの認識を外す
    1-1:VirtualBoxManagerを管理者として実行し、仮想マシンからの割り当てを除去する
    1-2:VirtualBoxManagerの認識するハードディスクから該当のデバイスを削除する

    PowerShell

    1#該当するハードディスクのUUIDを調べる(VirtualBoxのインストールフォルダにて) 2.\VBoxManage.exe list hdds

    PowerShell

    1#UUIDを通してVirtualBoxManagerからハードディスクを取り除く(VirtualBoxのインストールフォルダにて) 2.\VBoxManage.exe closemedium disk the_UUID
    1-3.エクスプローラーなどからvmdkファイルを削除する
  2. 新たなSDカードを認識させる
    2-1:新たなSDカードに対応するvmdkファイルを作成する

    PowerShell

    1#DeviceIDを調べる 2wmic diskdrive list brief

    PowerShell

    1#vmdkファイルを作成する(VirtualBoxのインストールフォルダにて) 2.\VBoxManage.exe internalcommands createrawvmdk -filename C:\sdcard.vmdk -rawdisk the_DeviceID
    2-2:VirtualBoxManagerを管理者として実行し、仮想マシンのハードディスクに該当するvmdkファイルを追加する
  3. 目的のコマンドを実行する
    該当するディレクトリにて目的のコマンドを入力する
    $ cd raspberrypi3 $ sudo dd if=rpi-basic-image-raspberrypi3.rpi-sdimg of=/dev/sdb bs=1M status=progress
    その結果、以下の出力が得られた
    164+0 records in 164+0 records out 171966464 bytes (172 MB, 164 MiB) copied, 12.4281 s, 13.8 MB/s

検証および原因特定に当たって、コメント・回答を介してsigsegv様ならびにgm300様からお力添えいただきました。ここに感謝の意を表します。

投稿2022/03/29 17:03

solstice

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

出力先を変更して、試してみましょう。オプションを極力減らして、例えばこのようにしてみます。

sudo dd if=conf.local of=/tmp/test.conf.local

この結果、/tmp/test.conf.local が作成されるはずです。作成が確認できたら、次に、bs / status を追加してみます。
bsが必要とは思えませんが、不要でもない気がします。

「軽量なファイルでは完了しますが、ホストOS上からはファイルが確認できません。」が気になります。どのように確認されましたか?
cat /dev/sdb では確認できません。「軽量のファイル」の名前からしてmount もできないと思われます。

期待のコマンドが実行できない原因として思いつくのは、

  1. /dev/sdb の実体が存在しない。sdb であるべきデバイス、この場合は2個目のSATA か、USB メモリが刺さっていない。
  2. sdbは使用中で書き込めない。/dev/sdb のどこかがすでにmount されている。

1.の場合は、sudo fdisk /dev/sdb とかで調べることができます。
2.の場合は、mount で調べることができます。/dev/sdb、/dev/sdb1 がマウントされていないことを調べる。
他には、dmesg で何か問題が報告されていないか調べます。

投稿2022/03/29 01:01

gm300

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問