IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Скрипт обновления ядра.
Поделиться
Koi.v2
сообщение 12.10.2015, 21:07
Сообщение #1


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Решил сделать небольшой sh скрипт для обновления ядра, так, чтоб не мучить пользователя лишними заботами и вопросами.
Пока накалякал такое...
Код
test-archives(){
                DU=$(du -ms /var/cache/apt/archives | cut -f1)
                if (( "$DU" >= 3500 ));
                  then
                      echo "Объем archives превысил 3500 мегабайт"
                      echo "Произвожу очистку"
                      apt-get autoclean
                  else
                      echo "Очистка archives не требуется"
                fi
}  

del-kernels(){
flavour_version_release="$(uname -r | awk -F- '{print $2"-"$3"-"$1"-"$4}')"
old_kernels="$(rpm -qa | fgrep kernel-image | fgrep -v $flavour_version_release | tr '\n' ' ')"

# calculate arguments for apt
for kernel in $old_kernels
do
    apt_args_list="$apt_args_list $(rpm -q --queryformat '%{NAME}#%{EPOCH}:%{VERSION}-%{RELEASE}\n' $kernel \
        | sed -e "s,(none):,,g")"
done

# use sudo(1) if running as unprivileged user
[ "$UID" = "0" ] && SUDO= || SUDO=sudo

$SUDO apt-get remove -y $apt_args_list
}

up-kernel(){
            echo "Обновление ядра"
            update-kernel -f
            echo "Перезагрузка произойдет через 15 секунд"
            sleep 15
            reboot
}

kern-update(){
             aptKERN=$(apt-cache show kernel-headers-std-def | grep -i 'Version: ' | cut -f3 -d : | cut -f1 -d - | sed 's/[^0-9]//g' | head -1)
             kVERS=$(uname -r | cut -f1 -d - | sed 's/[^0-9]//g')
             echo "Обновление списка пакетов apt-get update"
             apt-get update
             if (( "$aptKERN" > "$kVERS" ));
               then
                   test-archives
                   echo "Удаление старого ядра"
                   del-kernels
                   echo "Обновление пакетов дистрибутива"
                   apt-get dist-upgrade -y
                   up-kernel
               else
                   echo "Обновление ядра не требуется"
                   echo "Выход из программы через 5с"
                   sleep 5  
             fi      
}
kern-update

Скрипт работает проверил, запускается через *.desktop

Код
Type=Application
Categories=System;Utility;Archiving;
Exec=/usr/bin/xdg-su -c 'xterm -e /opt/au-kernel/au-kernel.sh'
Terminal=false
Icon=/opt/au-kernel/img/img-au-kernel.png
Name=au-kernel
GenericName=update-kernel
GenericName[ru]=Обновление ядра Linux
Comment=update-kernel
Comment[ru]=Использует команду update-kernel


Сомневаюсь стоит ли его сделать для автозагрузки, чтоб если есть обновление появлялся значок в трее или это лишнее?
Можно обновлятор сделать вместо синаптика, а то он тяжеловат.

Значок соответствует процессу обновления ядра biggrin.gif


Скрип готов к тестированию, кто хочет может скачать, он упакован в архив там папка для картинок, логов , чтоб было удобно пользоваться, в архиве небольшая инструкция.
https://yadi.sk/d/zffFtRhhjjDUd

Замечания, предложения и т.д. happy.gif

Сообщение отредактировал Koi.v2 - 14.10.2015, 16:16
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Balbes
сообщение 13.10.2015, 12:18
Сообщение #2


Мастер
******

Группа: Пользователь
Сообщений: 794
Регистрация: 9.7.2010
Вставить ник
Цитата
Пользователь №: 1865
Страна: Россия
Город: Зарайск/Московской
Пол: Муж.



Репутация: 6


