[Comm] К вопросу об обновлении ядра

Alexei V. Mezin =?iso-8859-1?q?alexei-mezin_=CE=C1_rambler=2Eru?=
Чт Мар 12 02:40:43 MSK 2009


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

Случается, что нужно обновить ядро. Сейчас "официально рекомендованная" 
операция выглядит так: настроить Synaptic на более старший бранч, апдейт 
или даже Сизиф, обновить индексы, вызвать update-ketnel [-t FLAVOUR], 
вернуть настройки Synaptic к исходным, обновить индекс.

Минусы этого подхода по пунктам:

* "настроить Synaptic на ...". Как показывает практика, множество 
пользователей не могут корректно настроить apt на репозитарий, во многом 
из-за невнятных настроек apt/Synaptic и из-за отсутствия документации. 
Самые характерные ошибки: "не могут указать нужный репозитарий", 
"включают все возможные репозитарии", "не включают noarch".

* "вызвать update-kernel...". Командная строка -- половина пользователей 
споткнется уже на этом. Кто-то сможет пойти дальше, кто-то упрется 
намертво. Как пользователь сможет узнать что-либо про FLAVOUR? Ответ -- 
никак. Ибо он вообще слабо себе представляет, что это, зачем, и где про 
него написано. Кроме того, скрипт update-kernel тут же захочет слить с 
репозитария (обычно из интернета) ядро и все модули, а это полсотни 
мегабайт, что является непосильным для множества пользователей.

* "Вернуть настройки...". Это конечно чуть проще, чем их задать, но все 
равно будут трудности. Кроме того, если пользователь вдруг забудет это 
сделать (а это не сложно: поставил ядро, ринулся перезагружаться 
тестировать и ... забыл), то следующая установка любой программы 
приведет к "точечному обновлению" и взорвет пользователю 
мозг/систему/счет за интернет.


Идея альтернативного способа:

представляется некий "скрипт", который можно легко скачать с сайта 
перейдя по обычной http/ftp ссылке. При запуске скрипт должен

1. Определить, какое ядро (версия, тип) сейчас используется, и какие 
модули установлены. Показать этот список в том или ином виде.
2. Интерактивно спросить у пользователя, из какого сетевого репозитария 
он хочет попробовать обновить ядро. На выбор предложить стабильные 
ветки, бранчи, апдейты, Сизиф и т.п.
3. После выбора пользователя скрипт должен обратиться к ФТП-серверу, 
"изучить" список файлов, вычленить из него все доступные FLAVOUR'ы, 
выдать список пользователю.

Возможно, дать краткие пояснения, чем там std-ll отличается от std-wks и 
оба они от std-def.

Возможно, скачать с заранее заготовленного места короткий readme.txt, 
где будут описаны потенциальные косяки обновления ядра с версии XXXX до 
YYYY, известные на данный момент. Пусть пользователь имеет хотя бы 
потенциальную возможность быть предупрежденным.

4. После того, как пользователь выберет тип ядра, проверить, какие 
модули доступны для этого ядра. Если вдруг недоступно что-то, что сейчас 
используется у пользователя, выдать предупреждение.

5. Если пользователь на все согласен, то составить список скачиваемых 
файлов, и подсчитать необходимый объем траффика. Запросить у 
пользователя разрешение на закачку, или записать список в файл в 
формате, пригодном, например, для обработки wget'ом, чтоб пользователь с 
этим файлом мог пойти туда, где толстый канал, и скачать нужные файлы. 
(это обязательно!)

6. Собственно скачать файлы. И далее или выдать четкие рекомендации, как 
перейти в root'а и поставить новое ядро, или создать скрипт, который 
надо запустить от рута, или запросить пароль рута и сделать все через 
sudo или  еще каким способом поставить пакеты.

7. Выдать пользователю рекомендации про то, как загрузить новое ядро 
(далеко не все догадываются, что в меню загрузки надо выбрать новое 
ядро), и так же рекомендации о том, как сделать загрузку нового ядра по 
умолчанию (про это не знают даже более-менее опытные).

Или сделать модуль для Альтератора с подобной функциональностью. Но 
модуль альтератора тогда хорошо бы портировать и под Десктоп 4.0 (ибо 
для него обновления ядра наиболее актуально). Да и поставить модуль 
альтертаора из апдейтов сложно. Скрипт скачать проще.



Подробная информация о списке рассылки community