Как добавить мегарепозиторий в Arch Linux

Мало возможностей:

  1. Используйте меньший bs, но не очень маленький:

    dd if=/dev/sdb of=new_image.img bs=512k count=30387
    

    Это не общее решение. Здесь это работает, потому что 15931539456можно разложить на множители.

  2. Используйте нужный bs, читайте больше и усекайте на лету:

    dd if=/dev/sdb bs=4M | head -c 15931539456 >new_image.img
    

    Здесь не нужно count=3799. Ну и не надоdd:

    head -c 15931539456 /dev/sdb >new_image.img
    

    Я ожидаю, что headбудет читать нормальные фрагменты и работать хорошо. Примечание head -cне требуется POSIX.

  3. Используйте желаемое bs, прочитайте больше и сократите позже:

    dd if=/dev/sdb of=new_image.img bs=4M count=3799
    truncate -s 15931539456 new_image.img
    
    Однако

    truncateне является переносимым.

  4. Используйте желаемое bs, читайте меньше; затем прочитайте оставшуюся часть с помощьюbs=1:

    dd if=/dev/sdb of=new_image.img bs=4M count=3798
    offset=$((3798*4*1024*1024))
    remaining=$((15931539456-offset))
    dd if=/dev/sdb of=new_image.img bs=1 skip="$offset" seek="$offset" count="$remaining"
    

Обратите внимание, что в целом ddможет считывать неполный блок, и это все равно увеличивает счет (сравните этот ответ). При чтении с блочного устройства этого, вероятно, не произойдет, но общее решение состоит в том, чтобы всегда указывать iflag=fullblockвсякий раз, когда вы полагаетесь на countи bsбольше, чем 1. К сожалению, fullblockне требуется POSIX,так что ваш ddможет не поддерживать его.

0
22.11.2021, 06:23
1 ответ

Установите SigLevelна Neverили Optional TrustAll.

0
22.11.2021, 10:53

Теги

Похожие вопросы