Сделайте следующее
vim /home/<username>/.gconf/apps/panel/toplevels/bottom_panel/%gconf.xml
или
vim /home/<username>/.gconf/apps/panel/toplevels/top_panel/%gconf.xml
Если Вы переименовали свою панель, изменение top_panel
или bottom_panel
соответственно.
Искать orientation
раздел
<entry name="orientation" mtime="1356417211" type="string">
<stringvalue>bottom</stringvalue>
</entry>
Изменение bottom
кому: top
, left
или right
.
Можно написать в /dev/random
, так как это часть способа предоставления дополнительных случайных байтов в /dev/random
, но этого недостаточно, вы также должны уведомить систему о наличии дополнительной энтропии с помощью вызова ioctl()
.
Мне нужна была такая же функциональность для тестирования моей программы настройки смарт-карты , так как я не хотел ждать, пока моя мышь/клавиатура сгенерирует достаточно для нескольких вызовов gpg
, которые были сделаны для каждого тестового запуска. Что я сделал, так это запустил программу на Python, которая выполняется параллельно с моими тестами. Естественно, она должна не вообще использоваться для реальной генерации ключей gpg
, так как случайная строка вовсе не случайна (генерируемая системой случайная информация все равно будет чередоваться). Если у вас есть внешний источник для установки строки для random
, то вы должны иметь высокую энтропию. Проверить энтропию можно с помощью:
cat /proc/sys/kernel/random/entropy_avail
The program:
#!/usr/bin/env python
# For testing purposes only
# DO NOT USE THIS, THIS DOES NOT PROVIDE ENTROPY TO /dev/random, JUST BYTES
import fcntl
import time
import struct
RNDADDENTROPY=0x40085203
while True:
random = "3420348024823049823-984230942049832423l4j2l42j"
t = struct.pack("ii32s", 8, 32, random)
with open("/dev/random", mode='wb') as fp:
# as fp has a method fileno(), you can pass it to ioctl
res = fcntl.ioctl(fp, RNDADDENTROPY, t)
time.sleep(0.001)
(Не забудьте убить программу после завершения)
. Обычно он разрабатывается разработчиками ядра и документируется в man 4 random
:
Writing to /dev/random or /dev/urandom will update the entropy pool
with the data written, but this will not result in a higher entropy
count. This means that it will impact the contents read from both
files, but it will not make reads from /dev/random faster.
Энтони уже объяснил, что запись в / dev / random
не увеличивает счетчик энтропии, и показал, как RNDADDENTROPY ioctl (см. ] random (4) ) можно использовать для оценки энтропии. Очевидно, что это не совсем безопасно, поэтому есть альтернатива, когда доступен аппаратный генератор случайных чисел.
Следующие реализации берут 512 байт (4096 бит) случайности из / dev / hwrng
и направляют его в пул энтропии (зачисляя 4 бита энтропии на байт, это мой произвольный выбор) . После этого он вызовет системный вызов select (2) для блокировки при заполнении пула энтропии (описано в справочной странице random (4) ).
Версия Python:
import fcntl, select, struct
with open('/dev/hwrng', 'rb') as hw, open('/dev/random') as rnd:
while True:
d = hw.read(512)
fcntl.ioctl(rnd, 0x40085203, struct.pack('ii', 4 * len(d), len(d)) + d)
select.select([], [rnd], [])
Поскольку в iso Arch Linux не был установлен Python, вот и версия Perl:
open my $hw, "</dev/hwrng" and open my $rnd, "</dev/random" or die;
for (;;) {
my $l = read $hw, my $d, 512;
ioctl $rnd, 0x40085203, pack("ii", 4 * $l, $l) . $d or die;
vec(my $w, fileno $rnd, 1) = 1;
select undef, $w, undef, undef
}
Вероятно, это программа rngd (часть rng-tools ) имеет (непроверенный), за исключением того, что он использует инструменты (Python или Perl), которые уже широко доступны.