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

Голосование

Что нужно в инсталляторе? Можно выбрать несколько пунктов одновременно

Подробный мануал
14 (29.8%)
GPT
7 (14.9%)
UEFI
13 (27.7%)
UIRD
3 (6.4%)
RAID
0 (0%)
GRUB2
10 (21.3%)

Проголосовало пользователей: 21

Автор Тема: Инсталлятор  (Прочитано 130418 раз)

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Инсталлятор
« Ответ #300 : 03 Май 2019, 15:09:42 »
если выбран раздел
Раз добавлен каталог - надо "Установить в" на список разделов переделать. Идеально,чтобы с указанием ФС
именно устанавливать систему, а не копировать текущую со всем "мусором"
Надо переделать на копирование только загруженных модулей

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: Инсталлятор
« Ответ #301 : 03 Май 2019, 17:22:17 »
Идеально,чтобы с указанием ФС
да, было бы здорово
еще бы не помешало отсеивать миниатюрные разделы с загрузчиками windows7\8\10
-----
Раз добавлен каталог - надо "Установить в" на список разделов переделать.
сейчас там --field="Установить в ":DIR '/mnt' то есть выбор папки,
поначалу тоже мысль была на кнопку заменить, но только потому что из под лайва новую папку не получалось создать из этого диалога
сейчас проблема с правами решена
и разделы там все сразу видны, кучей, и папку любую пользователь может выбрать ..
заменим на список - потеряем возможность выбора каталога ..
  Мое дополнение ( entry справа) нужно только на тот случай если пользователь выбрал не пустой каталог, если он выберет пустой(или сам создаст) - скрипт по старому будет работать
 .. где-то надо пользователя предупреждать, чтоб опять путаницы не получилось ..
или этот мой entry "спрятать" под кат? или вообще его выбросить, а вместо него предупреждать в отдельном окошке - будет создан такой-то каталог, можете изменить название - продолжить?да?нет - поехали дальше
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: Инсталлятор
« Ответ #302 : 03 Май 2019, 18:31:17 »
Код
MKDIRBOX() {
mkdir0="$(yad --text "Вы выбрали раздел или НЕпустой каталог.Установщик создаст пустой каталог и система будет установлена в него.Можете сменить название " \
--form  \
--field="" "$system" )"
system="`echo $mkdir0 | cut -d'|' -f 1`";
mkdir -p "$to/$system" ; to=$to/$system
echo $to ; exit 7 # debug(отладка)
}
#[ "`ls -1 "$to"`" ] && ( $sudo mkdir -p "$to/$system" ; to=$to/$system )
[ "`ls -1 "$to"`" ] && MKDIRBOX
--field="в каталог" "$system"  становится не нужным ( entry справа в моем варианте)
??
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Инсталлятор
« Ответ #303 : 03 Май 2019, 19:01:57 »
Идеально,чтобы с указанием ФС
Код
# blkid /dev/sd??|sed 's/: .*TYPE=/ /'
/dev/sda1 "ext3"
/dev/sda2 "swap"
/dev/sda3 "ext4"
/dev/sda4 "ext4"
Моноблок 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: Инсталлятор
« Ответ #304 : 03 Май 2019, 19:31:48 »
справа одну из кнопок с помощью убрать, вместо нее кнопка, выводящая окошко с инфой о имеющихся разделах, чисто информационное, помочь пользователю определиться
blkid тип фс покажет(DdShurick подсказывает)
df -h поможет доступное место оценить на разделах
??
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: Инсталлятор
« Ответ #305 : 04 Май 2019, 00:50:42 »
окошко с инфой о имеющихся разделах, чисто информационное, помочь пользователю определиться
заготовка, у меня нормально отображает под ддр01
Код
#!/bin/sh
#k0l0p0k 190504
# отображает информацию о разделах
# sudo в 10й строчке, для blkid, позже можно убрать

export fpipe=$(mktemp -u --tmpdir info0.XXXXXXXX)
mkfifo "$fpipe"
exec 3<> $fpipe

