пятница, 19 сентября 2008 г.

Веселая картинка

Перенос Linux на другой HDD

Честно говоря, мне еще ни разу не приходилось переносить операционную систему с одного жесткого диска на другой. Обычно смена HDD сопровождалась кардинальной сменой всего железа и я, в целях эксперимента, менял дистрибутив. Но случай все-таки представился - на рабочем месте возникла необходимость целиком перенести Ubuntu на другой компьютер, сменив при этом и жесткий диск. Мой случай, правда, оказался одним из самых простых, но думаю вам хоть станет понятно в каком направлении плясать.

Учитывая тот факт, что Ubuntu установлена на IDE жестком диске, а перенести я ее хочу на SATA, манипуляции пришлось производить на компьютере с SATA-контроллером.

Создание разделов на новом диске

Подключив оба диска, я загрузил рабочую Ubuntu. Далее нужно разбить новый жесткий диск. Для этого можно порекомендовать fdisk, cfdisk или графический аналог. Чем проще таблица разделов - тем меньше манипуляций. Не забудьте определить раздел под SWAP. Рекомендовано к использованию:
fdisk /dev/sda
Форматирование нужных разделов

Для этого можно взять консоль или, опять же, жутко краснея и стесняясь, воспользоваться графическим аналогом. Мне от этой жуткой болезни помогла команда:
mkfs.ext3 /dev/sda5
и т.д. для других разделов
Монтирование новых разделов

В общем как вы это сделаете - неважно, важен результат. А в результате у нас должны быть размечены и отформативарованы разделы под перенос данных. Остается их смонтировать.
sudo mkdir sda5
sudo mount -t ext3 /dev/sda5 sda5
и т.д. для других разделов

Перенос данных

У меня случай простой - раздел с Linux всего один и именно его надо перенести.
sudo cp -ax / sda5
Пока что, позевывая, можно отойти попить чаю. Все зависит от объема информации, но думаю минут 15-20 у вас точно будет. Ту же процедуру нужно повторить и для остальных разделов.

Теперь стоит заглянуть в /etc/fstab на новом жестком диске и /boot/grub/menu.lst на предмет соответствия всех разделов и путей к ним. Меня вот повеселило, что Ubuntu при установке не прописал по человечески "/dev/sda5", а завернул что-то брутальное типа "UUID-4565421-54565-...". Но я вылечил эту дурость.

Спасительный круг

Теперь на новом диске есть полная копия вашей рабочей системы со всеми данными, ядрами, демонами и прочими полезными вещами. Но этой копии не хватает одного полезного навыка - умения загружаться.

Отмонтировать, выключится, вынять старый жесткий диск, загрузится в какой-нибудь LiveCD. Хотя зачем в какой-нибудь? Ведь диски с Ubuntu, благодаря Canonical, есть даже в любом селении Монголии.

Установка загрузчика

С некоторых пор я считаю, что лучше GRUB искать ничего и не стоит, да и нормальной альтернативы не вижу, так что дальнейшая методика только для него.
sudo grub
ждемс....
root (hd0,4)
setup (hd0)
Вот и все. Можно загрузится с нового жесткого диска, а если вам не повезло и загрузчик не установлен, то можно снова вернутся в LiveCD, если загрузчик сработал, но ошибка с путями то можно либо вернутся в LiveCD и скорректировать их, либо вписать напрямую в коммандной строке GRUB и скорректировать уже в загрузившейся полноценной системе.

Песни и пляски

Ну вот и все. Где-то около получаса потрачено, а я уже готов вставлять новый жесткий диск в новый компьютер и сразу включаться в работу благодаря полному сохранению моей рабочей системы и привычного окружения.

Восстановление загрузчика Debian после Windows

Итак, строго по теме...
Дано:
a) Незагружающаяся система linux(debian) на разделе /dev/hda5
b) liveCD дистрибутив (Можно основанном на ubuntu debian или любом другом дистрибутиве.)

1.Грузимся с liveCD.
2.В консоли из под рута монтируем раздел с линуксом на винте:
# mount /dev/hda5 /mnt/linux
Если каталога linux нет то создать(команда mkdir /mnt/linux)
3.Открываем MC:
# mc
переходим в левой панели в каталог /dev в правой /mnt/linux/dev и копируем все устройства из /dev/hda* в /mnt/linux/dev
4.Ch-рутимся и выполняем установку загрузчика(grub или lilo):
# chroot /mnt/linux
Для lilo:
# lilo
Для grub:
# grub-install
5.Перегружаемся... Вот и все...

