Общий вопрос о `dd`, iso-образах и устройствах linux

Фактически вы никогда не назначаете переменной конкретное имя файла. Что вы делаете, так это устанавливаете для переменной шаблон глобуса. Затем, когда вы передаете переменную в echo , шаблон глобуса раскрывается, так что вы видите выдавленное имя вашего файла. Однако для переменной никогда не было задано конкретное имя файла.

Итак, вам нужен лучший способ получить имя файла. Что-то вроде:

#!/bin/bash

## Make globs that don't match anything expand to a null
## string instead of the glob itself
shopt -s nullglob
## Save the list of files in an array
files=( /some/file/path/$10AS_26x86_64_$2_*.bin )
## If the array is empty
if [ -z $files ]
then
    echo "install archive does not exist."
    exit
## If at least one file was found    
else
    ## Take the first file 
    filename="${files[0]}"
    echo "$filename"
fi

{
  /usr/bin/expect << EOD
  set timeout 20
  spawn "${filename}"

  expect {
      "Press Enter to view the End User License Agreement" {
          send "\r"
          exp_continue
      }
      "More" {
          send " "
          exp_continue
      }
      "Do you accept the End User License Agreement?" {
          send "y\r"
      }
  }
  interact
  expect eof
EOD
}
2
19.06.2018, 16:10
2 ответа

Способ использования ddопределяется тем, как создается файл .iso.

The dd command just reads the contents of file bit by bit (well, block by block) and writes the data to specified device. If the input file is large enough every single bit of data on the usb stick will be overwritten.

Это правильно, но что, если я запустил dd if=/dev/sdb1 of=test.isoпри создании .iso? Или, может быть, запустили что-то вроде dd if=/dev/sdb of=test.iso bs=1M seek=1, из-за чего он пропустил первый 1Mданных?

ddне заботится о базовой схеме разделов, это означает, что то, как вы ее используете, полностью зависит от структуры блочного устройства и данных, которые вы записываете.

2
27.01.2020, 21:58

Если вы ddподключитесь к устройству, вы потеряете свободное место на USB-накопителе, так как DD перезапишет MBR/GPT.

Разделение вашего устройства может позволить записать образ в раздел, что позволит вам сохранить свободное место. Но вам нужно будет настроить ваш менеджер загрузки (grub? ), чтобы начать с этого раздела. Если вы разделите свой диск, у вас будет sdx1, sdx2,..., что позволит вам dd if=your.iso of=/dev/sdx1или раздел, который вы хотите.

Проблема здесь в том, что вы хотите сделать это с установочным диском Windows, и это может быть проблемой. Если для установки Windows требуется DVD-диск, он может не загрузиться, или вам может потребоваться изменить этот образ, чтобы избежать этой проверки. В Linux все проще, так как многие дистрибутивы позволяют запускать сам образ, другим могут потребоваться некоторые хаки, чтобы иметь возможность иметь один USB с множеством дистрибутивов, с которых вы можете начать.

2
27.01.2020, 21:58

Теги

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