LISTBLK="$(sudo blkid /dev/sd??|sed 's/: .*TYPE=/ /')" # начиная от типа фс до конца
LISTBLK1="$(echo "$LISTBLK" |cut -d' ' -f 1)" # разделы
#LISTBLK2="$(sudo blkid /dev/sd??|sed 's/: .*TYPE=/ /'|cut -d' ' -f 2)" # типы ФС
while read -r list1; do
echo $list1 >> $fpipe #  разделы
echo "$LISTBLK" | grep "$list1" | cut -d' ' -f 2  >> $fpipe # типы ФС
echo " - " >> $fpipe  # смонтирован
size=$(df -h "$list1" | grep "$list1" | sed 's/\ \{1,\}/:/g' | cut -d':' -f 2)  # размер
size2=$(df -h "$list1" | grep "$list1" | sed 's/\ \{1,\}/:/g' | cut -d':' -f 4) # свободно на разделе
if [ -z $size ]; then # бывает пустым, у swap-раздела например,
echo " - "  >> $fpipe  # размер
else
echo "$size"  >> $fpipe
fi
if [ -z $size2 ]; then
echo " - "  >> $fpipe  # свободно
else
echo "$size2"  >> $fpipe
fi
#
done <<< "$LISTBLK1"

# по двойному клику ничего пока не делает
# показывать примонтированный раздел в ФМ ?
     
yad --list --text "Double click to open" --text-align=center --width=700 --height=500\
    --column="раздел" --column="Тип ФС" --column="смонтирован" --column="размер" --column="свободно"\
    --search-column=1 --expand-column=1 --print-column="5" <&3     

exec 3>&-
rm $fpipe
« Последнее редактирование: 04 Май 2019, 00:54:28 от k0l0p0k »
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Инсталлятор
« Ответ #306 : 04 Май 2019, 08:31:45 »
надо это выпадающим списком

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: Инсталлятор
« Ответ #307 : 04 Май 2019, 09:27:19 »
можно и списком .. разделы и тип фс:
Код
#!/bin/sh

TITLE="разделы"
TEXT="\nВыберите раздел и нажмите Enter:\n"
templist=$(mktemp -u --tmpdir templist.XXXXXXXX)
[ -e "$templist" ] || touch $templist

LISTBLK="$(sudo blkid /dev/sd??|sed 's/: .*TYPE=/ /')" # начиная от типа фс до конца
LISTBLK1="$(echo "$LISTBLK" |cut -d' ' -f 1)" # разделы
while read -r list1; do
#echo "$list1\t-" >> $templist #  разделы
list2=`echo "$LISTBLK" | grep "$list1" | cut -d' ' -f 2` # типы фс
[ `echo $list2 | grep swap` ] && continue # не показываем swap
size2=$(df -h "$list1" | grep "$list1" | sed 's/\ \{1,\}/:/g' | cut -d':' -f 4) # свободно на разделе
echo "$list1\t$list2\tсвободно $size2" >> $templist #  разделы, тип фс, свободное место
done <<< "$LISTBLK1"
cat $templist # debug
#GUI
hardlist=$(yad --width=500 --center --window-icon="gtk-harddisk" \
     --name="${0##/}" --title="$TITLE" --text="$TEXT" --image="gtk-harddisk" --entry --rest $templist)
     
   
rm $templist   



добавил вывод типа фс и свободного места на разделе
« Последнее редактирование: 04 Май 2019, 22:32:30 от k0l0p0k »
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Инсталлятор
« Ответ #308 : 05 Май 2019, 21:18:08 »
 Если это вам поможет: копирование подключенных модулей
Код
path=/$to_dev/$to_dir #путь куда устанавливать.
mkdir -p $path/base $path/modules $path/optional

losetup -a | awk '{print $3}' | while read m
  do echo "Копируется $(basename $m)"
cp $m $path/$(basename $(dirname $m))/
  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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Инсталлятор
« Ответ #309 : 06 Май 2019, 09:23:39 »
копирование подключенных модулей
Хороший код
только
losetup -a | awk '{print $3}' - скобки будут мешать
Код
losetup | awk '/^\/dev/ {print $6}'
И копировать не в ту папку, где модуль изначально был (/modules /optional), а  раскидать номерные в /base , остальные в /modules
Тогда не надо будет париться с load=

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Инсталлятор
« Ответ #310 : 06 Май 2019, 09:32:54 »
скобки будут мешать
Хреновому танцору....... У меня busybox losetup, он без скобок. Их легко убрать "tr -d [\(\)]"
И копировать не в ту папку, где модуль изначально был
Это твои заморочки с 000, у меня номерных модулей нет.
В итоге получается:
Код
#!/bin/sh
#Задаём раздел
to_dev=$(yad --list --column=Раздел --column=Размер --column=ФС $(fdisk -l|grep ^/|grep -v swap|tr -d '*'| cut -b5- | awk '{print $1" "$7" "$9}') --height=200 | cut -f1 -d'|')
[ `grep $to_dev /proc/mounts` ] || mount /dev$to_dev /mnt$to_dev
#Имя каталога
while true; do
to_dir=$(yad --text="Введите имя каталога для установки" --entry --entry-text="Richy") || exit
mkdir -p /mnt$to_dev/$to_dir
[ `ls /mnt$to_dev/$to_dir` ] && yad --text="Каталог $to_dir не пустой, измените имя" || break
done
#Создаём подкаталоги
mkdir -p /mnt/$to_dev/$to_dir/base /mnt/$to_dev/$to_dir/modules /mnt/$to_dev/$to_dir/optional
#Копируем подключенные модули
losetup -a | awk '{print $3}' | while read m
  do echo "Копируется $(basename $m)"