Ускорение загрузки Debian (Linux): отключение неиспользуемых сервисов в Linux

В деле настройки своей системы под себя бывает желание уменьшить время загрузки. Для этого есть много разных средств, но одно из самых доступных и простых - отключение неиспользуемых сервисов в Linux. И для этого совсем не нужно часами править конфиги, ибо есть и графические конфигураторы. Главное - не навредить, как завещал отец медицины.

Итак, после того, как загрузчик Linux найдёт и загрузит ваше ядро, в дело вступает запуск сервисов. Запускается Samba, которая делает ваши директории видимыми по сети (в том числе для пользователей альтернативных систем), CUPS - чтобы вы могли печатать на принтеры, SSHd - чтобы можно было принимать удалённое управление. В общем, всё то, что обеспечивает нам удобную работу, не отвлекая нас от более важных дел.

Однако у дистростроителей представления о том, какие сервисы вам нужны, могут несколько отличаться от ваших. Например, если вы не администратор сети, вам скорее всего не нужны почтовые агенты и службы точного времени. И тем не менее в системе сконфигурированной по умолчанию они продолжают запускаться. Сейчас мы это быстро поправим.

ПРЕДУПРЕЖДЕНИЕ!!!
СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ ВСЕГО КАТАЛОГА /ETC НА ВСЯКИЙ СЛУЧАЙ!!! В СЛУЧАЕ НЕУДАЧИ ВЫ МОЖЕТЕ ПОЛУЧИТЬ СИСТЕМУ, КОТОРАЯ НЕ ЗАГРУЖАЕТСЯ!!!


И ещё одно предупреждение
Здесь главное не перестараться и отключать только те сервисы в Linux, назначение которых вы знаете и точно уверены, что они вам не потребуются в ближайшем обозримом будущем. Скорее всего, вам всё-таки потребуются такие сервисы, как login и cron, так что будьте аккуратны.

Управление сервисами
Для того, чтобы долго не елозить напильником по конфигурационным файлам, ставим графический конфигуратор. Поискав по несметным сокровищницам репозиториев Debian GNU/Linux, находим:
# apt-cache search boot up manager
bum - graphical runlevel editor
Собственно, программа маленькая, ставим:
aptitude install bum
Программа при запуске ожидаемо требует рутовых привилегий:
sudo bum
Появится красивая и удобная графическая оболочка, по умолчанию в "простом" варианте:

Удобно, что о каждом сервисе сказано, что он делает. Так же показано текущее состояние сервиса - работает, неактивен или информация о его состоянии недоступна. Включаем или выключаем соответствующие сервисы, и нажимаем "Применить" - изменения вступят в силу после перезагрузки или сразу же.

В "продвинутом" варианте вы получаете не только управление сервисами, но и включением \ отключением самих скриптов конфигурирования отдельных сервисов. Как и прежде, будьте аккуратны - я не несу ответственности за порушенные "ынтырпрайзы" и отказывающиеся загружаться "продакшны" :-)

Если руки тянутся к напильнику...
На всякий случай напомню, что в Debian стартовые скприты аккуратно сложены в директории /etc/init.d/ а в каталогах
/etc/rc0.d
......
/etc/rc6.d
содержатся ссылки на соответствующие скрипты в /etc/init.d/
Соответственно, в Debian GNU/Linux номера runlevels распределены следующим образом:
0 System Halt
1 Single user
2 Full multi-user mode (по умолчанию)
3-5 То же что и 2
6 System Reboot
И наконец несколько слов об асинхронной загрузке Linux. Это технически можно сделать, поправив конфиг /etc/init.d/rc до такого состояния:
# Specify method used to enable concurrent init.d scripts.
# Valid options are 'none', 'shell' and 'startpar'
CONCURRENCY=shell
Конкретно в моём случае ускорение составило около 2-3 секунд, что в общем меньше ожидаемого. А вариант "startpar" вообще привёл к тому, что система отказалась загружаться. Имея под рукой Knoppix Linux я, конечно, всё быстро поправил, но тем не менее.

Есть и более радикальные методы ускорения загрузки, такие как initNG. Но об этом в другой раз.

Ссылка на оригинал