ИМХО Как вариант, можно попробовать прикрутить это решение к уже существующему apt-индикатору. По дефолту индикатор проверяет обновление, но при выборе автоустановки всё равно требует ряд ручных шагов, а если прикрутить к нему это изменение (полноценную автоустановку), тогда он сможет делать автообновление в нужном режиме, без ручных операций, подтвердил пользователь , что согласен с полным автообновлением и индикатор всё обновил автоматом и пакеты и ядро.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 13.10.2015, 17:45
Сообщение #3


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Убрал строчки sh /, они ссылались на файлы которые только у меня есть. Щас скрипт полностью самодостаточен можно копировать и проверить на виртуалке например.
Добавил еще удаление старых ядер, скрипт оставляет на пк 2 ядра свежее и предыдущее. Используется remove-old-kernels.
Если вам нужно больше 2х ядер на пк то просто удалите строчку с командой: del-kernels из функции kern-update.
Цитата(Balbes @ 13.10.2015, 11:18) *
ИМХО Как вариант, можно попробовать прикрутить это решение к уже существующему apt-индикатору. По дефолту индикатор проверяет обновление, но при выборе автоустановки всё равно требует ряд ручных шагов, а если прикрутить к нему это изменение (полноценную автоустановку), тогда он сможет делать автообновление в нужном режиме, без ручных операций, подтвердил пользователь , что согласен с полным автообновлением и индикатор всё обновил автоматом и пакеты и ядро.

Была идея адаптировать его для автозагрузки как раз с функцией обновления, а синаптик выключить вообще. Преимущество скрипта, проверка мгновенная, ресурсы пк почти не тратит.
Но как-то в сомнениях насколько это нужно.
Многие вообще против автоматизации ядра.
Мне просто лень делать все в ручную, так что если кому тоже лень пусть пользуются. wink.gif

Сообщение отредактировал Koi.v2 - 13.10.2015, 17:48
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 14.10.2015, 15:36
Сообщение #4


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Немного поправил, а то он путался когда было много вариантов, щас все пучком.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 14.10.2015, 16:16
Сообщение #5


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Скрип готов к тестированию, кто хочет может скачать, он упакован в архив там папка для картинок, логов , чтоб было удобно пользоваться, в архиве небольшая инструкция.
https://yadi.sk/d/zffFtRhhjjDUd
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Balbes
сообщение 14.10.2015, 19:06
Сообщение #6


Мастер
******

Группа: Пользователь
Сообщений: 794
Регистрация: 9.7.2010
Вставить ник
Цитата
Пользователь №: 1865
Страна: Россия
Город: Зарайск/Московской
Пол: Муж.



Репутация: 6


Цитата(Koi.v2 @ 13.10.2015, 17:45) *
Но как-то в сомнениях насколько это нужно.

"Ты не сомневайся, ты делай, а там посмотрим, кому впарить ....." С biggrin.gif

Лично мне бы такой вариант индикатора пригодился. По аналогии с Виндой, если человек хочет обновление , но не знает как правильно это делать, такой автоматический вариант был бы весьма уместен. Что-бы не ломать привычную систему, можно сделать отдельный пакет с модернизированным индикатором.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Drool
сообщение 17.10.2015, 22:43
Сообщение #7


Профессионал
*******

Группа: Пользователь
Сообщений: 1764
Регистрация: 28.7.2010
Вставить ник
Цитата
Из: Берислав, Херсонщина
Пользователь №: 1879
Страна: Украина
Город: Не указан
Пол: Муж.



Репутация: 9


А не проще ли на том же "Xdialog" сделать обертку для update-kernel?


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 19.10.2015, 23:50
Сообщение #8


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Не, это скучно, я щас qt приделал, смотрю как оно. laugh.gif
Получилось красиво, но не внушительно, все же qt для чего-то более матерого. Оставлю как вариант.
Думаю может просто в терминале диалог сделать, так функциональнее будет.

Сообщение отредактировал Koi.v2 - 20.10.2015, 0:05
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 8.11.2015, 22:19
Сообщение #9


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Появилось время наконец, доделал и дотестил.
Drool полностью прав, делать большой интерфейс к маленькому скрипту нет смысла, сделал по совету с окошками zenity. Кнопок теперь нет тех, что были в гуи qt, оставил диалоги и процесс бар.
А и rpm пакет сделал для удобства установки.

Еще подумаю, может добавлю что-то.

