Google Analytics

вторник, 1 марта 2011 г.

Установка Debian из Linux используя debootstrap

Внимание, эту статью я писал для личного пользования. Она не может служить заменой официальному руководству, это всего лишь заметка о моём опыте по установке Debian из Linux. Заметка позволит вам установить Debian из другой Linux-системы, но в случае вопросов сверяйтесь с официалиным руководством.

Определяемся, по силам ли нам данное дело. И стоит ли овчинка выделки?

Для начала определимся, кому такая установка вообще подходит. Если вы уже имеете какой-либо Linux(Live CD, загрузочный USB или установленный дистрибутив), и при этом занимаетесь своими делами в этой системе, и вам неохота записывать загрузочный диск, ждать пока установится новая система, и т.д. - этот способ для вас.

Плюсы данного подхода:
  1. Вы остаётесь в своей системе, можете смотреть видео, общаться, читать книжку или создавать программу, и при этом устанавливать систему.
  2. Вам не нужно иметь инсталляционный носитель.
  3. Это очень гибкий способ установки, и вы её контролируете от начала и до загрузки готовой системы.
  4. Вы можете сразу установить все нужные дополнительно вам пакеты.
Минусы данного похода:
  1. Установка может занять больше времени.
  2. Все действия и их порядок абсолютно зависят от вас. Будьте осторожны, ведь можно накосячить:)
  3. Руководства по установке и настройке различных аспектов могут не соответствовать современным реалиям.
  4. Какая-то мелочь(при установке таким образом ArchLinux”a я всего лишь в конфигурационном файле забыл один восклицатеьный знак, в результате пол-часа не мог понять, почему не работает сеть)

Подготовка к развёртыванию базовой системы.

Итак, у вас есть компьютер с местом на винте, операционная система Linux с подключеннием к интернету и желание установить Debian из вашего Linux?

Для начала надо подготовить разделы на винте. Есть много разных способов разбиения диска. Я удалил на своём винте пару разделов, и буду использовать неразмеченное место. Так-же вы можете использовать resize2fs, parted, gparted или ntfsresize для уменьшения какого-то из ваших разделов. А неразмеченное место выделить для debian.

Один раздел мы отдаём корню файловой системы. Кроме того, желательно выделить отдельный раздел для home, и раздел для подкачки.

Как изменять и создавать разделы, я думаю известно. Для новичков очень удобен Gparted, для продвинутых юзеров консольные утилиты. Результат по любому будет тем же.

Для установки Debian, и созданных на основе данного дистрибутива дистрибутивов, используют официальное средство развёртывания базовой системы - утилиту debootstrap.

Если вы используете Debian-based дистрибутив в качестве базового дистрибутива, с которого будет производится установка, вы должны установить данную программу командой:

 
apt-get update
apt-get install debootstrap

Кроме того можно использовать alien для конвертации deb-пакета в другие форматы пакетов, или просто распаковать данный пакет командой:

mkdir debootstrap
cd debootstrap
ar -x debootstrap_0.X.X_all.deb
cd /
zcat /full-path-to-debootstrap/debootstrap/data.tar.gz | tar xv

Создаю точку монтирования для корня файловой системы устанавливаемого Debian:

mkdir /mnt/debian

Монтируем нужный раздел в точку монтирования.

mount /dev/debianvg/debian /mnt/debian

Разворачиваем базовую систему в точку монтирования.

Начинаем разворачивание базовой системы Debian в точку монтирования. Важно обратить внимание на архитектуру, вместо amd64 может быть alphaarmarmelhppai386ia64m68kmipsmipselpowerpcs390 или sparc. Часто это i386, реже arm, остальное вообще экзотика. Вместо squeeze может быть другая ветка, например sid(unstable), или unstable/experimental/testing.

Вместо http://ftp.us.debian.org/debian выберите наиболее быстрое зеркало из ближайших к вам в списке зеркал http://www.debian.org/mirror/list.

