Сайт | Скачать | Видео | Wiki

Автор Тема: Installer (PuppyRus)  (Прочитано 10794 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Installer (PuppyRus)
« : 11 Июль 2014, 23:32:26 »
 Начал с нуля писать новый инсталлер. Для начала прошу проверить скрипт определения физических дисков.
Код
#!/bin/sh
#DdShurick GPL-V2
#
ls /sys/block | grep -v [0-9]$ | while read PDEV1
do
[ -d /sys/block/$PDEV1/${PDEV1}1 ] || continue
MODEL=$(cat /sys/block/$PDEV1/device/model)
PMEDIA=atahd
[ "$(cat /sys/block/$PDEV1/events)" = "media_change" ] && PDEV1=usbflash
SIZE=$(($(cat /sys/block/$PDEV1/size) / 2097152))G
echo "$PDEV1 $PMEDIA \"$MODEL\" $SIZE"
done
Желательно на экзотике.

Как лучше оформить меню?
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re:Installer
« Ответ #1 : 12 Июль 2014, 05:40:05 »
в виртуалбоксе размер и модель харда определились правильно .
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн Lego

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 900
  • Репутация: +60/-0
Re:Installer
« Ответ #2 : 12 Июль 2014, 07:50:47 »
Всё верно.
AMD Phenom 9500 Quad-Core, GF-8600, 2gb RAM
Asus Eee PC-901 (Intel Atom N270, 1Gb RAM, 12Gb SSD)
Puppyrus-13.12-xfce-4.12

Оффлайн imago31

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 2835
  • Репутация: +41/-0
  • горний арол
Re:Installer
« Ответ #3 : 12 Июль 2014, 08:25:57 »
офтоп, я смотрю у вас фирменная обоина для pr
Врач спасает человека, ветеринар - человечество
 все эксперименты на dual core 2x3.1 GHz/ram-3Gb/gt 440 1gb/WCD 80gb IDE/Samsung 80gb sata/3 флешки с зоопарком линуксов.
  Для работы и игр: Windows 10 снес, поставил 7
  Для души, для скорости и всего остального: Linux(pra, puppy, porteus, ubuntu-подобные)
 
 игровые модули
 программные модули

Оффлайн Lego

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 900
  • Репутация: +60/-0
Re:Installer
« Ответ #4 : 12 Июль 2014, 08:59:13 »
Ну, коту когда делать нефиг, он.... Это про обои. Делать мне нефиг было (только SFS не говорите :D про нас, бездельников).
AMD Phenom 9500 Quad-Core, GF-8600, 2gb RAM
Asus Eee PC-901 (Intel Atom N270, 1Gb RAM, 12Gb SSD)
Puppyrus-13.12-xfce-4.12

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33966
  • Репутация: +231/-0
    • PuppyRus-A
Re:Installer
« Ответ #5 : 12 Июль 2014, 10:13:50 »
Начал с нуля писать новый инсталлер. Для начала прошу проверить скрипт определения физических дисков.
Под какой дистр инсталлятор? В чем замысел? Чем не устраивают имеющиеся? На чем будет gui?
Скрипт на ноуте отработал
Код
#!/bin/sh
sda atahd "WDC WD2500BEKT-6" 232G
« Последнее редактирование: 12 Июль 2014, 10:32:14 от sfs »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Installer
« Ответ #6 : 12 Июль 2014, 10:29:00 »
Под какой дистр инсталлятор? В чем замысел? Чем не устраивают имеющиеся? На чем будет gui?
О, сразу сколько вопросов.
1. Richy, PRA, возможно MagOS и PR если получится.
2. Не знаю, леплю что получится. Наверно Поттеринг укусил. :)
3. Используются нестандартные утилиты.
4. Поробовал на gtk, вот что получилось:
Код
#!/bin/sh
#DdShurick GPL-v2
#

