Решения тех проблем, с которым мне приходилось сталкиваться.

среда, 3 декабря 2008 г.

Как сделать hex-dump

Иногда бывает нужно заглянуть внутрь файла на уровне hex-dump. Обычно на помощь приходит mc или другие GUI-утилиты (например - ghex).
А то в же время в почти всех *nix дистрибутивах есть простая консольная утилита xxd. По умолчанию она "дампит" входной поток в выходной. Но самое главное ее свойство - она умеет выполнять обратное преобразование. Т.е. генерить из дампа бинарный файл.

PS: когда-то я именно так спасал стертый MBR... :)

вторник, 11 ноября 2008 г.

восстановление забытого пароля

В обычном линуксе есть т.н. single user mode. Загружается добавление параметра single в строку параметров загрузчика. В убунту это загружает Recovery Mode, которые не совсем то.

Самый просто способ сменить пароль - отредактировать параметры загрузки.
В меню grub нажимае 'e', открывается редактор, стираем ro quiet splash, вместо этого добавляем rw init=/bin/bash. Потом Enter, для сохранения изменений и 'b' для загрузки.

После старта ядра будет смонтирована корневая система на запись и запустится bash. Ну а далее все как обычно:

passwd user

UPD: Раньше (или сейчас, но для других дистрибутивов) прокатывал параметр single в параметрах загрузки. Но для новых версий убунты его недостаточно.

среда, 29 октября 2008 г.

Версия ubuntu

Содержится обычно в файле /etc/issue. На самом деле этот файл предназначен для сообщения некой информации пользователям перед в входом в систему. Ну а ubuntu как раз обычно и выводит в качестве такого сообщения номер версии.
Кстати, а для вывода информации пользователям после входа в систему есть файл - /etc/motd. Иногда это симлинк на другой файл, периодически обновляемый, таким образом можно организовать отображение меняющихся "полезных советов".
UPD: В комментариях подсказали команду lsb_release (print distribution-specific information). С ключом -a выводит и версию и кодовое название дистрибутива.


lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 8.04.2
Release: 8.04
Codename: hardy

среда, 15 октября 2008 г.

Определить uuid диска

Нашел два способа.
Первый:

vol_id --uuid /dev/sda1

Второй:
ls -l /dev/disk/by-uuid

Во втором случае выводятся все известные uuid, ссылающиеся на реальные блочные устройства.

вторник, 14 октября 2008 г.

Перенумерация сетевых интерфейсов

Если порядок именования интерфейсов (что eth0, а что eth1 и так далее) не устраивает, то исправить ситуацию можно редактированием файла /etc/udev/rules.d/70-persistent-net.rules. Там идет привязка MAC адреса к имени устройства.

Язык интерфейса и локаль

Я уже писал про разницу между локалью и языком интерфейса, а недавно самому пришлось вспоминать куда чего прописывать.
Итак, свежеустановленная ubuntu 8.04.1. Требуется иметь английский интерфейс для меню и программ, но русскую локаль. Так как я один пользователь, то прописываю настройки глобально, в /etc/environment

LANG=ru_RU.utf8
LANGUAGE=en_US.utf8

После перезагрузки выясняется, что не работает - язык интерфейса по-прежнему русский. Переменная LANGUAGE вообще не определена. После долгих копаний обнаруживается, что это дело рук gdm. Уже не знаю почему, но он сравнивает значение LANGUAGE и GDM_LANG и, если они не совпадают, сбрасывает LANGUAGE. GDM_LANG же берется или из ~/.dmrc или из LANG или можно выбрать в меню экрана входа.
Т.е. пришлось искать место, где сделать установку LANGUAGE в рамках пользователя, после gdm, но до остальных гномовских приложений. К счастью, старые правила еще работают. Таким местом стало ~/.gnomerc

вторник, 8 июля 2008 г.

Модули ядра

Загрузить модуль:

modprobe <название модуля>

Выгрузить модуль:
modprobe -r <название модуля>

Список всех модулей:
modprobe -l

Список загруженных модулей:
lsmod

Получить краткую информацию о конкретном модуле:
modinfo <название модуля>


Также список модулей можно получить командой find, если в критериях задать поиск в /lib/modules/версия ядра/ файлов с шаблоном *.ko