вторник, 18 августа 2009 г.

Скрипт установки Ubuntu Linux с жёсткого диска.

Автор: Slimer Взято: тут

Никогда не любил устанавливать Ubuntu с Live-CD/DVD. Иногда может быть диск поцарапан и установка прерывается на самом интересном месте, музыку не послушаешь, фильмы не посмотришь. Я устанавливаю Ubuntu из iso-образа со своего жесткого диска на другой винчестер или раздел. Читая раньше в инете статьи, как ставить с жесткого диска, я просто слепо следовал инструкциям, копируя и выполняя команды. Бывали проблемы с загрузчиком grub, приходилось дополнительно искать в интернете решения, как исправить эти ошибки. Затем, чтобы не мучаться, я сделал свой скрипт установки.
Задача: Нужно, используя уже установленную Ubuntu, установить систему на другой винчестер.
Решение:
Для начала раздел, куда будет ставиться Ubuntu, отформатируйте в Редакторе разделов (gparted) и установите на разделе атрибут «boot», иначе после установки компьютер скажет INSERT SYSTEM DISK или что то в этом роде.


Запомните его путь (например /dev/sda1). Разархивированный архив со скриптами и всеми файлами надо положить в папку /home/setup. Это важно! Иначе скрипт не выполнится. Если не нравится местоположение скрипта, просмотрите скрипт и исправьте пути на свои. Разобраться в нем не сложно.

Первый файл setup.sh Его содержание:
#!/bin/bash
disk=/dev/sdb3 #раздел на который будет ставиться убунта
version=jaunty #версия убунты.
arch=i386 #архитектура
path=/home/slimer/distr/ubuntu-9.04-alternate-i386.iso #путь до вашего образа Ubuntu
pathstp=/home/setup #измените путь на тот, куда вы разахивировали архив.
#это все переменные, изменяйте их значение в зависимости от раздела и версии убунты. в целом скрипт будет работать.
mkdir /newubuntu #создание папки для монтирования новой системы
mount $disk /newubuntu #монтирование раздела куда будет ставиться Ubuntu
apt-get install debootstrap -y #установка debootstrap'а, если у кого он не установлен...
mkdir /mnt/cd #создание папки для монтирования образа Ubuntu
mount -o loop $path /mnt/cd/ #монтирование образа ubuntu
debootstrap --arch $arch $version /newubuntu file:/mnt/cd #Идет установка базовой системы убунту на новый винчестер
cp /etc/fstab /newubuntu/etc/fstab #копируется ваш fstab в новую систему
cp /etc/hostname /newubuntu/etc/hostname #копируется ваш hostname в новую систему
cp /etc/hosts /newubuntu/etc/hosts #копируется ваш hosts в новую систему
cp $pathstp/sourcescd /newubuntu/etc/apt/sources.list #источники пакетов из образа
cp $pathstp/sources.list /newubuntu/etc/sources.inet #на будущее копируется источники из интернета
cp $pathstp/sudoers /newubuntu/etc/sudoers #файл sudoers копируется в вашу новую систему
mkdir /newubuntu/home/distr/
cp $pathstp/chrootsetup.sh /newubuntu/home/distr/ #копирование второй части установки внутрь новой системы
cp $path /newubuntu/home/distr #пригодится нам еще образ
mount -o bind /dev /newubuntu/dev #необходимо для установки GRUB
mount -o bind /proc /newubuntu/proc #необходимо для вообще работы новой системы
LANG= chroot /newubuntu /home/distr/chrootsetup.sh #переход к выполнению скрипта уже в новой системе
    Второй файл chrootsetup.sh
    #!/bin/bash
    user=slimer #имя будущего юзера
    disk=/dev/sdb3 #раздел на который будет ставиться убунту.
    obraz=ubuntu-9.04-alternate-i386.iso

    mount -t sysfs sysfs /sys #монтирование sysfs
    dpkg-reconfigure console-setup #настройка языка в консоли и всего прочего
    mkdir /mnt/cd #создание папки для монтирования образа
    mount -o loop /home/distr/$obraz /mnt/cd #монтирование образа
    apt-get update #получение пакетов из образа
    apt-get install ubuntu-standard grub linux-image linux-image-generic linux-headers-generic build-essential ssh samba -y #установка важных и нужных пакетов
    apt-get install ubuntu-desktop gnome-user-guide-ru language-pack-gnome-ru language-pack-ru -y #установка gnome
    #apt-get install xubuntu-desktop -y #у кого образ xubuntu раскоментируйте эту строчку и закомментируйте предыдущюю
    apt-get install kubuntu-desktop -y #у кого образ kubuntu раскоментируйте эту строчку и закомментируйте 2 предыдущих
    cp /proc/mounts /etc/mtab #необходимо для grub
    grub-install --recheck $disk #установка grub
    echo "Добавление Юзера. Сейчас вам будет предложено ввести пароль и свои данные"
    adduser $user #создание пользователя
    addgroup --system admin #создание группы
    adduser $user admin #добавление юзера в группу админ
    cp /etc/apt/sources.inet /etc/apt/sources.list #Замена источников с диска на источники с интернета
    apt-get update
    apt-get purge ekiga evolution evolution-common evolution-data-server pidgin pidgin-data transmission-common rhythmbox totem totem-common -y #удаляю всякую чепуху ненужную. можете закомментировать.
    apt-get dist-upgrade -y
    Содержание /home/setup/sourcescd должно быть примерно таким:
    deb file:///mnt/cd/ jaunty restricted universe main multiverse stable unstable
    Идем дальше. После того как установилось, редактируем файл fstab, который находится в /newubuntu/etc/. В одной вкладке терминала пишем:
    ls -l /dev/disk/by-uuid
    Через редактор разделов легко разобраться что есть что и подправить под свои нужды fstab, желательно по UUID, а то эти все /dev/sdxx не очень надежны и не постоянны. После того, как закончили, выполняем команду:
    sudo LANG= chroot /newubuntu /bin/bash
    sudo update-grub

    Создается файл menu.lst. По усмотрению, можете поправить /etc/hosts, hostname…
    Вроде бы все. Скрипт примитивный. Если где ошибся — исправляйте!
    Повторю еще раз: ПРОСМОТРИТЕ СКРИПТ И ИСПРАВЬТЕ МОИ ПУТИ НА СВОИ.
    Не забудьте присвоить скриптам атрибут исполнения:
    chmod +x setup.sh
    chmod +x chrootsetup.sh

    И все =) Запустите файл setup.sh из папки /home/setup/ и откиньтесь на спинку кресла идите пить чай или смотреть фильм, но не забудьте присматривать за выполнением скрипта. Пока он выполняется, будут выдаваться кое-какие вопросы. Например пароль, язык.

    Удачи!

    Комментариев нет: