2
0
mirror of https://github.com/mbusb/multibootusb synced 2024-11-18 15:25:46 +00:00
multibootusb/scripts/menus.py
mbusb 815241572c Improvements and memdisk for ISO boot:
1. Catch 7zip error while listing ISO content
2. Way to detect .ISO and .IMG files for direct booting using memdisk
3. Added a class for finding available RAM size
4. Added feature for selecting ISO, IMG, Zip and all files options in file chooser dialog
5. Added generic menu entry for memdisk
6. Corrected path to menu.lst file for distrs based on grub4dos
7. Fix for crash when multicard reader is inserted on the system without a SD card
8. Correctly detect USB disk information using udisk2-dbus without crash
2017-05-14 22:32:56 +05:30

104 lines
4.1 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Name: menus.py
# Purpose: Module contain custom menu entries for fewer distros
# Authors: Sundar
# Licence: This file is a part of multibootusb package. You can redistribute it or modify
# under the terms of GNU General Public License, v.2 or above
from . import iso
from . import config
from .gen import MemoryCheck
def pc_tool_config(syslinux=True, grub=False):
"""
Menu entry for PC Tool ISO
:param syslinux:
:param grub:
:return:
"""
if syslinux is True:
return """KERNEL /system/stage1
APPEND initrd=/system/stage2 root=/dev/ram0 rw rdinit=/linuxrc video=vesa:ywrap,mtrr vga=0x303 loglevel=0 splash boot=cdrom\n"""
elif grub is True:
return """menuentry """ + iso.iso_basename(config.image_path) + """ {
linux /system/stage1 root=/dev/ram0 rw rdinit=/linuxrc video=vesa:ywrap,mtrr vga=0x303 loglevel=0 splash boot=cdrom
initrd /system/stage2\n}"""
def grub2only():
return """MENU LABEL """ + iso.iso_basename(config.image_path) + """
LINUX /multibootusb/grub/lnxboot.img
INITRD /multibootusb/grub/core.img
TEXT HELP
Switch to GRUB2 to select boot options.
ENDTEXT\n"""
def rising(syslinux=True, grub=False):
"""
Menu entry for Raising Anti-virus. Only grub2 menu is required. Syslinux menu is automatically added
:param syslinux:
:param grub:
:return:
"""
if grub is True:
return """menuentry """ + iso.iso_basename(config.image_path) + """ {
linux /multibootusb/linux/boot/isolinux/vmlinuz lang=us ramdisk_size=100000 init=/etc/init apm=power-off pnpbios=off vga=0x314 nomce quiet BOOT_IMAGE=rising
initrd /multibootusb/linux/boot/isolinux/ravroot.gz\n}"""
def memdisk_iso_cfg(syslinux=True, grub=False):
"""
Menu entry for ISO using memdisk. Need to have more RAM to make it work with mendisk properly.
By default, memory size is set to system RAM size or 3GB. The 'vmalloc=3072M' can also be used as 'mem=3G'.
:param syslinux: Default is True
:param grub: Default is False
:return: Menu entry for syslinux and grub2
"""
M = MemoryCheck()
avl_mem = M.value
if not avl_mem:
avl_mem = int(3072)
if syslinux is True:
menu_entry = 'LINUX memdisk\n' \
'INITRD /multibootusb/' + iso.iso_basename(config.image_path) + '/' + iso.iso_name(config.image_path) + '\n' \
'APPEND iso vmalloc=' + str(avl_mem) + 'M\n'
elif grub is True:
menu_entry = ' search --set -f /multibootusb/' + iso.iso_basename(config.image_path) + '/' + iso.iso_name(config.image_path) + '\n' \
' menuentry ' + iso.iso_basename(config.image_path) + ' {\n' \
' linux16 /multibootusb/memdisk iso vmalloc=' + str(avl_mem) + 'M\n' \
' initrd16 /multibootusb/' + iso.iso_basename(config.image_path) + '/' + iso.iso_name(config.image_path) + '\n' \
'}\n'
return menu_entry
def memdisk_img_cfg(syslinux=True, grub=False):
"""
Menu entry for IMG files using memdisk. Need to have more RAM to make it work with mendisk properly.
By default, memory size is set to system RAM size or 3GB.
:param syslinux: Default is True
:param grub: Default is False
:return: Menu entry for syslinux and grub2
"""
M = MemoryCheck()
avl_mem = M.value
if not avl_mem:
avl_mem = int(3072)
if syslinux is True:
menu_entry = 'LINUX memdisk\n' \
'INITRD /multibootusb/' + iso.iso_basename(config.image_path) + '/' + iso.iso_name(config.image_path) + '\n' \
'APPEND raw vmalloc=' + str(avl_mem) + 'M\n'
elif grub is True:
menu_entry = ' search --set -f /multibootusb/' + iso.iso_basename(config.image_path) + '/' + iso.iso_name(config.image_path) + '\n' \
' menuentry ' + iso.iso_basename(config.image_path) + ' {\n' \
' linux16 /multibootusb/memdisk raw vmalloc=' + str(avl_mem) + 'M\n' \
' initrd16 /multibootusb/' + iso.iso_basename(config.image_path) + '/' + iso.iso_name(config.image_path) + '\n' \
'}\n'
return menu_entry