デフォルトのコマンドユーティリティを使用してUSBフラッシュドライブにISOを書き込もうとします。私は書いています:
sudo cat path/to/archlinux-version-x86_64.iso > /dev/disk/by-id/usb-My_flash_drive
しかし、私は答えを受けました:
zsh: permission denied: /dev/disk/by-id/usb-Generic_Mass_Storage_C5BB4803F4D97884-0:0
おそらくデバイスに書き込むためにルートを提供する必要がありますか?
直す。解決策:
sudo dd bs=4M if=archlinux-2023.07.01-x86_64.iso of=/dev/disk/by-id/usb-Generic_Mass_Storage_C5BB4803F4D97884-0:0 conv=fsync oflag=direct status=progress
答え1
次のようにコマンドラインを使用する場合:
sudo cat path/to/archlinux-version-x86_64.iso > /dev/disk/by-id/usb-My_flash_drive
シェルは、実際のコマンドの実行を開始する前にリダイレクトの設定を試みます。したがって、このcat path/to/archlinux-version-x86_64.iso
部分のみの影響を受けますsudo
。これはあなたが望むものではないかもしれません。デバイスに書き込む必要があり、通常のsudo
ファイルから読み込む必要はありません(ファイルへの一般的なアクセス権がない場合を除く)。
このコマンドを使用しsudo
てリダイレクトするように並べ替える1つの方法は次のとおりです。
cat path/to/archlinux-version-x86_64.iso | sudo tee /dev/disk/by-id/usb-My_flash_drive >/dev/null
ここで、シェルは、2 つのコマンドを実行する前に、まず 2 つのコマンド間にパイプを設定し、結果出力のリダイレクトを設定します。平行に。 root権限で実行されtee /dev/disk/by-id/usb-My_flash_drive
、入力コピーをフラッシュドライブに渡し、別のコピーを標準出力に渡します。シェルによって設定されたリダイレクトは通常のユーザーアカウントで実行され、特別な権限を必要としないtee
シェルの標準出力を渡します。/dev/null
上記の並べ替えは元のコマンドラインと似ていますが、通常のユーザーとしてファイルを読み取ることができる限り、パイプをまったく使用せずに実行できるcat
ため、「役に立たない使用」と言えます。.iso
sudo tee /dev/disk/by-id/usb-My_flash_drive < path/to/archlinux-version-x86_64.iso > /dev/null