Как поменять название ОС в Solaris
6 Август 2010
Сегодня первый перевод из Solaris Infrequently Asked and Obscure Questions – как поменять строки в работающем ядре (How do I modify strings in the running kernel?). Одним из примеров, для чего это нужно – изменение названия операционной системы. Задача интересная, но редко встречающаяся. Иногда это делают по соображениям безопасности, но до конца понять такие соображения я не смог. Далее идет перевод:
Как поменять строки в работающем ядре.
Например, изменить имя и релиз работающей операционной системы (uname -sr).
Для этого необходимо изменить значения структуры ядра utsname.
1. Смотрим файл /usr/include/sys/utsname.h
#define _SYS_NMLN 257 /* 4.0 size of utsname elements */
struct utsname {
char sysname[_SYS_NMLN];
char nodename[_SYS_NMLN];
char release[_SYS_NMLN];
char version[_SYS_NMLN];
char machine[_SYS_NMLN];
};
2. Получаем информацию о текущих значениях структуры:
1. echo "utsname::print" | mdb -k
3. Определяем смещение:
1. echo "0t257=x" | mdb
2. 101
4. Конвертируем строку:
1. echo "FunOS" | od -t x1
2. 0000000 46 75 6e 4f 53 0a
5. Вносим изменения:
1. Внимание: Изменяем работающее ядро! 2. echo "utsname/v 46 75 6e 4f 53" | mdb -kw
6. Конвертируем строку:
1. echo "5.12" | od -t x1
2. 0000000 35 2e 31 32 0a
7. Вносим изменения:
1. Внимание: Изменяем работающее ядро! 2. echo "utsname+0x202/v 35 2e 31 32" | mdb -kw
8. Проверяем результат:
1. Прямо из ядра:
echo "utsname::print" | mdb -k
2. Из утилиты в примере:
/usr/bin/uname -sr
FunOS 5.12
Я проверил, это работает не только в Solaris, но и в OpenSolaris. Вот скриншот OpenSolaris с изменениями в ядре, и актуальной информацией по системе из /etc/release:
Нет похожих записей.
Рубрики: Полезные команды



