Извлечение конфига ядра 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, возвращающая в предыдущий каталог.