Для тестов.
https://yadi.sk/d/zffFtRhhjjDUd

Сообщение отредактировал Koi.v2 - 8.11.2015, 22:20
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 8.11.2015, 22:35
Сообщение #10


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Уехал в нашу 7-ую 32-битную репу.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 9.11.2015, 18:51
Сообщение #11


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Не потравился людям таймер перезагрузки, убрал таймер и сделал обычную кнопку. Распознавание ядер улучшил.
https://yadi.sk/d/zffFtRhhjjDUd
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 9.11.2015, 22:55
Сообщение #12


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


В 7-ой 32-битной репе smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Balbes
сообщение 10.11.2015, 10:44
Сообщение #13


Мастер
******

Группа: Пользователь
Сообщений: 794
Регистрация: 9.7.2010
Вставить ник
Цитата
Пользователь №: 1865
Страна: Россия
Город: Зарайск/Московской
Пол: Муж.



Репутация: 6


А может для обновления ядра, вместо кода в самом скрипте, просто вызывать из скрипта update-kernel с опцией Yes ?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 11.11.2015, 16:34
Сообщение #14


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Цитата(Balbes @ 10.11.2015, 9:44) *
А может для обновления ядра, вместо кода в самом скрипте, просто вызывать из скрипта update-kernel с опцией Yes ?

Конечно можно.
Но это сопряжено с вводом других команд и разруливанием разных нюансов. А так всем этим, ну ладно не всем, но основные проблемы разруливает скрипт.
Кроме того если пользователь недавно перешел на линукс ему надо читать мануалы и боятся правильно ли он все сделал, а такие премудрости в 21 веке мне кажется отпугивают людей. ОС должна быть проста и удобна для пользователя. Фактически я хочу чтобы Альт был не только прикладной ОС (сервера, суперкомпьютеры), но и занял почетное место для пользовательских домашних систем, а это совсем другой уровень восприятия и комфортности.
Это лично мое ИМХО.

kostyalamer
Прости пожалуйста, что так часто обновляют, но вот
https://yadi.sk/d/zffFtRhhjjDUd

Народу не понравилось, что он долго думает перед оповещением, теперь все происходит почти мгновенно.

Насчет флауеров ядер.
Скрипт настроен для работы со стабильным ядром р7 то есть с std-def, связано это с тем что он ищет обновленные заголовки kernel-headers-std-def.
Если вы сменили ядро на допустим un-def то надо сказать об этом скрипту сделать команду
Код
sed -i 's/kernel-headers-std-def/kernel-headers-un-def/' /opt/au-kernel/au-kernel.sh

Это работает с любыми ядрами алт, просто замените /kernel-headers-un-def/' на свое.

Пока думаю как сделать универсальность с kernel-headers-$(" ") проблемка.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 11.11.2015, 22:43
Сообщение #15


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(Koi.v2 @ 11.11.2015, 16:34) *
kostyalamer
Прости пожалуйста, что так часто обновляют, но вот
https://yadi.sk/d/zffFtRhhjjDUd

Ничего страшного, нормальный творческий процесс smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 13.11.2015, 19:19
Сообщение #16


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Версия 0.5
https://yadi.sk/d/zffFtRhhjjDUd

Работает быстрее насколько позволяет apt, учтено возникновение нештатных ситуаций, допустим снаптик мешает работать apt и прочие, а так же теперь не нужно в ручную указывать тип ядра если он отличен от стандартного, все само определяется и делается.

Кроме классических ошибок, решение каких проблем еще добавить?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 16.11.2015, 20:18
Сообщение #17


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


https://yadi.sk/d/zffFtRhhjjDUd

Версия 0.6
Исправил остановку работы скрипта если обнаружены одинаковые модули.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 21.11.2015, 13:13
Сообщение #18


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Версия 1.0
https://yadi.sk/d/zffFtRhhjjDUd
Программка готова и полностью выполняет задуманное.
Идеи, критика и пожелания по прежнему принимаются.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
( Гостей: 1 )
Пользователей: 0

 



RSS Текстовая версия Сейчас: 19.4.2024, 19:37