я, конечно, ответил leave достаточно жестко, и вдобавок не объяснил почему так
а проблема в том, что хомячки, исповедующие подход «будем хавать не глядя» вредят не только себе, но и обществу в целом
пример:
почему в типовом ларьке продают якобы йогурт, а на самом деле смесь эмульгаторов, загустителей, стабилизаторов и красителей с небольшой добавкой чего-то, как-то связанного с молоком?
именно так — «что-то связанное с молоком» может быть просто молочной сывороткой, оставшейся от приготовления творога, гы-гы-гы — это рецептура т.н. «фругурта»
и почему чистый йогурт в типовом ларьке не купить?
потому, что ПИПЛ ХАВАЕТ НЕ ГЛЯДЯ на мелкий текст, где написан состав, возможно, именно под лозунгом «читать мелкий текст? с таким подходом лучше сразу удавиться»
а производитель и продавец выдают ИМЕННО то, что пипл хавает — и это *совершенно* правильно, кстати
а у тех, кто не хочет есть смесь эмульгаторов, загустителей, стабилизаторов, красителей и отходов от производства творога — начинаются проблемы с покупкой
а у производителей чистого йогурта и продавцов чистого йогурта — проблемы с продажей
***************** а теперь возвращаемся к rdrand
нормальный юниксовый подход в данном случае будет «если у процессора есть инструкция rdrand, то вот вам major и minor коды, создавайте /dev/rdrand, и юзайте в меру своей паранойи»
мера моей паранойи подсказывает, что можно написать демона rdrandd, который при низкой загрузке машины будет писать выхлоп /dev/rdrand в многогигабайтный файл, который уже через некоторое время будет использоваться для увеличения энтропии, причем вовсе не обязательно на той машине, на которой он создавался
но нет, торвальдс хочет загнать нас к счастью, присобачив rdrand и тем кому он нужен, и тем, кому не нужен
*** дополнение по результату обсуждения: судя по
http://lxr.free-electrons.com/source/include/linux/random.h
http://lxr.free-electrons.com/source/arch/x86/include/asm/archrandom.h
похоже все же *можно* rdrand отключить через CONFIG_ARCH_RANDOM, но в последнем файле, кстати, есть одна неясность, навевающая очередные сомнения:
31 #define RDRAND_RETRY_LOOPS 10
32
33 #define RDRAND_INT ".byte 0x0f,0xc7,0xf0"
34 #ifdef CONFIG_X86_64
35 # define RDRAND_LONG ".byte 0x48,0x0f,0xc7,0xf0"
36 #else
37 # define RDRAND_LONG RDRAND_INT
38 #endif
39
40 #ifdef CONFIG_ARCH_RANDOM
вопрос: какого хрена константы и строки оказались вне «#ifdef CONFIG_ARCH_RANDOM»? чтобы было можно взять, и втихую вколбасить куда-нить rdrand, даже если CONFIG_ARCH_RANDOM не определена, так?