Извлечение конфига ядра Linux без загрузки с него и другие советы
Опубликовано 28.03.2008
В случае, если при сборке ядра была включена опция «Kernel .config support» (CONFIG_IKCONFIG), файл ядрёной конфигурации .config добавляется в бинарник ядра в гзипованном виде. А если дополнительно отметить еще и «Enable access to .config through /proc/config.gz» (CONFIG_IKCONFIG_PROC), то этот конфиг доступен через /proc/config.gz. Иногда хочется посмотреть, чем одно ядро отличается от другого в плане конфигурации, но перезагружаться или городить виртуальную машину ради того, чтобы посмотреть /proc/config.gz, не хочется. В таком случае помогут два скрипта, входящих в состав архива с исходными текстами ядра. Первый из них, служебный, называется binoffset и предназначен для определения смещения бинарного фрагмента от начала файла. Второй называется extract-ikconfig и служит непосредственно для поиска и извлечения из бинарника ядра гзипованного конфига. Перед запуском необходимо скомпилировать binoffset:
cd /usr/src/linux/scripts gcc -o binoffset binoffset.c
После чего можно натравливать extract-iconfig на ядро:
scripts/extract-ikconfig /path/to/bzImage
Иногда при работе в midnight commander появляется сообщение «The shell is already running the command», не дающее выполнить команду в текущем каталоге. Стандартный способ обхода — Ctrl+O, Ctrl+C, Enter приводит к тому, что mc возвращается в каталог, где была выполнена предыдущая команда, и приходится еще раз переходить в нужный каталог. Проблема обсуждается чуть ли не с самого первого релиза mc, но по каким-то причинам принципиально не может быть решена.
В этом случае помогает выполнение команды «cd -» (после Ctrl+O, Ctrl+C, Enter, Ctrl+O), которая меняет каталог на предыдущий (т.е. в котором мы находились до первого Ctrl+O). (или Alt+Y, как советуют в комментариях)
Регулярное чтение избранных частей из man bash просветляет и приносит несомненную пользу. Недавно поразил коллегу генератором паролей на основе
/usr/share/dict/words:
#!/bin/bash
passwords_count=3
test $1 && echo $1 | grep -q ^[0-9]*$ && passwords_count=$1
words=/usr/share/dict/words
words_count=3
symbols=("," "*" "-" "(" ")" "_" '"' ',' ',')
# prepare words array
declare -a allwords
exec 10< $words
while read LINE <&10; do
allwords[${#allwords[*]}]=$LINE
done
nwords=${#allwords[@]}
for ((k=0;$k<$passwords_count;k++));
do
declare -a words_array
for w in `seq 0 $words_count`; do
words_array[${#words_array[*]}]=${allwords[$(($nwords*$RANDOM/32767))]}
done
passwd=${words_array[0]}
for ((c=1;$c<${#words_array[@]}-1;c++));
do
symbol=${symbols[(($RANDOM*${#symbols[*]}/32767))]}
passwd="${passwd}${symbol}${words_array[$c]}"
done
echo $passwd
unset passwd
unset words_array
done

Спасибо за совет он мне действительно очень кстати)))
[...] я уже писал ранее, в состав исходников ядра Linux входит программа binoffset, с [...]
Есть комбинация alt+y, возвращающая в предыдущий каталог.