ls /sys/block | grep -v [0-9]$ | while read DEV
do
[ -d /sys/block/$DEV/${DEV}1 ] || continue
MODEL=$(cat /sys/block/$DEV/device/model)
PMEDIA=atahd
[ "$(cat /sys/block/$DEV/events)" = "media_change" ] && PDEV1=usbflash
SIZE=$(($(cat /sys/block/$DEV/size) / 2097152))G
echo "<item>\" $DEV $PMEDIA $MODEL $SIZE \"</item>" >> /tmp/devlist
done
case $(cat /tmp/devlist | wc -l) in
0) exit ;;
1) DEV=$(awk '{print $2}' /tmp/devlist) ;;
[2-9])
export MENU="<vbox>
  <text><label>Выберите устройство</label></text>
  <list>
   <variable>DEV</variable>
   $(cat /tmp/devlist)
  </list>
  <hbox>
  <button><label>Выбрать</label></button>
  <button cancel></button>
  </hbox>
 </vbox>"
eval $(gtkdialog3 -c --program "MENU" --geometry 400x250)
rm /tmp/devlist
[ "$EXIT" = "Cancel" -o  "$EXIT" = "abort" ] && exit
if [  "$EXIT" = "Выбрать"  ]; then
[ "$DEV" ] || exit
DEV=$(echo $DEV | awk '{print $1}')
fi ;;
esac

xmessage $DEV
Может кто чего получше нарисует?
« Последнее редактирование: 12 Июль 2014, 10:30:43 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33966
  • Репутация: +231/-0
    • PuppyRus-A
Re:Installer
« Ответ #7 : 12 Июль 2014, 10:42:33 »
О, сразу сколько вопросов.
Если Вы их не ждали - зачем было вообще начинать  ;)
Для PRA актуально - от своего инталлятора я не в восторге
Простое  удобно писать на моем ntf (или непосредственно на yad)
Код
# ntf --help
Вывод сообщения
Use: /usr/local/bin/ntf [-[ieaqw][n]] "заголовок" ["текст"]
    /usr/local/bin/ntf -l "т|е|к|ст" ["заголовок"] ["текст"]
    /usr/local/bin/ntf -3 "gtk-yes|yes да|1=gtk-no|no|2" ["Заголовок"] ["текст"]
    /usr/local/bin/ntf -3 "\
gtk-yes
yes да
1
\
gtk-no
no
2" ["Заголовок"] ["текст"]
    /usr/local/bin/ntf --test - демонстрация возможностей
   
    i - информация  (всплывающее)
    e - ошибка (всплывающее)
    a - авария
    q - вопрос (да=0)
    w - сообщение с кнопкой ОК
    l - выбор из списка
    3 - выбор из списка с иконкой и скрытым полем
    n - число секунд показа сообщения

i,e выдают всплывающее сообщение. Скрипт проверяет наличие в системе : notify-osd notifyd yad xpupsay conky conky-(без поддержки ico) yaf-splash gxmessage. Выводит сообщение первым найденным способом .

a,w выводят интерактивное сообщение (требуется нажать кнопку). Скрипт проверяет наличие в системе : yad Xdialog. Выводит сообщение первым найденным способом.

q - вопрос. Обработка : [ "`ntf -q "Выключить" "ПК?"`" ] && shutdown -h now.
Или через [ "$?" = "0" ] && exit (1-нет 0-да)

Cпособ вывода и прочие параметры можно указать в ~/.config/ntf.conf.
Сложное - однозначно gtkdialog
C ntf готов помочь

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:Installer
« Ответ #8 : 12 Июль 2014, 11:01:40 »
А кто-нибудь пробовал изучать Альтератор из альт линукса?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Installer
« Ответ #9 : 12 Июль 2014, 11:34:11 »
Если Вы их не ждали - зачем было вообще начинать  ;)
Ждал, ждал  ;D
Сложное - однозначно gtkdialog
Gtkdialog более распространён, можно писать на си (пробовал, но криво получается). Надо выжать из него всё возможное.
А кто-нибудь пробовал изучать Альтератор из альт линукса?
Ну это явно не для frugal. Хотя штука интересная.
« Последнее редактирование: 12 Июль 2014, 11:37:05 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:Installer
« Ответ #10 : 12 Июль 2014, 12:04:41 »
Что если конфигуратор делать на его основе и инсталлятор?
Бекэнды и апи весьма на первый взгляд практичны и вполне универсальное решение может получится. Есть поддержка web варианта наряду с графикой и консолью.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Installer
« Ответ #11 : 12 Июль 2014, 12:55:41 »
Что если конфигуратор делать на его основе и инсталлятор?
Мне это не по силам. Да и gt там.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:Installer
« Ответ #12 : 12 Июль 2014, 13:16:55 »
ну там shell ваш вполне легко можно вставить.
qt тут не нужен.
достаточно и web

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Installer
« Ответ #13 : 12 Июль 2014, 13:33:12 »
ну там shell ваш вполне легко можно вставить.
Вставляйте, только сначала надо его написать.

 Вот продолжил, проверяйте
