SaaS-решение для сборки персонализированных образов операционной системы на базе Debian GNU/Linux
-
Здравствуйте!
Я хочу поделится ссылкой на прототип SaaS-сборщика персонализированных образов Debian GNU/Linux для Raspberry Pi:
http://cusdeb.com/Это публичная пре-альфа версия, демонстрирующая будущий интерфейс сборщика. Интерфейс позволяет создать корневую файловую систему, состоящую из базовой системы, затем добавить пакеты из официального репозитория Debian. При добавлении пакетов зависимости разрешаются автоматически.
Корневая файловая система не содержит ядро с поддержкой Raspberry Pi. Мы планируем взять Linux 4.4, наложить патчи от сообщества Raspberry Pi и наладить регулярные обновления этого ядра через наш бинарный репозиторий.
В интерфейсе появится управление пользователями и группами, а так-же возможность задать пароль супер пользователя.
Мы добавим поддержку других операционных систем и одноплатных компьютеров. Исходники будут опубликованы на GitHub.
Не могли бы вы оценить систему в текущем виде, чтобы мы могли учесть ваши замечания и пожелания, но уже в альфа-версии. Интерфейс сборщика на английском языке, но наша команда надеется, что это не будет проблемой.
Я буду очень благодарен любым замечаниям, советам и отзывам в этой теме. Я готов ответить на любые вопросы.
-
Очень крутой проект.
Я на следующей неделе пострараюсь протестировать и написать отзыв в этой теме
-
raspiman спасибо большое! Ждём с нетерпением отзыв!
-
Список изменений:
- Добавили управление пользователями и группами, а также возможность задать пароль суперпользователя во время сборки образа.
- Ускорили процесс разрешения зависимостей.
-
Недавно зарегистрировался. Сейчас пытаюсь залогиниться, но логин не проходит, просто поле пароля сбрасывается. Ну думаю забыл пароль. Нажимаю восстановить, а в ответ тишина. А зареган ли я на самом деле здесь? Пытаюсь зарегистрироваться во второй раз и сайт с радостью вывалил мне лог с ошибками. Environment:
Request Method: POST
Request URL: http://cusdeb.com/signup/Django Version: 1.8.13
Python Version: 3.4.2
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'firmwares',
'users',
'webpack_loader')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')Traceback:
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/var/dashboard/src/django-cusdeb-users/users/views.py" in sign_up
105. cd['password'])
File "/usr/local/lib/python3.4/dist-packages/django/contrib/auth/models.py" in create_user
187. **extra_fields)
File "/usr/local/lib/python3.4/dist-packages/django/contrib/auth/models.py" in _create_user
182. user.save(using=self._db)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/base.py" in save
734. force_update=force_update, update_fields=update_fields)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/base.py" in save_base
762. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/base.py" in _save_table
846. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/base.py" in _do_insert
885. using=using, raw=raw)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/manager.py" in manager_method
127. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/query.py" in _insert
920. return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/sql/compiler.py" in execute_sql
974. cursor.execute(sql, params)
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py" in execute
79. return super(CursorDebugWrapper, self).execute(sql, params)
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py" in execute
64. return self.cursor.execute(sql, params)
File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py" in exit
98. six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/usr/local/lib/python3.4/dist-packages/django/utils/six.py" in reraise
685. raise value.with_traceback(tb)
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py" in execute
64. return self.cursor.execute(sql, params)Exception Type: IntegrityError at /signup/
Exception Value: duplicate key value violates unique constraint "auth_user_username_key"
DETAIL: Key (username)=(alfacom) already exists. -
alfacom , благодарю за отчёт об ошибке! Я нашёл ваш аккаунт, установил новый пароль и отправил пароль в личку. Сегодня ночью поправим регистрацию.
-
alfacom , исправлено. Еще раз спасибо.
-
Вы знакомы с Buldroot?
Я думаю, что многим было бы интересно, если со временем ваш проект разовьётся до этакого SaaS аналога Buildroot'а -
admin (2016-05-28 08:43:50):Вы знакомы с Buldroot?
Я думаю, что многим было бы интересно, если со временем ваш проект разовьётся до этакого SaaS аналога Buildroot'а да, у Buildroot есть достоинства, с оглядкой на которые мы разрабатываем CusDeb, но в одном эти два проекта отличаются друг от друга принципиально: Buildroot предлагает собирать образы из исходных текстов, а CusDeb — из бинарных пакетов. -
Подвисает на стадии инициализации.
Консоль ошибок на скрине, браузер ChromeWebSocket connection to 'ws://cusdeb.com/rpc/token/' failed: Error during WebSocket handshake: Unexpected response code: 404
-
raspiman (2016-05-28 15:40:17):Подвисает на стадии инициализации.
Консоль ошибок на скрине, браузер ChromeWebSocket connection to 'ws://cusdeb.com/rpc/token/' failed: Error during WebSocket handshake: Unexpected response code: 404
Спасибо. Мы выяснили в чем проблема. Быстрое решение заключается в том, что бы просто перелогиниться.
Сегодня-завтра мы исправим источник этой проблемы. -
Русифицировали гравную страницу и руководство пользователя. Если в браузере русский язык выбран по умолчанию, то показывается русская версия сайта.
-
У всех зарегистрировавшихся прошу прощения. При входе сразу после регистрации не создавался токен, что делало автоматический вход сразу после регистрации бессмысленным. Проблема исправлена.
-
Теперь cusdeb.com/ собирает полноценные образы Debian Jessie для Raspberry Pi 2 и Raspberry Pi 3. Для сборки используется скрипт: github.com/drtyhlpr/rpi23-gen-image
Приглашаю всех желающих присоединиться к разработке. Буду рад любому отзыву, совету или найденной ошибке.
-
Откуда берётся список пакетов, которые можно выбрать?
Автоматически из оф.репозиториев парсится или как-то вручную модерируется?
К названию пакета было бы неплохо выводить описание — я ввёл ключевое слово, мне вывалилась куча пакетов, содержащая в названии ключевое слово.
Из этой кучи без описания выбрать то, что мне нужно не очень просто.Не очень понятно, что получится на выходе — будет ли дистрибутив содержать графическую систему XWindow или только консоль?
Если окно браузера закрыть, прервётся ли процесс сборки?
-
raspiman (2016-12-04 22:47:19):Откуда берётся список пакетов, которые можно выбрать?
Автоматически из оф.репозиториев парсится или как-то вручную модерируется?
К названию пакета было бы неплохо выводить описание — я ввёл ключевое слово, мне вывалилась куча пакетов, содержащая в названии ключевое слово.
Из этой кучи без описания выбрать то, что мне нужно не очень просто.Не очень понятно, что получится на выходе — будет ли дистрибутив содержать графическую систему XWindow или только консоль?
Если окно браузера закрыть, прервётся ли процесс сборки?
- Список пакетов берется из официального репозитория. У нас есть простой сервис, который дергает, к примеру, из ftp.ru.debian.org/debian/dists/stable/main/binary-armhf/Packages.xz пакеты и обновляет их в нашей базе. Каждый пакет представляется в виде документа MongoDB.
- Описание к каждому пакету является приоритетной задачей. CusDeb находится в статусе альфы, поэтому ему пока не хватает некоторых важных функций.
- В основу целевого образа закладывается базовая система. Если вы выберите из списка пакетов xorg + какую-нибудь DE, тогда графика будет. Мы удерживаемся от соблазна добавлять в целевой образ что-то от себя.
- Да, вы можете закрыть окно/вкладку, а через некоторое время найти образ в списке в панели управления. Думаю, что нужно отправлять два письма: 1) сборка началась, 2.1) сборка закончилась удачно 2.2) сборка закончилась с ошибкой. Что думаете?
-
Да, было бы неплохо высылать уведомление, что сборка завершена.
Также было бы неплохо сделать возможность внесения изменений в готовый образ
-
raspiman (2016-12-05 14:03:18):Да, было бы неплохо высылать уведомление, что сборка завершена.
Также было бы неплохо сделать возможность внесения изменений в готовый образ мы рассматривали идею прикрутить к CusDeb терминал, чтобы работать с целевой прошивкой, запущенной в эмуляторе. Так вы могли бы вносить изменения в образ. Или у вас есть другая идея?
-
Мы добавили руководство пользователя на русском языке
-
raspiman , благодарю за комментарии. Мы добавили краткие описания к пакетам (к сожалению, только на английском языке), и уведомления по электронной почте о завершении сборки.
Пока не придумали как реализовать внесение изменений в готовый образ.