아치 리눅스 위키에서:https://wiki.archlinux.org/index.php/USB_flash_installation_media
# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync
[...] 하다~ 아니다USB 드라이브를 당기기 전에 동기화가 완료되지 않았습니다.
나는 알고 싶다
- 그것은 무엇을 합니까?
- 생략하면 어떤 결과가 발생하나요?
노트
dd
선택사항과 함께 사용되는 명령 status=progress
:
tar -xzOf archlinux-2016-09-03-dual.iso | dd of=/dev/disk2 bs=4M status=progress && sync
아니면 pv
진행을 위해 사용
tar -xzOf archlinux-2016-09-03-dual.iso | pv | dd of=/dev/disk2 bs=4M && sync
답변1
는 dd
장치에 쓸 때 커널 디스크 캐시를 우회하지 않으므로 완료 USB
시 데이터의 일부가 아직 스틱 에 기록되지 않을 수 있습니다 dd
. USB
그 순간 스틱의 플러그를 뽑으면 USB
스틱의 내용이 일관되지 않게 됩니다. 따라서 시스템이 이 USB
스틱에서 부팅하지 못할 수도 있습니다.
Sync
아직 캐시에 남아 있는 데이터를 장치로 플러시합니다.
호출하는 대신 의 변환 옵션을 sync
사용할 수 있습니다 .fdatasync
dd
fdatasync
완료하기 전에 물리적으로 출력 파일 데이터 쓰기
귀하의 경우 명령은 다음과 같습니다.
tar -xzOf archlinux-2016-09-03-dual.iso | \
dd of=/dev/disk2 bs=4M status=progress conv=fdatasync
make conv=fdatasync
는 종료 직전에 전송이 끝날 때 dd
효과적으로 시스템 호출을 호출합니다 (나는 이것을 의 소스에서 확인했습니다).fdatasync()
dd
dd
이는 dd
명시적으로 지시하지 않는 한 캐시를 우회하거나 플러시하지 않음을 확인합니다.
답변2
sync(1) 매뉴얼 페이지에서: "sync - 캐시된 쓰기를 영구 저장소에 동기화". 기본적으로 sync
모든 데이터가 캐시에서 스틱에 기록되었는지 확인합니다.