[ Content | View menu ]

Извлечение конфига ядра 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
«
»

3 комментария

Write a comment - TrackBack - RSS Comments

  1. Comment by Mba Pro:

    Спасибо за совет он мне действительно очень кстати)))

    17.06.2008 @ 20:41
  2. Pingback from Как распаковать vmlinuz и вытащить оттуда версию компилятора | Bappoy’s blog:

    [...] я уже писал ранее, в состав исходников ядра Linux входит программа binoffset, с [...]

    05.09.2008 @ 12:00
  3. Comment by kolen:

    В этом случае помогает выполнение команды “cd -” (после Ctrl+O, Ctrl+C, Enter, Ctrl+O), которая меняет каталог на предыдущий (т.е. в котором мы находились до первого Ctrl+O).

    Есть комбинация alt+y, возвращающая в предыдущий каталог.

    17.11.2008 @ 13:57
Write comment

Я не робот.