AES-NI на Dell Vostro 3360

(jw013 уже дал корректный ответ, но я хочу указать еще на несколько проблем.)

Правая сторона конвейера работает в его собственной подоболочке в ударе (а также большинство других оболочек, при этом исключениями является ATT ksh и zsh). Таким образом, Вы устанавливаете переменные среды в подоболочке, которая выполняет цикл, но не в основном процессе оболочки.

Здесь существует легкая фиксация, которая должна заменить бесполезное использование cat перенаправлением:

while read …; do …; done <"$1"

В целом, если необходимо предварительно обработать вход, поместить цикл и остаток от сценария (по крайней мере, часть, которой нужны замененные переменные) в блоке.

grep '^foo_' "$1" | {
  while read …; do …; done
  do_something
}

Отметьте это в целом, while read line; do … действительно не совсем выполняет итерации по входным строкам. Посмотрите, Почему while IFS= read используемый так часто, вместо IFS=; while read..? для объяснения. Корректная идиома для итерации по входным строкам

while IFS= read -r line; do …

Здесь, удаление продвижения и запаздывающего пробела не имеет значения, так как не должно быть никого, учитывая Ваш демонстрационный вход, но Вам, возможно, понадобится -r избегать расширения обратной косой черты. Это возможно это while read line на самом деле корректный способ считать Ваш вход (но я подозреваю, только если значения переменных не содержат новых строк). Также возможно, что Ваш формат ввода неоднозначен или более сложен для парсинга. Проверьте то, что происходит, если одно из значения переменных содержит символ новой строки, двойную кавычку или обратную косую черту.

Одна точка, где Вы определенно искажаете вход, - при извлечении значения:

val=`echo ${kv#*=} | sed 's/^"\|"$//g'`

Во-первых, необходимо использовать двойные кавычки вокруг подстановки переменных: echo "${kv#*=}"; иначе оболочка выполняет разделение слова и поколение имени файла (т.е. globbing) на нем. Во-вторых, echo надежный путь не состоит в том, чтобы распечатать строку, потому что некоторые строки, которые начинаются с a - рассматриваются как опции, и некоторые оболочки выполняют расширение обратной косой черты на аргументе. Надежный и портативный способ распечатать строку printf %s "${kv#*=}". Кроме того, если значение охватит несколько строк, то sed программа будет действовать на каждого отдельно, который неправ. Это является закрепляемым, но существует более легкий метод, который должен использовать средства обработки строк оболочки: val=${kv#*=}; val=${val#\"}; val=${val%\"}.

Предположение, что вход правильно анализируется с плоскостью read, вот более простой способ проанализировать его, используя в своих интересах IFS установка для разделения каждой строки:

while read name value; do
  value=${value#\"}; value=${value%\"}
  export name="$value"
done <"$1"

3
28.01.2013, 19:16
3 ответа

Проверка по сравнению с этим списком: http://ark.intel.com/search/advanced/?s=t&AESTech=true. Это также могла бы быть опция в Вашем BIOS, хотя я сомневаюсь относительно этого.

0
27.01.2020, 21:45
  • 1
    я проверил. Процессор должен иметь aes-ni согласно этому веб-сайту. В BIOS у меня нет опций как этот. –  Alojzy Bomba 28.01.2013, 19:04
  • 2
    OK, таким образом, Ваш ЦП поддерживает AES-NI. Проверьте свою конфигурацию ядра на строку как CONFIG_CRYPTO_AES_NI_INTEL. Это должно быть скомпилировано в как модуль обычно. –  schaiba 28.01.2013, 20:14
  • 3
    Да, у меня есть такой модуль, но без AES среди флагов CPU я не могу загрузить его: ОШИБКА aesni-intel modprobe: не мог вставить 'aesni_intel': Никакое такое устройство –  Alojzy Bomba 28.01.2013, 20:29
  • 4
    , Вы не являетесь одними - Google, находит несколько хитов на Dell Vostro 3360, не поддерживающем AES-NI. Могло быть это, имеет другой ЦП или просто BIOS, не поддерживающий его так или иначе. –  frostschutz 29.01.2013, 00:07
  • 5
    Если Вы правы, и я начинаю совместно использовать Ваше впечатление, это означает, что Dell является компанией дерьма. Посмотрите на это dell.com/support/drivers/us/en/19 / … После немногих месяц, продукт был выпущен, Dell решил поддерживать всю функцию, данную Intel. –  Alojzy Bomba 29.01.2013, 02:48

Многие компании не активируют опцию AES в ноутбуках. Для моей Asus я нашел решение здесь: http://forum.notebookreview.com/windows-os-software/582628-aes-ni-support-truecrypt-sandy-bridge-problem-15.html#post8002488

Я следовал за этим немного шагов и успешно изменил мой BIOS. Возможно, это поможет Вам также.

0
27.01.2020, 21:45

Никакая потребность проверить сайт Intel,

Просто посмотрите если aes один из Ваших флагов ЦП grep aes /proc/cpuinfo

(Работы для меня: i5 2450 м)

Если Вы получили соответствие, оно поддерживается.

0
27.01.2020, 21:45
  • 1
    для его процессора, информация о веб-сайте Intel говорит, что это поддерживается, но нет такого флага на /proc/cpuinfo. Я думаю, что этим различием является причина, он задал вопросу во-первых –  pqnet 01.09.2014, 00:37

Теги

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