debootstrap --arch amd64 squeeze  /mnt/debian http://ftp.us.debian.org/debian
На всякий случай стоит подмонтировать эти части рабочей файловой системы в вашу устанавливаемую систему. Но данный шаг не является обязательным, если вы не будете устанавливать Grub.
 
 mount -t proc proc /mnt/debian/proc
 mount -t sysfs sys /mnt/debian/sys
 mount -o bind /dev /mnt/debian/dev

Chroot'имся в новую систему.

LANG=C chroot /mnt/debian /bin/bash

Настраиваем сетевые интерфейсы:

nano /etc/network/interfaces

Прописываем адресса DNS и директиву поиска.

nano /etc/resolv.conf

Настраиваем имя хоста, где HostName - имя вашего хоста.

echo HostName > /etc/hostname

И создаём файл /etc/hosts вида описывающий хосты, примерно такого вида:

127.0.0.1 localhost
127.0.1.1 HostName

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Где HostName - всё тоже имя вашего хоста, остальное оставьте так, как в примере.

Настраиваем файловую систему:

nano /etc/fstab

Пример:

# файл. система            точка монтир.  тип   параметры      дамп  проход
/dev/debianvg/debian       /              ext4  defaults          0  1
/dev/disk/by-label/Seagate /mnt/Seagate   ext4  defaults          0  2  
/dev/debianvg/swap         none           swap  sw                0  0 
proc                       /proc          proc  defaults          0  0
/dev/debianvg/lucentcode   /home          ext4  rw,nosuid,nodev   0  2

Важно не забыть настроить proc, потому что иначе могут быть проблеммы с установкой и эксплуатацией системы.

Не забываем про команду mount -a, это смонтирует все файловые системы. Я как-то забыл это сделать после изменения fstab, в результате долго не мог понять что это у меня за проблеммы с установкой.

Настройка символических ссылок на CD-ROM:

cd /media mkdir cdrom0 ln -s cdrom0 cdrom cd / ln -s media/cdrom

Настраиваем время

Редактируем /etc/default/rcS, настраивая аппаратные часы, я обычно указываю для них UTC, а локальное время с учётом часовых поясов -забота системы.

nano /etc/default/rcS

Настраиваем часовой пояс и т.д.

dpkg-reconfigure tzdata

Настраиваем локали и системную(консольную) клавиатуру

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

aptitude install locales
dpkg-reconfigure locales

Настройка консольной клавиатуры , для вашей локали. Я указываю qwerty и американский английский.

aptitude install console-data
dpkg-reconfigure console-data

Установка ядра

Ищем пакет linux-image, доступной версии.

apt-cache search linux-image

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

aptitude install linux-image-2.6.32-5-amd64

Ставим нужные нам пакеты, для поддержки LVM2 и создания initramfs. Это нужно мне, но если вы используете обычные разделы, вам нет смысла ставить lvm2

aptitude install initramfs-tools lvm2 dmsetup

Задаём пароль root, и создаём себе пользовательский аккаунт.

Задаём пароль для аккаунта root.

passwd  root

Создаём пользователя, вместо username укажите своё имя пользователя.

adduser username

Я использую группу admin, которой указываю права, сходные с adm. Привычка, делать это не обязательно.

groupadd admin

Добавляем нашего пользователя к группе.

usermod -G admin username

Устанавливаем пакет sudo, и добавляем пользователя к группе sudo.

apt-get install sudo
usermod -G sudo username

Используем команду

chown lucentcode /home
для смены владельца директории, или
chgrp users /home
для смены группы владельцев директории.

И, наконец устанавливаем режим доступа к директории:

chmod 777 /home

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

aptitude install grub2
grub-install --rechek /dev/вашдиск 

Если у вас несколько разных дистрибутивов и вы не хотите разводить беспорядок в вашем grub.cfg, то имеет смысл устанавливать несколько различных загрузчиков, и использовать chainload. Для этого сделайте отдельный раздел для загрузчика первого уровня, и используйте команду:

