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

Автор Тема: Установщик для флэшки live дистрибутива linux с ventoy.  (Прочитано 1757 раз)

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

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8636
  • Репутация: +187/-2
  • Старый чайник
да работает такой способ, спасибо.
Пожалуйста.
Почаще ковыряйтесь в "потрохах", там много интересного...
Моноблок 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

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1722
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Почаще ковыряйтесь в "потрохах", там много интересного...
Я чего и ржал в предыдущем сообщении. Мы в разных потрохах ковыряемся. Признаю - изящно
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1722
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Признаю - изящно
Или с юмором - я не пойму)
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +24/-0
  • Автор темы
После предложения DdShurick cat /sys/block/sdb/events
media_change , не смог удержатся, обновил скрипт в шапке, ибо решение красивое.
« Последнее редактирование: 27 Февраль 2024, 09:43:58 от totiks2012 »

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
А если флэшка не /dev/sdb а /dev/sdc ? будет работать?
у меня первая команда из первого скрипта обнаружила только хард,
подключенный чз usb, флешку на /dev/sdc "проморгала"
Код
user@astra:~$ sudo lsblk -l -o NAME,TYPE | awk '$2 == "disk" && !/^(sda|zram0|fd0)/ {print $1; exit}'
sdb
user@astra:~$ sudo lsblk -l -o NAME,TYPE
NAME TYPE
sda  disk
sda1 part
sda2 part
sda3 part
sdb  disk
sdb1 part
sdc  disk
sdc1 part
user@astra:~$ cat /sys/block/sdc/events
media_change
« Последнее редактирование: 27 Февраль 2024, 12:27:44 от k0l0p0k »
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8636
  • Репутация: +187/-2
  • Старый чайник
А если флэшка не /dev/sdb а /dev/sdc ?
Надо цикл
Код
for dev in $(awk '/sd[a-f]$/ {print $4}' /proc/partitions); do grep -q 'media_change' /sys/block/$dev/events && echo $dev; 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
Надо цикл
100%
или вариант №2 - спрашивать у пользователя, вдруг там две флэшки
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8636
  • Репутация: +187/-2
  • Старый чайник
вдруг там две флэшки
Код
shurick@antix1:~
$ udevadm info -a -n /dev/sdb | egrep 'vendor|model'
    ATTRS{vendor}=="Generic-"
    ATTRS{model}=="Multi-Card      "
    ATTRS{vendor}=="0x8086"
    ATTRS{subsystem_vendor}=="0x17aa"
shurick@antix1:~
$ udevadm info -a -n /dev/sdc | egrep 'vendor|model'
    ATTRS{vendor}=="        "
    ATTRS{model}=="USB DISK 2.0    "
    ATTRS{vendor}=="0x8086"
    ATTRS{subsystem_vendor}=="0x17aa"
Вот, как-то так. Может кто лучше придумает.
Моноблок 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

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +24/-0
  • Автор темы
 
у меня первая команда из первого скрипта обнаружила только хард,
подключенный чз usb, флешку на /dev/sdc "проморгала"
я так понимаю у вас хард подключен нестандартно через usb, это частный случай в смыcле редкий, обычно у пользователей жесткий диск или ssd подключен через sata, и если я вас правильно понял, то ваш хард и определяется как флешка, в случае когда 2 флэшки подключены, скрипт путается, я потому и подчеркнул со скриптом использовать одну , дальше копать не стал ибо подумал что такое поведение  , выбор из нескольких флэшек одну нужную избыточно, логика скрипта такая просмотреть все носители исключить, sata(sda), найти первый носитель который портативный, использовать его.
 если флэшка одна и она называется sdc она тоже будет ,благополучно обработана скриптом.
Вариант для 2 флэшек подключеных сразу не прорабатывал, ибо одну из  могу извлечь, и работать с одной, цель создать на автомате загрузочную флэшку, в вашем случае да скрипт нужно переработать...

upd: еще раз проанализировал ваш
user@astra:~$ sudo lsblk -l -o NAME,TYPE
NAME TYPE
sda  disk
sda1 part
sda2 part
sda3 part
sdb  disk
sdb1 part
sdc  disk
sdc1 part  у вас есть sda и вероятно есть система на нем, если да то не вижу проблемы, извлечь usb хард-бокс , оставить одну флэшку и если нужно, использовать скрипт, я не то что настаиваю но вижу некоторую избыточность , использовать скрипт с несколькими флэшками.
« Последнее редактирование: 28 Февраль 2024, 11:40:08 от totiks2012 »

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +24/-0
  • Автор темы
    Надо цикл