cp $m /mnt/$to_dev/$to_dir/$(basename $(dirname $m))/
  done
С установкой загрузчика сам справишься.
« Последнее редактирование: 06 Май 2019, 11:11:20 от 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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Инсталлятор
« Ответ #311 : 06 Май 2019, 10:04:14 »
$path не определено
busybox losetup - ключ -a есть не у всех
Надо 2 вопроса в 1 гуй свести и обработку ошибок:
не выбран раздел
непустая папка

Доработал. Проверил. Работает. спасибо+
Ну и формирование menu.lst взять из старых скриптов
Код
#!/bin/sh
#Задаём раздел
to_dev=$(yad --list --column=Раздел --column=Размер --column=ФС $(fdisk -l|grep ^/|grep -v swap|tr -d '*'| cut -b5- | awk '{print $1" "$7" "$9}') --height=200 | cut -f1 -d'|')
#echo $to_dev== ;exit
[ `grep $to_dev /proc/mounts` ] || mount /dev$to_dev /mnt$to_dev
#Имя каталога
while true; do
to_dir=$(yad --text="Введите имя каталога для установки" --entry --entry-text="Richy") || exit
mkdir -p /mnt$to_dev/$to_dir
[ `ls /mnt$to_dev/$to_dir` ] && yad --text="Каталог $to_dir не пустой, измените имя" || break
done
#Создаём подкаталоги
mkdir -p /mnt/$to_dev/$to_dir/base /mnt/$to_dev/$to_dir/modules /mnt/$to_dev/$to_dir/optional
#Копируем подключенные модули
#losetup -a | awk '{print $3}' | while read m
losetup | awk '/^\/dev/ {print $6}' | while read m
  do echo "Копируется $(basename $m)"
# cp $m /mnt/$to_dev/$to_dir/$(basename $(dirname $m))/
[ "`basename "$m" |egrep '^[0-9]'`" ] && dd=base || dd=modules
    cp "$m" /mnt/$to_dev/$to_dir/$dd/
  done

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Инсталлятор
« Ответ #312 : 06 Май 2019, 11:17:14 »
$path не определено
Да, пропустил :( , исправил.
busybox losetup - ключ -a есть не у всех
Это у очень старых.
не выбран раздел
Там в конце || exit
непустая папка
Тут есть сообщение.
Моноблок 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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Инсталлятор
« Ответ #313 : 06 Май 2019, 11:28:51 »
Там в конце || exit
Не поймут. Надо ntf -a сообщение
И выбор раздела - надо почитать про дефолтное значение поля в yad
Пока не тыкнешь в раздел (т.е. сразу ОК) - получается пусто

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Инсталлятор
« Ответ #314 : 06 Май 2019, 11:55:27 »
 Примерно так?
Код
#!/bin/sh
#Задаём раздел
to_dev=$(yad --list --column=Раздел --column=Размер --column=ФС $(fdisk -l|grep ^/|grep -v swap|tr -d [\*\(\)]|cut -b5-|awk '{print $1" "$7" "$9}') --height=200|cut -f1 -d'|')
if [ $to_dev ]; then
[ `grep $to_dev /proc/mounts` ] || mount /dev$to_dev /mnt$to_dev
else
yad --no-buttons --undecorated --image="error" --text="\n Ничего не выбрано. Выходим. \n" --timeout 3 --center
exit 1
fi
#Имя каталога
while true; do
to_dir=$(yad --text="Введите имя каталога для установки" --entry --entry-text="Richy" --center) || exit
mkdir -p /mnt$to_dev/$to_dir
[ `ls /mnt$to_dev/$to_dir` ] && yad --image="error" --text="Каталог $to_dir не пустой, измените имя" --center || break
done
#Создаём подкаталоги
mkdir -p /mnt/$to_dev/$to_dir/base /mnt/$to_dev/$to_dir/modules /mnt/$to_dev/$to_dir/optional
#Копируем подключенные модули
losetup -a | awk '{print $3}' | while read m
  do yad --no-buttons --undecorated --text="Копируется $(basename $m)" --center &
pid=$?
cp $m /mnt/$to_dev/$to_dir/$(basename $(dirname $m))/
kill $pid
  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