|
34 | 34 | document.getElementById("terminal").style = "";
|
35 | 35 | }
|
36 | 36 |
|
37 |
| - const bzimageUrl = "./filesystem/123ccf58.bin"; |
| 37 | + const bzimageUrl = "./filesystem/27d6e559.bin"; |
38 | 38 | const options = {
|
39 | 39 | ...baseOptions,
|
40 | 40 | ...(boot
|
|
58 | 58 |
|
59 | 59 | var emulator = new V86Starter(options);
|
60 | 60 |
|
| 61 | + function initTerm() { |
| 62 | + const fitAddon = new FitAddon.FitAddon(); |
| 63 | + emulator.serial_adapter.term.loadAddon(fitAddon); |
| 64 | + fitAddon.fit(); |
| 65 | + window.addEventListener("resize", () => fitAddon.fit()); |
| 66 | + } |
| 67 | + |
| 68 | + function sendBackgroundCommands(commands) { |
| 69 | + const filename = `${(Math.random() + 1).toString(36).substring(7)}.sh`; |
| 70 | + emulator.create_file( |
| 71 | + `/inbox/${filename}`, |
| 72 | + new TextEncoder("UTF-8").encode(commands.join("\n")) |
| 73 | + ); |
| 74 | + } |
| 75 | + |
61 | 76 | if (!boot) {
|
62 | 77 | emulator.add_listener("emulator-ready", function () {
|
63 |
| - const fitAddon = new FitAddon.FitAddon(); |
64 |
| - emulator.serial_adapter.term.loadAddon(fitAddon); |
65 |
| - fitAddon.fit(); |
66 |
| - window.addEventListener("resize", () => fitAddon.fit()); |
67 |
| - // emulator.serial_adapter.term.setOption("allowTransparency", true); |
68 |
| - // emulator.serial_adapter.term.setOption("theme", { background: "transparent" }); |
| 78 | + initTerm(); |
69 | 79 | setTimeout(() => {
|
70 |
| - emulator.serial0_send("/etc/init.d/S40network restart\n"); |
71 |
| - emulator.serial0_send("psql -U postgres\n"); |
72 |
| - emulator.serial0_send('\\! echo "boot_completed"; reset\n'); |
| 80 | + sendBackgroundCommands(["/etc/init.d/S40network restart"]); |
| 81 | + emulator.serial0_send( |
| 82 | + `\\! stty rows ${emulator.serial_adapter.term.rows} cols ${emulator.serial_adapter.term.cols} && reset\n` |
| 83 | + ); |
| 84 | + emulator.serial_adapter.term.focus(); |
73 | 85 | }, 0);
|
74 | 86 | });
|
75 |
| - |
76 |
| - function handleBoot(line) { |
77 |
| - if (line.startsWith("postgres=# boot_completed")) { |
78 |
| - emulator.remove_listener(handleBoot); |
79 |
| - setTimeout(() => { |
80 |
| - document.getElementById("terminal").style = "filter: none;"; |
81 |
| - emulator.serial_adapter.term.focus(); |
82 |
| - }, 300); |
83 |
| - } |
84 |
| - } |
85 |
| - emulator.add_listener("serial0-output-line", handleBoot); |
86 | 87 | }
|
87 | 88 |
|
88 | 89 | var state;
|
|
182 | 183 | </div>
|
183 | 184 | </div>
|
184 | 185 | <div class="container">
|
185 |
| - <div class="xterminal" style="margin-right: 25px"> |
186 |
| - <div id="terminal" style="filter: blur(3px)"></div> |
| 186 | + <div class="xterminal"> |
| 187 | + <div id="terminal"></div> |
187 | 188 | </div>
|
188 | 189 | </div>
|
189 | 190 | </body>
|
0 commit comments