Пользовательского поиска
Пятница, 26.04.2024, 09:19
Приветствую Вас Гость | RSS
Главная | Руководства | Регистрация | Вход
Меню Проекта
Категории каталога
Форма входа
Логин:
Пароль:
Поиск
Мы Рекомендуем:
Мнение Общественности
Какую файловую систему на флешке вы предпочитаете?
1. NTFS
2. FAT-16/32
3. Ext-2/3
4. Другую
Всего ответов: 4979
Статистика

Всего на Сайте: 3
Гостей: 2
Пользователей: 1
Bogdanbuj
GreenFlash
Главная » Статьи » Основные Инструкции » Дополнения

Программа для перевода (sys/iso)linux.cfg в lst-файлы
Программа для перевода (sys/iso)linux.cfg в lst-файлы

В одной теме меня спросили, как я "перевожу" конфигурационные файлы syslinux'а в lst-файлы. Я описал алгоритм и подумал, что он достаточно прост, чтобы его можно было автоматизировать.
AutoIt3 - язык достаточно простой, поэтому уже через час программа была готова. Её можно скачать в уже скомпилированном виде, вот здесь: http://narod.ru/disk/7398902000/menulst.exe.html.
Некоторые антивирусы ругаются на AutoIt-програмы (он запаковывает их UPX'ом, которого антивирусы почему-то боятся), поэтому, чтобы Вы не волновались, можете скомпилировать самостоятельно, скачав компилятор здесь.
Вот исходный код программы:
Code

; программа для перевода (sys/iso)linux.cfg в .lst файлы от grub4dos
; написана 5 апреля 2009 года
; допускаются любые виды распространения и использования
#NoTrayIcon
$file = FileOpenDialog("Выберите конфигурационный файл sys/isolinux", @WorkingDir, "Syslinux(syslinux.cfg)|Isolinux(isolinux.cfg)|Все файлы(*.*)")
If @error Then Exit
$hndl = FileOpen($file, 0)
If $hndl = -1 Then
  MsgBox(16, "Ошибка", "Не удалось открыть файл!")
  Exit
EndIf
$l = 1
Dim $data[1024]
Dim $ndata[1024]
$kernel = InputBox("Введите путь к ядру","Введите полный путь к файлу kernel относительно корня флешки, например, /slax/boot/kernel")
If @error Then Exit
$initrd = InputBox("Введите путь к initrd","Введите полный путь к файлу initrd отностельно корня флешки, например, /slax/boot/initrd.gz")
If @error Then Exit

; сообщить о чтании данных
SplashTextOn("","Чтение даных из файла...","300","20","-1","-1",1,"","","")

While 1
  $data[$l] = FileReadLine($hndl,$l)
  If @error = -1 Then ExitLoop
  $l = $l + 1
WEnd

; сообщить об обработке данных
SplashTextOn("","Обработка данных...","200","20","-1","-1",3,"","","")

For $i = 1 To $l
  Select
  Case StringInStr($data[$i],"#") > 0
  $ndata[$i] = $data[$i]
  Case StringInStr($data[$i],"label") > 0
  $ndata[$i] = Label($data[$i],$i)
  Case StringInStr($data[$i],"kernel") > 0  
  $ndata[$i] = Kernel($data[$i],$i)
  Case StringInStr($data[$i],"append") > 0
  $ndata[$i] = Append($data[$i],$i)
  Case Else
  $ndata[$i] = "#"&$data[$i]
  EndSelect
Next

Func Label($text,$number)
  $cut = StringInStr($data[$number],"label")+5
  Return "title "&StringTrimLeft($text,$cut)
EndFunc

Func Kernel($text,$number)
  $cut = StringInStr($data[$number + 1],"append")+6
  Return "kernel "&$kernel&" "&StringTrimLeft($data[$number + 1],$cut)
EndFunc

Func Append($text,$number)
  Return "initrd "&$initrd
EndFunc

$nfile = $file&".lst"
$nhnd = FileOpen($nfile,1)

; сообщить о записи данных
SplashTextOn("","Запись данных в файл "&$nfile&"...","250","20","-1","-1",3,"","","")

For $i = 1 To $l
  FileWriteLine($nhnd,$ndata[$i]&@CRLF)
Next

MsgBox(64,"Обработка завершена","Перевод завершён, результаты записаны в файл "&$nfile)
Категория: Дополнения | Добавил: Sh1td0wn (05.04.2009) | Автор: Иван
Просмотров: 5658 | Комментарии: 9 | Рейтинг: 5.0/6
Всего комментариев: 9
avatar
1 wolf33 • 14:33, 17.06.2009
Cпасибо
avatar
2 FleXXo • 11:45, 10.01.2010
biggrin пасиб чувак!, с помощью нее наконец запустил YLMF OS)
avatar
3 -MAXX- • 22:41, 21.02.2010
спасибо, полезная штука
avatar
4 drjohnson • 18:09, 04.03.2010
Огромное спасибо biggrin
avatar
5 Terry123 • 16:24, 29.06.2010
Спасибо!
avatar
6 fan11 • 11:26, 16.11.2010
так эта прога параметры загрузки ядра достает??
avatar
7 Sh1td0wn • 16:38, 16.11.2010
Вроде того. Рекомендую один раз постигнуть и действовать вручную, т.к. есть некоторые моменты, которые эта программа не обрабатывает.
avatar
8 npu3pak • 11:00, 18.06.2011
Честно сказать я не вижу смысла в этой программе. Понять как переводить с (sys/iso)linux.cfg в lst-файлы очень просто. И если б люди не ленились, то за полчаса можно разобраться.
Лучше скажите мне как можно узнать всевозможные параметры того. или иного ядра? Ну т.е. часто вижу как в lst в параметрах загрузки ядра, люди добавляют что-то от себя. Вот как можно узнать какие вообще параметры можно добавлять? А ещё лучше и описание этих параметров, что какие дают и зачем их использовать. smile
avatar
9 kenny5705 • 20:57, 27.08.2011
ага, тоже интересно откуда берутся эти параметры...
avatar
Copyright GreenFlash © 2024
Рейтинг@Mail.ru