grub-install --boot-directory=/mnt/grub --no-floppy --recheck  /dev/disk/by-label/grub

Где /mnt/grub - это каталог, в который вы подмонтируете ваш раздел. А /dev/disk/by-label/grub - это устройство, представляющее ваш раздел в каталоге /dev.

Затем для каждго из ваших дистрибутивов используйте команду:

grub-install --rechek /dev/раздел с корнем вашей системы

Или, если вы не хотите записывать grub2 в загрузочную область раздела:

grub-install --grub-setup=/bin/true --boot-directory=/boot --no-floppy --recheck /dev/раздел с корнем вашей системы.

Тогда для загрузки вашей системы надо будет в первичном загрузчике grub2(который на отдельном разделе) в grub.cfg прописать примерно следующее:

Вариант для загрузки меню второго уровня, в случае если вы не знаете, что грузить: загрузчик второго уровня, или core.img

menuentry "Наш Linux" {
set root=(ваш диск )
configfile /boot/grub/grub.cfg
}

Или используя chainload:

menuentry "Наш Linux" {
set root=(ваш диск )
chainloader +1
}

Используя core.img:

menuentry "Наш Linux" {
set root=(ваш диск )
multiboot /boot/grub/core.img
}

Установка дополнительных пакетов

Установим драйвер для нашей видеокарты:

aptitude search nvidia
aptitude install nvidia-va-driver

Для установки gnome, установите его командой:

aptitude install gnome

Для установки KDE используем команду:

aptitude install kde

Как варианты, возможен выбор пакетов kde-full(его устанавливает оставленный для совместимости пакет kde), или установить kde-core. Последний вариант предпочтительней, т.к. вы получаете только основные пакеты, а затем установите только то, что вам нужно.

aptitude install xfce4

Возможно, вам больше по душе openbox, fxkb и tint2. Или другое, тоже минималистичное окружение - все они ставятся аналогично, и после перезагруки сразу будут вам доступны.

Установите остальные, нужные вам пакеты, перечисляя их через пробел.

aptitude install пакет1 пакет2 пакет3

Поздравляю, после перезагрузки у вы попадёте в простую(нет многих прикольных наворотов их сферы юзабилити, которые есть в некоторых других системах, вроде Ubuntu), но быструю и гибкую систему.

Вот моя система, после перезагрузки.

4 комментария:

Nikolay комментирует...

Привет
Пробую повторить подвиг, но затыкаюсь на fstab
Собственно проблема в том что после chroot у меня корень не показывает что он примонтирован и потом при установке ядра ругается на это. После перезагрузки новая система не поднимается, и старая тоже(

Andrei Gutu комментирует...

Этот шаг вы успешно выполнили? Или были ошибки? Иногда ядро отказывается ставится, если пропустить данный этап установки.
mount -t proc proc /mnt/debian/proc
mount -t sysfs sys /mnt/debian/sys
mount -o bind /dev /mnt/debian/dev

kellgarr комментирует...

Здравствуйте! Что думаете на счет данных, на мой взгляд полезных, советов . о Debian. Mount и Fdisk. По мне так в этом посте полностью раскрыт данный вопрос.

Andrei Gutu комментирует...

Для новичков в самый раз. Но есть некоторые моменты, которые не получили должного освещения. Это необходимость указывать тип ФС при монтировании(в некоторых случаях), и использование опции -o для указания кодировки(для старых разделов с древними ФС это иногда обязательно, а то вместо имён файлов увидите кракозябры). Кроме того, монтировать устройство можно и через /dev/disk/by-label и /dev/disk/by-uuid - лично я предпочитаю использовать эти методы, ведь зная метку диска, можно не лезть каждый раз в fdisk -l. А запомнить имя диска и использовать его не проверив вывод в fdisk опасно, можно не тот диск использовать. При подключении, и отключении новых жёстких дисков, расположение их в /dev/ меняется. Был раздел sdb2, может стать sdc2:)