import os import subprocess import gradio as gr import shutil def gerar_binario_iso(html_content): build_dir = "iso_data" iso_file = "sistema_bootavel.iso" # Limpa restos de builds antigos if os.path.exists(build_dir): shutil.rmtree(build_dir) os.makedirs(os.path.join(build_dir, "boot/isolinux"), exist_ok=True) # 1. Salva seu HTML como a interface do SO with open(os.path.join(build_dir, "index.html"), "w", encoding="utf-8") as f: f.write(html_content) # 2. Copia arquivos de boot do sistema para a ISO (O que o VirtualBox precisa) # Procuramos os binários instalados via apt-get no Dockerfile try: shutil.copy("/usr/lib/ISOLINUX/isolinux.bin", f"{build_dir}/boot/isolinux/") shutil.copy("/usr/lib/syslinux/modules/bios/ldlinux.c32", f"{build_dir}/boot/isolinux/") except: pass # 3. Configuração do menu de boot cfg = "default webos\nlabel webos\n kernel /vmlinuz\n append initrd=/initrd.img quiet" with open(os.path.join(build_dir, "boot/isolinux/isolinux.cfg"), "w") as f: f.write(cfg) # 4. Criação do Binário ISO (Setor de boot El Torito) comando = [ "xorriso", "-as", "mkisofs", "-o", iso_file, "-b", "boot/isolinux/isolinux.bin", "-c", "boot/isolinux/boot.cat", "-no-emul-boot", "-boot-load-size", "4", "-boot-info-table", "-R", "-J", build_dir ] try: subprocess.run(comando, check=True) return iso_file except Exception as e: return f"Erro: {str(e)}" # Interface Minimalista with gr.Blocks() as demo: gr.Markdown("# 💾 HTML to Binary (ISO) Converter") html_input = gr.Code(label="Seu código HTML", language="html", lines=15, value="