Пользователь
0,0
рейтинг
9 августа 2013 в 15:48

Администрирование → Устанавливаем любой Linux дистрибутив на Digital Ocean tutorial



Digital Ocean — лоукостер на рынке облачных VPS провайдеров. Пользуется технологией виртуализации KVM. Хорош по соотношению цена/качество и бла-бла-бла, вы сами всё это знаете.

Но есть в нём и несколько минусов, одним из которых является ограничение в поддерживаемых операционных системах. Официальная позиция хостера состоит в том, что место на дисках в дроплетах (образах виртуальных машин) может быть расширено из панели управления без необходимости переустановки системы, поэтому загрузчик туда лучше не ставить. В связи с этим, libvirt не читает загрузчик внутри образа, а использует предустановленное в панели управления ядро с хостовой машины.

Поддержку загрузки пользовательских ядер они обещают сделать со дня на день… уже чуть больше года.

Мы ждать и клянчить не будем.

По сути, всё просто и сводится к трём простым этапам:
  • Создаём дроплет из любого образа.
    Сейчас поддерживаются: Ubuntu, CentOS, Debian, Arch, Fedora
  • Разворачиваем образ желаемого дистрибутива.
  • Снабжаем его скриптом подмены ядра.


Теперь подробнее о жонглировании пингвинами в условиях плохой видимости.

Я буду показывать на примере Gentoo. Но подход применим и для любой другой слаки, главное — соблюсти битность.

Live fast, die young


Разворачиваем дроплет на Ubuntu 13.04 x64.

Скачиваем и распаковываем образ новой ОС в /root/gentoo, так как тремя строчками ниже сделать это будет гораздо сложнее. В моём случае это gentoo stage. Я использовал stage3-amd64-hardened+nomultilib-20130801.tar.bz2.

Теперь устанавливаем mc: apt-get install mc. Запускаем оной.

Для чего это надо? Дело в том, что у mc свой набор команд для работы с файлами и он не пользуется системными mv, cp и пр. Эта мелкая пакость хитрость позволит нам перенести/удалить директории рабочей системы.

Итак, перемещаем (джедаи удаляют) из корня в /root/ubuntu всё, кроме /dev, /sys, /proc, /run, /tmp и /root.

Ура, мы убили Ubuntu.

Новые мозги Страшилы


Переносим всё из /root/gentoo в /

Прописываем в /etc/ настройки сети, имя хоста, поднятие sshd и прочее необходимое вам для комфортной консольной жизни. Не забудьте про пароль рута.

Уже сейчас можно перезагрузить дроплет и получить рабочий образ в стадии лёгкой шизофрении:

prometheus ~ # uname -a
Linux prometheus 3.8.0-19-generic #30-Ubuntu SMP Wed May 1 16:35:23 UTC 2013 x86_64 QEMU Virtual CPU version 1.0 GenuineIntel GNU/Linux

prometheus ~ # lsb_release -a
LSB Version: n/a
Distributor ID: Gentoo
Description: NAME=Gentoo
Release: n/a
Codename: n/a

Второй этап на этом считаем успешно завершенным.



Round 3. Fight.


Подмена ядра.

Для этой цели почти десятилетие назад была реализована технология kexec. Её и будем эксплуатировать: emerge sys-apps/kexec-tools; rc-update add kexec

Как обычно собираем, настраиваем и бросаем в /boot ядро:

emerge hardened-sources

cd /usr/src/linux; make menuconfig && make && make modules_install && make install

Чтобы kexec его без лишних телодвижений нашел, создаём симлинки в /boot:
ln -s vmlinuz-3.10.5-hardened-gnu vmlinuz
ln -s config-3.10.5-hardened-gnu config
ln -s System.map-3.10.5-hardened-gnu System.map

Теперь можно попробовать загрузить наше новое ядро:
/etc/init.d/kexec start && mount -o ro,remount / && kexec -e
или
/etc/init.d/kexec start && reboot