Код
#!/bin/sh
#DdShurick GPL-v2
#[quote] /tmp/devlist[/quote]
ls /sys/block | grep -v [0-9]$ | while read DEV
do
[ -d /sys/block/$DEV/${DEV}1 ] || continue
MODEL=$(cat /sys/block/$DEV/device/model)
PMEDIA=atahd
[ "$(cat /sys/block/$DEV/events)" = "media_change" ] && PMEDIA=usbflash
SIZE=$(($(cat /sys/block/$DEV/size) / 2097152))G #Надо уточнять blocksize
echo "<item>\" $DEV $PMEDIA $MODEL $SIZE \"</item>" >> /tmp/devlist
done
case $(cat /tmp/devlist | wc -l) in
0) exit ;;
1) DEV=$(awk '{print $2}' /tmp/devlist)
PMEDIA=$(awk '{print $3}' /tmp/devlist) ;;
[2-9])
export MENU="<vbox>
  <text><label>Выберите устройство</label></text>
  <list>
   <variable>DEV</variable>
   $(cat /tmp/devlist)
  </list>
  <hbox>
  <button><label>Выбрать</label></button>
  <button cancel></button>
  </hbox>
 </vbox>"
eval $(gtkdialog3 -c --program "MENU" --geometry 300x150)

[ "$EXIT" = "Cancel" -o  "$EXIT" = "abort" ] && exit
if [  "$EXIT" = "Выбрать"  ]; then
 if [ "$DEV" ]; then
PMEDIA=$(echo $DEV | awk '{print $2}')
DEV=$(echo $DEV | awk '{print $1}')
 else
xmessage "Ничего не выбрано"
exit 1
 fi
fi ;;
esac

export MENU="<vbox>
  <text><label>Выберите раздел</label></text>
  <list>
   <variable>PDEV1</variable>
   $(blkid -s TYPE /dev/$DEV[1-9] | grep -v swap | sed 's/^/<item>/;s/$/<\/item>/')
  </list>
  <hbox>
  <button><label>Выбрать</label></button>
  <button cancel></button>
  </hbox>
 </vbox>"
eval $(gtkdialog3 -c --program "MENU" --geometry 300x150)

[ "$EXIT" = "Cancel" -o  "$EXIT" = "abort" ] && exit
if [  "$EXIT" = "Выбрать"  ]; then
 if [ "$PDEV1" ]; then
PDEV1=$(echo $PDEV1 | awk '{print $1}' | tr -d ':')
blkid $PDEV1 | tr ' ' '\n' | grep -v $PDEV1 > /tmp/pdev1
PDEV1=${PDEV1:5}
. /tmp/pdev1
 else
xmessage "Ничего не выбрано"
exit 1
 fi
fi
xmessage "$PDEV1 $LABEL $UUID $TYPE"
« Последнее редактирование: 12 Июль 2014, 17:13:02 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн midnighter

  • Ветеран
  • *****
  • Сообщений: 436
  • Репутация: +15/-0
Re:Installer
« Ответ #14 : 12 Июль 2014, 16:51:34 »
Для начала прошу проверить скрипт определения физических дисков.
С дисками - нормально, а с флешкой проблема;
Код
sda atahd "ST380011A       " 74G
sdb atahd "ST3160021A      " 149G
cat: /sys/block/usbflash/size: Нет такого файла или каталога