100%
или вариант №2 - спрашивать у пользователя, вдруг там две флэшки
если вы решите для 2 флэшек, поделитесь пожалуйста ибо интересно, сам пока не дохожу умом как к этому подступится...

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
я так понимаю у вас хард подключен нестандартно через usb, это частный случай в смыcле редкий,
все так.
Не соглашусь с тем что случай редкий, внешних usb-переходников для подключения хардов не мало.
Я не знаю что лучше: усложнять скрипт или просто предупредить пользователя, чтоб использовал только одну флэшку
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +24/-0
  • Автор темы
Я не знаю что лучше: усложнять скрипт или просто предупредить пользователя, чтоб использовал только одну флэшку
Передупредить много проще! :)
У вас система на sda? Или как я мечтал на ssd через бокс ,подключеная к usb , извлекаешь ,комп нерабочий, подключаешся почти к любому, и твоя система со всеми данными всегда с тобой, ssd сейчас не большие, класс если так!
   Усложнить скрипт в силу свойств работы таблицы разделов, в силу особенностей fdisk будет  очень сильно сложнее, не знаю если возможно, ведь почему скрипт разделён на две части, зачем понадобилась перезагрузка, обратите внимание на сообщение в терминале в конце при исполнении первого скрипта, он говорит после создания раздела "$PART"3  , что не сможет с ним работать дальше, ибо нужно перезагрузить систему, либо  использовать две команды , то ли partprobe то ли еще как ,уже не помню, которые перезагрузят перечитают таблицу разделов, я очень очень, хотел избежать перезагрузки, но эти две команды срабатывали ненадёжно, иногда работали иногда нет, поверьте я убил "два" (образно) часа пытаясь заставить это работать, но я  смирился и принял реальность,...и пошёл по пути с перезагрузкой, так работает надежно,  до перезагрузки флэшка может принять имя раздела /dev/sdc
 после перезагрузки, имя может поменятся и стать sdb, если флэшек будут 2, скрипт может запутаться и отформатировать не ту флэшку, в общем путаница ещё та. Кто сможет такое провернуть , это мастер! ... а я так подмастерье...
« Последнее редактирование: 28 Февраль 2024, 19:56:49 от totiks2012 »

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
У вас система на sda?
да
вот команда выдает список устройств, (sda исключен):
Код
root@astra:/home/user# lsblk -l -o TRAN,TYPE,NAME,SIZE,FSTYPE,MODEL,LABEL /dev/sd? | egrep -v 'swap|TYPE|sda'
usb  disk sdb  931,5G        721010A9E630     
     part sdb1   910G ext4                    1Tb-hgst
usb  disk sdc   29,8G        Mass-Storage     
     part sdc1  29,8G ext4
мыслю что такой список  пользователю показывать и спрашивать, куда ставить систему.
А дальше как у вас.
« Последнее редактирование: 28 Февраль 2024, 19:06:24 от k0l0p0k »
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +24/-0
  • Автор темы
да
вот команда выдает список устройств, (sda исключен):
если основная система на sda никто не мешает временно, на момент создания загрузочной флэшки, отключить sdb , и оставить sdc ну а дальше штатным образом, вы там ведь не фабрику по созданию загрузочных флэшек открываете :) , но может как вы предложили внедрить предупреждение о нежелательности работы с 2 флешками а только с одной в скрипт ?

мыслю что такой список  пользователю показывать и спрашивать, куда ставить систему.
А дальше как у вас.
  чутка выше обьяснил почему это трудно реализовать
я так и хотел даже свой любимый peco привлёк, не прошёл номер, у меня не получается с двумя
 ...хм пожалуй...
хехе получилось ,приведу промежуточный код  обоих скриптов, выбор в peco ,в ручную , но это пока, я думаю можно выбрав в peco в первом скрипте записать в текстовой файл выбраный devи во втором его считать, k0l0p0k с меня + чего я только упрямился
промежуточный код концепт удалил, код в конце поста
в этой верссии выбор в ручную, сейчас поколдую чтоб считать device для второго файла, этот код как концепт
« Последнее редактирование: 28 Февраль 2024, 21:08:32 от totiks2012 »

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1722
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
вы там ведь не фабрику по созданию загрузочных флэшек открываете :) ,
А если очень хочется?)
Тут надо формализировать подзадачи и сделать максимально универсально.
« Последнее редактирование: 28 Февраль 2024, 20:23:36 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.