Ещё немножко облегчим себе жизнь и будем грузить наше ядро при старте системы. Для этого надо в /etc/conf.d/kexec выставить LOAD_DURING_SHUTDOWN=«no» и положить такой скрипт в /etc/local.d/kexec.start
# дефолтное ядро не прописывает настоящий root=.
if grep -qv 'vda$' /proc/cmdline; then
        mount -o ro,remount / &&  kexec -e
fi


prometheus ~ # uname -pronis
Linux prometheus 3.10.5-hardened-gnu QEMU Virtual CPU version 1.0 GenuineIntel GNU/Linux

Всё. Больше пингвинов хороших и классных. Спасибо за внимание.
User Unknown @UUSER
карма
47,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (18)

  • +2
    Вопрос. Я так понимаю такой «финт ушами» должен сработать на большинстве KVM-based виртмашинах? Если нет, то есть ли способ узнать, что заведомо не сработает.

    PS И да, 5$ в месяц это не лоукост, 10$ в год (за полгига памяти и 5G SSD) — вот это настоящий лоукост.
    • +6
      А не подскажите где $10в год (за полгига памяти и 5G SSD)? А то очень хочу подобное.
      • +7
        Вы временами lowendbox.com просматривайте, там есть хорошие предложения от известных провайдеров, временами :)
        за 10$ в год вполне можно урвать что-то интересное
      • +3
        У меня тестовый стенд от eomy.net
        www.eomy.net/vds-hosting.php?product=006 ( из общего списка вроде убрали, прямая ссылка на описание www.eomy.net/forum/sekretnyi-tarif-vds-za-10-v-god-512-mb-ram-5-gb-hdd-vt5190.html)
        Ну и коммерческие тарифы очень стабильны.
        • 0
          Лучше тогда вот это:
          512MB RAM
          512MB vSwap
          1 vCPU Core
          5GB SAS Raid 10 Diskspace
          500GB Bandwidth
          1 Gigabit Port
          1 IPv4 address
          OpenVZ/KiwiVM
          $1.99/Month or $9.99/Year

          Такое ощущение, что по Вашей ссылке хостер использует те же ДЦ, т. к. на выбор мне доступны локации в NY, Аризоне + в Германии. До Германии от меня время приема-передачи меньше на 100мс, чем до остальных ДЦ. Торопитесь.
          • 0
            Хм. интересно. См. whois.
            Домены зарегистрированы на IT7 Networks Inc, что в общем совпадает с контактной информацией на сайте eomy.net, а тикеты, написанные с it7.net успешно доходят до поддержки eomy.net
            • 0
              А еще при оплате палка пишет что денежка идет в пользу IT7
              так что это явно их проект.
        • 0
          Я пользуюсь уже 6 месяцев вот этим провайдером www.host1free.com/free-vps/
          Дают 10 гигабайт стораджа и 128 мега рама совершенно бесплатно.
    • +1
      Везде, где ядро поддерживает kexec. Узнать можно так: zgrep -i kexec /proc/config.gz

      >5$ в месяц это не лоукост
      На фоне амазона и отечественных…
    • +1
      я подобным образом (без ядра и с сохранением модулей) уже не единожды подменял себе систему на любых контейнеровиртуалках, будь то Xen, KVM, LXC, OVZ, да что угодно. Правда, вместо mc я просто в /dev/shm клал себе статический busybox и использовал его для всего этого действа :)
      • 0
        >LXC, OVZ
        Эт как?!
        • 0
          cистему подменял, не ядро.
          • 0
            А, ок. Я уж подумал неладное… :)
  • 0
    del
  • +1
    Прочитал шапку статьи и был готов поспорить на кружку пива, о каком дистрибутиве пойдет речь. Не ошибся. :)
  • 0
    Пару недель назад брал в локации NY тариф за 10USD/mo.
    Думал развернуть там наш Slave DNS-сервер.
    Синхронизация у нас идет через репликацию БД.
    Так вот этот хваленый Blazing fast не успевал даже репликацию делать в 10-20ins/sec.
    При этом посреди тестов перегрузился извне.
    На вопрос к ТП о причине перезагрузки мне ответили «сейчас сервер работает».
    Спасибо К.О. за такой нужный ответ…

    В общем кроме маркетинговой шелухи ничего путевого не нашел.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.