rev |
line source |
slaxemulator@10
|
1 <?php
|
slaxemulator@10
|
2 if (false) { // no php support on this mirror !
|
slaxemulator@10
|
3 ?>
|
pascal@302
|
4 <!DOCTYPE html>
|
pascal@302
|
5 <html lang="en">
|
slaxemulator@10
|
6 <head>
|
pascal@302
|
7 <meta charset="UTF-8">
|
slaxemulator@10
|
8 <title>SliTaz Boot Floppies redirection</title>
|
pascal@302
|
9 <meta name="description" content="slitaz boot floppies builder redirection">
|
pascal@302
|
10 <meta name="robots" content="index, nofollow">
|
pascal@302
|
11 <meta name="viewport" content="width=device-width, initial-scale=1">
|
pascal@302
|
12 <meta name="author" content="SliTaz Contributors">
|
pascal@302
|
13 <meta http-equiv="Refresh" content="0;url=http://mirror1.slitaz.org/floppies/builder/index.php">
|
slaxemulator@10
|
14 </head>
|
pascal@302
|
15 <body>
|
pascal@302
|
16 <script type="text/javascript">
|
pascal@302
|
17 window.location.replace('http://mirror1.slitaz.org/floppies/builder/index.php')
|
pascal@302
|
18 </script>
|
pascal@302
|
19 <noscript>
|
pascal@302
|
20 <frameset rows="100%">
|
pascal@302
|
21 <frame src="http://mirror1.slitaz.org/floppies/builder/index.php">
|
pascal@302
|
22 <noframes>
|
pascal@302
|
23 <body>Please follow <a href="http://mirror1.slitaz.org/floppies/builder/index.php
|
pascal@302
|
24 ">this link</a>.</body>
|
pascal@302
|
25 </noframes>
|
pascal@302
|
26 </frameset>
|
pascal@302
|
27 </noscript>
|
pascal@302
|
28 </body>
|
pascal@302
|
29 </html>
|
slaxemulator@10
|
30 <?php
|
slaxemulator@10
|
31 }
|
slaxemulator@10
|
32 ini_set('upload_max_filesize','16M');
|
slaxemulator@10
|
33 ini_set('post_max_size','16M');
|
slaxemulator@10
|
34 if (isset($_GET['id']) && is_file("/tmp/".$_GET['id']."/fd")) {
|
slaxemulator@10
|
35
|
slaxemulator@10
|
36 // Download a floppy image
|
pascal@302
|
37
|
pascal@302
|
38 $size = $_GET['s'];
|
pascal@302
|
39 if ($size == 0)
|
pascal@302
|
40 $size = filesize("/tmp/".$_GET['id']."/fd");
|
slaxemulator@10
|
41 header("Content-Type: application/octet-stream");
|
slaxemulator@10
|
42 header("Content-Length: ".$size);
|
slaxemulator@10
|
43 header("Content-Disposition: attachment; filename=".
|
slaxemulator@10
|
44 sprintf("fd%03d.img",$_GET['n']));
|
slaxemulator@10
|
45 $cmd = "cat /tmp/".$_GET['id']."/fd";
|
slaxemulator@10
|
46 if ($_GET['s'] != 0) {
|
slaxemulator@10
|
47 $cmd .= " /dev/zero | dd count=1 bs=".$_GET['s'];
|
slaxemulator@10
|
48 if ($_GET['n'] > 1)
|
slaxemulator@10
|
49 $cmd .= " skip=".($_GET['n']-1);
|
slaxemulator@10
|
50 }
|
slaxemulator@10
|
51 echo `$cmd 2> /dev/null`;
|
slaxemulator@10
|
52 exit;
|
slaxemulator@10
|
53 }
|
slaxemulator@10
|
54 ?>
|
pascal@302
|
55 <!DOCTYPE html>
|
pascal@302
|
56 <html lang="en">
|
slaxemulator@10
|
57 <head>
|
pascal@302
|
58 <meta charset="UTF-8">
|
slaxemulator@10
|
59 <title>SliTaz Boot Floppies</title>
|
pascal@302
|
60 <meta name="description" content="slitaz boot floppies builder">
|
pascal@302
|
61 <meta name="robots" content="index, nofollow">
|
pascal@302
|
62 <meta name="viewport" content="width=device-width, initial-scale=1">
|
pascal@302
|
63 <meta name="author" content="SliTaz Contributors">
|
pascal@302
|
64 <link rel="shortcut icon" href="../static/favicon.ico">
|
pascal@302
|
65 <link rel="stylesheet" href="../static/slitaz.min.css">
|
pascal@302
|
66 <style>
|
pascal@302
|
67 input[type=text] { width: inherit; }
|
slaxemulator@10
|
68 </style>
|
slaxemulator@10
|
69 </head>
|
pascal@302
|
70 <body>
|
pascal@302
|
71
|
pascal@302
|
72 <script>de=document.documentElement;de.className+=(("ontouchstart" in de)?' touch':' no-touch');</script>
|
pascal@302
|
73
|
pascal@302
|
74 <header>
|
pascal@302
|
75 <h1 id="top"><a href="http://www.slitaz.org/">Boot floppies builder</a></h1>
|
pascal@302
|
76 <div class="network">
|
pascal@302
|
77 <a href="http://www.slitaz.org/" class="home"></a>
|
pascal@302
|
78 <a href="bootloader" title="Build your floppy sets without Internet">Shell builder</a>
|
pascal@185
|
79 <a href="../floppy-grub4dos" title="Boot tools">Generic boot floppy</a>
|
pascal@94
|
80 </div>
|
pascal@302
|
81 </header>
|
slaxemulator@10
|
82
|
pascal@302
|
83 <!-- Block -->
|
pascal@302
|
84 <div class="block"><div>
|
pascal@302
|
85
|
pascal@302
|
86 <!-- Navigation menu -->
|
slaxemulator@10
|
87
|
slaxemulator@10
|
88 <?php
|
slaxemulator@10
|
89
|
slaxemulator@10
|
90 // Cleanup old sessions
|
pascal@302
|
91
|
slaxemulator@10
|
92 $dir = opendir("/tmp");
|
slaxemulator@10
|
93 while (($name = readdir($dir)) !== false) {
|
slaxemulator@10
|
94 if (preg_match('/^fdbuild/',$name) == 0) continue;
|
slaxemulator@10
|
95 if (filemtime("/tmp/$name") > strtotime("-1 hour")) continue;
|
slaxemulator@10
|
96 system("rm -rf /tmp/$name");
|
slaxemulator@10
|
97 }
|
slaxemulator@10
|
98 closedir($dir);
|
slaxemulator@10
|
99
|
slaxemulator@10
|
100 function get_long($file, $offset)
|
slaxemulator@10
|
101 {
|
slaxemulator@10
|
102 $value = 0;
|
slaxemulator@10
|
103 if ($fp = fopen($file,"r")) {
|
slaxemulator@10
|
104 fseek($fp,$offset,SEEK_SET);
|
slaxemulator@10
|
105 for ($i = 0; $i < 32; $i += 8) {
|
slaxemulator@10
|
106 $value += ord(fgetc($fp)) << $i;
|
slaxemulator@10
|
107 }
|
slaxemulator@10
|
108 fclose($fp);
|
slaxemulator@10
|
109 }
|
slaxemulator@10
|
110 return $value;
|
slaxemulator@10
|
111 }
|
slaxemulator@10
|
112
|
slaxemulator@10
|
113 function error($string, $title="Error")
|
slaxemulator@10
|
114 {
|
slaxemulator@10
|
115 echo <<<EOT
|
pascal@302
|
116 <nav>
|
pascal@302
|
117 <header>$title</header>
|
pascal@302
|
118 <p>$string</p>
|
pascal@302
|
119 </nav>
|
slaxemulator@10
|
120 EOT;
|
slaxemulator@10
|
121 }
|
slaxemulator@10
|
122
|
slaxemulator@10
|
123 $size = 0;
|
slaxemulator@10
|
124 $initrd_size = 0;
|
pascal@185
|
125 $info_size = 0;
|
pascal@302
|
126
|
slaxemulator@10
|
127 // Upload kernel
|
pascal@302
|
128
|
slaxemulator@10
|
129 foreach($_FILES as $data) {
|
pascal@185
|
130 $msg="The file ".$data['name']." ";
|
slaxemulator@10
|
131 switch ($data["error"]) {
|
slaxemulator@10
|
132 case UPLOAD_ERR_INI_SIZE :
|
slaxemulator@10
|
133 error($msg."exceeds upload_max_filesize.");
|
slaxemulator@10
|
134 break;
|
slaxemulator@10
|
135 case UPLOAD_ERR_FORM_SIZE :
|
slaxemulator@10
|
136 error($msg."exceeds max_post_size.");
|
slaxemulator@10
|
137 break;
|
slaxemulator@10
|
138 case UPLOAD_ERR_PARTIAL :
|
slaxemulator@10
|
139 error($msg."was only partially uploaded.");
|
slaxemulator@10
|
140 break;
|
slaxemulator@10
|
141 case UPLOAD_ERR_NO_TMP_DIR :
|
slaxemulator@10
|
142 error("Missing a temporary folder.");
|
slaxemulator@10
|
143 break;
|
slaxemulator@10
|
144 case UPLOAD_ERR_CANT_WRITE :
|
slaxemulator@10
|
145 error("Failed to write file to disk.");
|
slaxemulator@10
|
146 break;
|
slaxemulator@10
|
147 }
|
slaxemulator@10
|
148 }
|
slaxemulator@10
|
149 if (isset($_FILES["kernel"]['tmp_name']) &&
|
pascal@302
|
150 is_uploaded_file($_FILES["kernel"]['tmp_name'])) {
|
slaxemulator@10
|
151 $tmp_dir = tempnam('','fdbuild');
|
slaxemulator@10
|
152 if (file_exists($tmp_dir)) unlink($tmp_dir);
|
slaxemulator@10
|
153 mkdir($tmp_dir);
|
slaxemulator@10
|
154 $tmp_dir .= '/';
|
slaxemulator@10
|
155 move_uploaded_file($_FILES["kernel"]['tmp_name'],
|
slaxemulator@10
|
156 $tmp_dir."kernel");
|
slaxemulator@10
|
157 $kernel = $tmp_dir."kernel";
|
slaxemulator@10
|
158 $boot_version = get_long($kernel,0x206) & 255;
|
pascal@185
|
159 if (get_long($kernel,0x202) != 0x53726448) // 'HdrS' magic
|
pascal@185
|
160 $boot_version = 0;
|
slaxemulator@10
|
161 $size = get_long($kernel,0x1F4); // syssize paragraphs
|
slaxemulator@10
|
162 if ($boot_version < 4) $size &= 0xFFFF; // 16 bits before 2.4
|
slaxemulator@10
|
163 $size = ($size + 0xFFF) & 0xFFFF000; // round up to 64K
|
slaxemulator@10
|
164 $size <<= 4; // paragraphs -> bytes
|
slaxemulator@10
|
165 $msg = "The size of the file ".$_FILES["kernel"]['name'];
|
slaxemulator@10
|
166 }
|
pascal@185
|
167
|
pascal@185
|
168 if ($size && isset($_FILES["info"]['tmp_name']) &&
|
pascal@302
|
169 is_uploaded_file($_FILES["info"]['tmp_name'])) {
|
pascal@185
|
170 move_uploaded_file($_FILES["info"]['tmp_name'],
|
pascal@185
|
171 $tmp_dir."info");
|
pascal@185
|
172 $info_size = $_FILES["info"]['size'];
|
pascal@185
|
173 }
|
pascal@302
|
174
|
slaxemulator@10
|
175 // Upload initrd
|
pascal@302
|
176
|
pascal@302
|
177 if ($size) for ($i = 0; $i < count($_FILES["initrd"]['name']); $i++)
|
pascal@302
|
178 if (isset($_FILES["initrd"]['tmp_name'][$i]) &&
|
pascal@302
|
179 is_uploaded_file($_FILES["initrd"]['tmp_name'][$i])) {
|
pascal@302
|
180 move_uploaded_file($_FILES["initrd"]['tmp_name'][$i],
|
pascal@302
|
181 $tmp_dir."initrd.".$i);
|
pascal@302
|
182 $initrd_cmd .= " --initrd ".$tmp_dir."initrd.".$i;
|
pascal@302
|
183 $initrd_size = $_FILES["initrd"]['size'][$i];
|
slaxemulator@10
|
184 $size += $initrd_size;
|
pascal@302
|
185 if ($i == 0)
|
slaxemulator@10
|
186 $msg = "The total size of the files ".$_FILES["kernel"]['name'].
|
pascal@302
|
187 " and ".$_FILES["initrd"]['name'][$i];
|
pascal@302
|
188 else $msg .= ", ".$FILE["initrd"]['name'][$i];
|
slaxemulator@10
|
189 }
|
pascal@302
|
190 if ($initrd_size) for ($i = 0; $i < count($_FILES["initrd2"]['name']); $i++)
|
pascal@302
|
191 if (isset($_FILES["initrd2"]['tmp_name'][$i]) &&
|
pascal@302
|
192 is_uploaded_file($_FILES["initrd2"]['tmp_name'][$i])) {
|
pascal@302
|
193 move_uploaded_file($_FILES["initrd2"]['tmp_name'][$i],
|
pascal@302
|
194 $tmp_dir."initrd2.".$i);
|
pascal@302
|
195 $initrd2_cmd .= " --initrd ".$tmp_dir."initrd2.".$i;
|
pascal@302
|
196 $initrd2_size = $_FILES["initrd2"]['size'][$i];
|
slaxemulator@10
|
197 $size += $initrd2_size;
|
pascal@302
|
198 $msg .= ", ".$FILE["initrd2"]['name'][$i];
|
slaxemulator@10
|
199 }
|
slaxemulator@10
|
200 if ($size == 0) {
|
slaxemulator@10
|
201 if (isset($tmp_dir))
|
slaxemulator@10
|
202 system("rm -f $tmp_dir");
|
slaxemulator@10
|
203 }
|
slaxemulator@10
|
204 else {
|
slaxemulator@10
|
205 $cmd = "./bootloader ".$tmp_dir."kernel --prefix "
|
slaxemulator@10
|
206 . $tmp_dir."fd --format 0 --flags ".$_POST['flags']
|
pascal@185
|
207 . " --video ".$_POST['video']." --mem ".$_POST['ram'];
|
pascal@185
|
208 if ($_POST['edit'] == "")
|
pascal@185
|
209 $cmd .= " --dont-edit-cmdline";
|
slaxemulator@10
|
210 if ($_POST['cmdline'])
|
slaxemulator@10
|
211 $cmd .= " --cmdline '".$_POST['cmdline']."'";
|
pascal@185
|
212 if ($info_size)
|
pascal@185
|
213 $cmd .= " --info ".$tmp_dir."info";
|
slaxemulator@10
|
214 if (file_exists($_POST['rdev']))
|
slaxemulator@10
|
215 $cmd .= " --rdev ".$_POST['rdev'];
|
slaxemulator@10
|
216 if ($initrd_size)
|
pascal@302
|
217 $cmd .= $initrd_cmd;
|
slaxemulator@10
|
218 if ($initrd2_size)
|
pascal@302
|
219 $cmd .= $initrd2_cmd;
|
slaxemulator@10
|
220 switch ($_POST['size']) {
|
slaxemulator@10
|
221 case 1763328 :
|
slaxemulator@10
|
222 case 2015232 :
|
slaxemulator@10
|
223 case 3526656 :
|
slaxemulator@10
|
224 case 4030464 :
|
slaxemulator@10
|
225 $cmd .= " --tracks 82"; break;
|
slaxemulator@10
|
226 case 1784832 :
|
slaxemulator@10
|
227 $cmd .= " --tracks 83"; break;
|
slaxemulator@10
|
228 }
|
slaxemulator@10
|
229 shell_exec($cmd);
|
slaxemulator@10
|
230 $count = 1;
|
slaxemulator@10
|
231 if ($_POST['size'] != 0) {
|
slaxemulator@10
|
232 $count += (filesize($tmp_dir."fd") -1) / $_POST['size'];
|
slaxemulator@10
|
233 $padding = $_POST['size'] -
|
slaxemulator@10
|
234 (filesize($tmp_dir."fd") % $_POST['size']);
|
slaxemulator@10
|
235 }
|
slaxemulator@10
|
236 }
|
slaxemulator@10
|
237 $sizes = array(
|
slaxemulator@10
|
238 "368640" => "360 KB", "737280" => "720 KB",
|
slaxemulator@10
|
239 "1228800" => "1.20 MB",
|
slaxemulator@10
|
240 "1474560" => "1.44 MB", "1638400" => "1.60 MB",
|
slaxemulator@10
|
241 "1720320" => "1.68 MB", "1763328" => "1.72 MB",
|
slaxemulator@10
|
242 "1784832" => "1.74 MB", "1802240" => "1.76 MB",
|
slaxemulator@10
|
243 "1884160" => "1.84 MB", "1966080" => "1.92 MB",
|
slaxemulator@10
|
244 "2015232" => "1.96 MB", "2949120" => "2.88 MB",
|
slaxemulator@10
|
245 "3440640" => "3.36 MB", "3526656" => "3.44 MB",
|
slaxemulator@10
|
246 "3932160" => "3.84 MB", "4030464" => "3.92 MB",
|
slaxemulator@10
|
247 "0" => "no limit"
|
slaxemulator@10
|
248 );
|
slaxemulator@10
|
249
|
slaxemulator@10
|
250 function show_size($size)
|
slaxemulator@10
|
251 {
|
slaxemulator@10
|
252 global $sizes;
|
slaxemulator@10
|
253 if ($size != 0) return " ".$sizes[$size];
|
slaxemulator@10
|
254 }
|
slaxemulator@10
|
255 ?>
|
slaxemulator@10
|
256
|
pascal@302
|
257 <!-- End navigation menu -->
|
pascal@302
|
258 </div></div>
|
slaxemulator@10
|
259
|
slaxemulator@10
|
260
|
slaxemulator@10
|
261 <!-- Content -->
|
pascal@302
|
262 <main>
|
slaxemulator@10
|
263
|
pascal@94
|
264 <h2>Floppy image set builder</h2>
|
slaxemulator@10
|
265
|
pascal@302
|
266 <script>
|
pascal@302
|
267 if (window.File && window.FileReader && window.FileList && window.Blob) {
|
pascal@302
|
268 try {
|
pascal@302
|
269 updateHtmlCode();
|
pascal@302
|
270 }
|
pascal@302
|
271 catch (any) {
|
pascal@302
|
272 var element = document.createElement("script");
|
pascal@302
|
273 element.src = "clientbuilder.js";
|
pascal@302
|
274 element.type = "text/javascript";
|
pascal@302
|
275 element.onload = function() {
|
pascal@302
|
276 updateHtmlCode();
|
pascal@302
|
277 };
|
pascal@302
|
278 document.body.appendChild(element);
|
pascal@302
|
279 }
|
pascal@302
|
280 }
|
pascal@302
|
281 </script>
|
slaxemulator@10
|
282 <?php
|
slaxemulator@10
|
283 if (!isset($count)) {
|
slaxemulator@10
|
284 $max = rtrim(ini_get('upload_max_filesize'),"M");
|
slaxemulator@10
|
285 $max_post = rtrim(ini_get('post_max_size'),"M");
|
slaxemulator@10
|
286 if ($max_post < $max) $max = $max_post;
|
pascal@302
|
287 $msg = "the web server can't upload more than $max MB";
|
slaxemulator@10
|
288 ?>
|
pascal@302
|
289 <form id="io" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
|
pascal@302
|
290
|
pascal@302
|
291 <div class="large"><table>
|
slaxemulator@10
|
292 <tr>
|
pascal@302
|
293 <td>Linux kernel:</td>
|
pascal@302
|
294 <td><input type="file" name="kernel" size="37" /> <i>required</i></td>
|
slaxemulator@10
|
295 </tr>
|
slaxemulator@10
|
296 <tr>
|
pascal@302
|
297 <td>Initramfs / Initrd:</td>
|
pascal@302
|
298 <td><input type="file" name="initrd[]" size="37" multiple /> <i>optional</i></td>
|
slaxemulator@10
|
299 </tr>
|
slaxemulator@10
|
300 <tr>
|
pascal@302
|
301 <td>Extra initramfs:</td>
|
pascal@302
|
302 <td><input type="file" name="initrd2[]" size="37" multiple /> <i>optional</i></td>
|
pascal@185
|
303 </tr>
|
pascal@185
|
304 <tr>
|
pascal@302
|
305 <td>Boot message:</td>
|
pascal@302
|
306 <td><input type="file" name="info" size="37" /> <i>optional</i></td>
|
slaxemulator@10
|
307 </tr>
|
slaxemulator@10
|
308 <tr>
|
pascal@302
|
309 <td>Default cmdline:</td>
|
pascal@302
|
310 <td id="cmdline"><input type="text" name="cmdline" size="36" <?php
|
slaxemulator@10
|
311 if (isset($_GET['cmdline'])) echo 'value="'.$_GET['cmdline'].'"';
|
pascal@185
|
312 ?>/> <input type="checkbox" name="edit" checked="checked" />edit
|
pascal@185
|
313 <i>optional</i></td>
|
slaxemulator@10
|
314 </tr>
|
slaxemulator@10
|
315 <tr>
|
pascal@302
|
316 <td>Root device:</td>
|
pascal@302
|
317 <td><input type="text" name="rdev" size="8" value="<?php
|
slaxemulator@10
|
318 if (isset($_GET['rdev'])) echo $_GET['rdev'];
|
pascal@302
|
319 else echo "/dev/ram0";
|
slaxemulator@10
|
320 ?>" />
|
pascal@185
|
321 Flags: <select name="flags">
|
slaxemulator@10
|
322 <option value="1">R/O</option>
|
slaxemulator@10
|
323 <option value="0" <?php
|
slaxemulator@10
|
324 if (isset($_GET['rdev']) && $_GET['rdev'] == "0")
|
slaxemulator@10
|
325 echo ' selected="selected"'
|
slaxemulator@10
|
326 ?>>R/W</option>
|
slaxemulator@10
|
327 </select>
|
pascal@185
|
328 VESA: <select name="video">
|
slaxemulator@10
|
329 <?php
|
slaxemulator@10
|
330 $selected=-1;
|
slaxemulator@10
|
331 if (isset($_GET['video'])) $selected = $_GET['video'];
|
slaxemulator@10
|
332 $options = array();
|
slaxemulator@10
|
333 $options[-3] = "Ask";
|
pascal@185
|
334 $options[-2] = "Extended";
|
pascal@185
|
335 $options[-1] = "Standard";
|
pascal@185
|
336 for ($i = 0; $i < 16; $i++) $options[$i] = $i;
|
pascal@185
|
337 $options[0xF00] = "80x25";
|
pascal@185
|
338 $options[0xF01] = "80x50";
|
pascal@185
|
339 $options[0xF02] = "80x43";
|
pascal@185
|
340 $options[0xF03] = "80x28";
|
pascal@185
|
341 $options[0xF05] = "80x30";
|
pascal@185
|
342 $options[0xF06] = "80x34";
|
pascal@185
|
343 $options[0xF07] = "80x60";
|
pascal@185
|
344 $options[0x30A] = "132x43";
|
pascal@185
|
345 $options[0x309] = "132x25";
|
pascal@185
|
346 $options[0x338] = "320x200x8"; // 382?
|
pascal@185
|
347 $options[0x30D] = "320x200x15";
|
pascal@185
|
348 $options[0x30E] = "320x200x16";
|
pascal@185
|
349 $options[0x30F] = "320x200x24";
|
pascal@185
|
350 $options[0x320] = "320x200x32";
|
pascal@185
|
351 $options[0x332] = "320x240x8"; // 392?
|
pascal@185
|
352 $options[0x393] = "320x240x15";
|
pascal@185
|
353 $options[0x335] = "320x240x16";// 394?
|
pascal@185
|
354 $options[0x395] = "320x240x24";
|
pascal@185
|
355 $options[0x396] = "320x240x32";
|
pascal@185
|
356 $options[0x333] = "400x300x8";// 3A2?
|
pascal@185
|
357 $options[0x3A3] = "400x300x15";
|
pascal@185
|
358 $options[0x336] = "400x300x16";// 3A4?
|
pascal@185
|
359 $options[0x3A5] = "400x300x24";
|
pascal@185
|
360 $options[0x3A6] = "400x300x32";
|
pascal@185
|
361 $options[0x334] = "512x384x8";// 3B2?
|
pascal@185
|
362 $options[0x3B3] = "512x384x15";
|
pascal@185
|
363 $options[0x337] = "512x384x16";// 3B4?
|
pascal@185
|
364 $options[0x3B5] = "512x384x24";
|
pascal@185
|
365 $options[0x3B6] = "512x384x32";
|
pascal@185
|
366 $options[0x3C2] = "640x350x8";
|
pascal@185
|
367 $options[0x3C3] = "640x350x15";
|
pascal@185
|
368 $options[0x3C4] = "640x350x16";
|
pascal@185
|
369 $options[0x3C5] = "640x350x24";
|
pascal@185
|
370 $options[0x3C6] = "640x350x32";
|
pascal@185
|
371 $options[0x300] = "640x400x8";
|
pascal@185
|
372 $options[0x383] = "640x400x15";
|
pascal@185
|
373 $options[0x339] = "640x400x16";// 384?
|
pascal@185
|
374 $options[0x385] = "640x400x24";
|
pascal@185
|
375 $options[0x386] = "640x400x32";
|
pascal@185
|
376 $options[0x301] = "640x480x8";
|
pascal@185
|
377 $options[0x310] = "640x480x15";
|
pascal@185
|
378 $options[0x311] = "640x480x16";
|
pascal@185
|
379 $options[0x312] = "640x480x24";
|
pascal@185
|
380 $options[0x33A] = "640x480x32";// 321?
|
pascal@302
|
381 $options[879] = "800x500x8";
|
pascal@302
|
382 $options[880] = "800x500x15";
|
pascal@302
|
383 $options[881] = "800x500x16";
|
pascal@302
|
384 $options[882] = "800x500x24";
|
pascal@302
|
385 $options[883] = "800x500x32";
|
pascal@185
|
386 //$options[770] = "800x600x4";
|
pascal@185
|
387 $options[0x303] = "800x600x8";
|
pascal@185
|
388 $options[0x313] = "800x600x15";
|
pascal@185
|
389 $options[0x314] = "800x600x16";
|
pascal@185
|
390 $options[0x315] = "800x600x24";
|
pascal@185
|
391 $options[0x33B] = "800x600x32";//322?
|
pascal@302
|
392 $options[815] = "896x672x8";
|
pascal@302
|
393 $options[816] = "896x672x15";
|
pascal@302
|
394 $options[817] = "896x672x16";
|
pascal@302
|
395 $options[818] = "896x672x24";
|
pascal@302
|
396 $options[819] = "896x672x32";
|
pascal@302
|
397 $options[874] = "1024x640x8";
|
pascal@302
|
398 $options[875] = "1024x640x15";
|
pascal@302
|
399 $options[876] = "1024x640x16";
|
pascal@302
|
400 $options[877] = "1024x640x24";
|
pascal@302
|
401 $options[878] = "1024x640x32";
|
pascal@185
|
402 //$options[772] = "1024x768x4";
|
pascal@185
|
403 $options[0x305] = "1024x768x8";
|
pascal@185
|
404 $options[0x316] = "1024x768x15";
|
pascal@185
|
405 $options[0x317] = "1024x768x16";
|
pascal@185
|
406 $options[0x318] = "1024x768x24";
|
pascal@185
|
407 $options[0x33C] = "1024x768x32";//323?
|
pascal@302
|
408 $options[869] = "1152x720x8";
|
pascal@302
|
409 $options[870] = "1152x720x15";
|
pascal@302
|
410 $options[871] = "1152x720x16";
|
pascal@302
|
411 $options[872] = "1152x720x24";
|
pascal@302
|
412 $options[873] = "1152x720x32";
|
pascal@185
|
413 $options[0x307] = "1280x1024x8";
|
pascal@185
|
414 $options[0x319] = "1280x1024x15";
|
pascal@185
|
415 $options[0x31A] = "1280x1024x16";
|
pascal@185
|
416 $options[0x31B] = "1280x1024x24";
|
pascal@185
|
417 $options[0x33D] = "1280x1024x32";
|
pascal@302
|
418 $options[835] = "1400x1050x8";
|
pascal@302
|
419 $options[837] = "1400x1050x16";
|
pascal@302
|
420 $options[838] = "1400x1040x24";
|
pascal@302
|
421 $options[864] = "1440x900x8";
|
pascal@302
|
422 $options[864] = "1440x900x15";
|
pascal@302
|
423 $options[866] = "1440x900x16";
|
pascal@302
|
424 $options[867] = "1440x900x24";
|
pascal@302
|
425 $options[868] = "1440x900x32";
|
pascal@185
|
426 $options[0x330] = "1600x1200x8";
|
pascal@185
|
427 $options[0x331] = "1600x1200x16";
|
pascal@302
|
428 $options[893] = "1920x1200x8";
|
slaxemulator@10
|
429 foreach ($options as $key => $value) {
|
slaxemulator@10
|
430 echo '<option value="'.$key.'"';
|
slaxemulator@10
|
431 if ($key == $selected || $value == $selected)
|
slaxemulator@10
|
432 echo ' selected="selected"';
|
slaxemulator@10
|
433 echo '>'.$value."</option>\n";
|
slaxemulator@10
|
434 }
|
slaxemulator@10
|
435 ?>
|
pascal@302
|
436 </select>
|
pascal@302
|
437 </td>
|
slaxemulator@10
|
438 </tr>
|
slaxemulator@10
|
439 <tr>
|
pascal@302
|
440 <td>Floppy size:</td>
|
pascal@302
|
441 <td><select name="size">
|
slaxemulator@10
|
442 <?php
|
slaxemulator@10
|
443 foreach ($sizes as $key => $value) {
|
pascal@302
|
444 switch ($key) {
|
pascal@302
|
445 case "368640" :
|
pascal@302
|
446 echo " <optgroup label=\"5¼ SD\">\n";
|
pascal@302
|
447 break;
|
pascal@302
|
448 case "737280" :
|
pascal@302
|
449 echo " </optgroup>\n";
|
pascal@302
|
450 echo " <optgroup label=\"3½ SD\">\n";
|
pascal@302
|
451 break;
|
pascal@302
|
452 case "1228800" :
|
pascal@302
|
453 echo " </optgroup>\n";
|
pascal@302
|
454 echo " <optgroup label=\"5¼ HD\">\n";
|
pascal@302
|
455 break;
|
pascal@302
|
456 case "1474560" :
|
pascal@302
|
457 echo " </optgroup>\n";
|
pascal@302
|
458 echo " <optgroup label=\"3½ HD\">\n";
|
pascal@302
|
459 break;
|
pascal@302
|
460 case "2949120" :
|
pascal@302
|
461 echo " </optgroup>\n";
|
pascal@302
|
462 echo " <optgroup label=\"3½ ED\">\n";
|
pascal@302
|
463 break;
|
pascal@302
|
464 case "0" :
|
pascal@302
|
465 echo " </optgroup>\n";
|
pascal@302
|
466 break;
|
pascal@302
|
467 }
|
slaxemulator@10
|
468 echo " <option value=\"$key\"";
|
slaxemulator@10
|
469 if ($key == "1474560") echo " selected='selected'";
|
slaxemulator@10
|
470 echo ">$value</option>\n";
|
slaxemulator@10
|
471 }
|
slaxemulator@10
|
472 ?>
|
pascal@185
|
473 </select>
|
pascal@185
|
474 RAM used <select name="ram">
|
pascal@185
|
475 <?php
|
pascal@185
|
476 for ($i = 16; $i >= 4; $i--)
|
pascal@185
|
477 echo " <option value=\"$i\">$i MB</option>\n";
|
pascal@185
|
478 ?>
|
pascal@185
|
479 </select>
|
slaxemulator@10
|
480 <input name="build" value="Build floppy set" type="submit" />
|
slaxemulator@10
|
481 </td>
|
slaxemulator@10
|
482 </tr>
|
pascal@302
|
483 </table></div>
|
slaxemulator@10
|
484 <?php
|
slaxemulator@10
|
485 echo <<<EOT
|
pascal@302
|
486 <p id="note1">Note 1: $msg of files (kernel and initramfs) in memory.</p>
|
pascal@302
|
487
|
pascal@302
|
488 <p>Note 2: the extra initramfs may be useful to add your own configuration files.</p>
|
pascal@302
|
489
|
pascal@302
|
490 <p>Note 3: the keyboard is read for ESC or ENTER on every form feed (ASCII 12) in the boot message.</p>
|
pascal@302
|
491 </form>
|
slaxemulator@10
|
492 EOT;
|
slaxemulator@10
|
493 }
|
slaxemulator@10
|
494 else {
|
slaxemulator@10
|
495 ?>
|
pascal@302
|
496
|
pascal@94
|
497 <h4>Download image<?php if ($count >= 2) echo "s"; ?></h4>
|
pascal@302
|
498
|
pascal@94
|
499 <ul>
|
pascal@94
|
500 <?php
|
pascal@94
|
501 for ($i = 1; $i <= $count; $i++) {
|
pascal@94
|
502 echo ' <li><a href="'.$_SERVER["PHP_SELF"].
|
pascal@94
|
503 "?id=".basename($tmp_dir)."&n=$i&s=".
|
pascal@94
|
504 $_POST["size"].'">'.sprintf("fd%03d.img",$i).
|
pascal@94
|
505 show_size($_POST["size"])."</a></li>\n";
|
pascal@94
|
506 }
|
pascal@94
|
507 echo "</ul>\n".floor($padding/1024)."KB padding.\n";
|
pascal@94
|
508 ?>
|
slaxemulator@10
|
509
|
pascal@302
|
510 <p>You can write floppies with SliTaz <code>bootfloppybox</code>, <a
|
pascal@302
|
511 href="http://en.wikipedia.org/wiki/RaWrite">Windows rawrite</a> or simply
|
pascal@302
|
512 <code>dd</code>:</p>
|
slaxemulator@10
|
513
|
pascal@302
|
514 <pre># dd if=fd001.img of=/dev/fd0</pre>
|
pascal@302
|
515
|
pascal@302
|
516 <p>Start your computer with <tt>fd001.img</tt>. It will show the kernel version
|
pascal@302
|
517 string and the kernel cmdline line. You can edit the cmdline. Most users can
|
pascal@302
|
518 just press Enter.</p>
|
slaxemulator@10
|
519
|
slaxemulator@10
|
520 <?php
|
slaxemulator@10
|
521 if ($count >= 2) {
|
slaxemulator@10
|
522 ?>
|
pascal@302
|
523 <p>The floppy is then loaded into memory (one dot each 64K) and you will be
|
pascal@302
|
524 prompted to insert the next floppy, <tt>fd002.img</tt>. And so on.</p>
|
slaxemulator@10
|
525
|
pascal@302
|
526 <p>The floppy set detects disk swaps and can be used without a keyboard.</p>
|
slaxemulator@10
|
527 <?php
|
slaxemulator@10
|
528 }
|
slaxemulator@10
|
529 ?>
|
pascal@302
|
530 <p>Good luck.</p>
|
pascal@302
|
531
|
slaxemulator@10
|
532 <?php
|
slaxemulator@10
|
533 }
|
slaxemulator@10
|
534 ?>
|
slaxemulator@10
|
535
|
pascal@94
|
536
|
pascal@302
|
537 <h3>How does it work?</h3>
|
slaxemulator@10
|
538
|
pascal@302
|
539 <p>This tool updates the boot sector of your kernel with <a
|
pascal@302
|
540 href="http://hg.slitaz.org/wok/raw-file/13835bce7189/syslinux/stuff/iso2exe/bootloader.S">this
|
pascal@302
|
541 code</a>. You may add a default cmdline and an initramfs. The cmdline can be
|
pascal@302
|
542 edited at boot time but the <acronym title="Check for disk swap every 5 seconds"
|
pascal@302
|
543 >keyboard is not mandatory</acronym>. A <a href="bootloader">standalone
|
pascal@302
|
544 version</a> is available to break the web server upload limit.</p>
|
slaxemulator@10
|
545
|
pascal@302
|
546 <p>Each part (boot, setup, boot message, cmdline, kernel, initramfs) is aligned
|
pascal@302
|
547 to 512 bytes. The result is split to fit the floppy size. The last floppy image
|
pascal@302
|
548 is padded with zeros.</p>
|
pascal@302
|
549
|
pascal@302
|
550 <p>You can extract the <u>kernel</u>, <u>cmdline</u> and <u>rootfs</u> files
|
pascal@302
|
551 with <a href="bootloader" title="./bootloader --extract floppy.*">this tool</a>
|
pascal@302
|
552 from the floppy images.</p>
|
pascal@302
|
553
|
pascal@302
|
554
|
pascal@302
|
555 <!-- End of content -->
|
pascal@302
|
556 </main>
|
pascal@302
|
557
|
pascal@302
|
558 <script>
|
pascal@302
|
559 function QRCodePNG(str, obj) {
|
pascal@302
|
560 try {
|
pascal@302
|
561 obj.height = obj.width += 300;
|
pascal@302
|
562 return QRCode.generatePNG(str, {ecclevel: 'H'});
|
pascal@302
|
563 }
|
pascal@302
|
564 catch (any) {
|
pascal@302
|
565 var element = document.createElement("script");
|
pascal@302
|
566 element.src = "/static/qrcode.min.js";
|
pascal@302
|
567 element.type = "text/javascript";
|
pascal@302
|
568 element.onload = function() {
|
pascal@302
|
569 obj.src = QRCode.generatePNG(str, {ecclevel: 'H'});
|
pascal@302
|
570 };
|
pascal@302
|
571 document.body.appendChild(element);
|
pascal@302
|
572 }
|
pascal@302
|
573 }
|
pascal@302
|
574 </script>
|
pascal@302
|
575
|
pascal@302
|
576 <footer>
|
pascal@302
|
577 <div>
|
pascal@305
|
578 Copyright © <span class="year"></span>
|
pascal@302
|
579 <a href="http://www.slitaz.org/">SliTaz</a>
|
pascal@302
|
580 </div>
|
pascal@302
|
581 <div>
|
pascal@302
|
582 Network:
|
pascal@305
|
583 <a href="http://scn.slitaz.org/">Community</a> ·
|
pascal@305
|
584 <a href="http://doc.slitaz.org/">Doc</a> ·
|
pascal@305
|
585 <a href="http://forum.slitaz.org/">Forum</a> ·
|
pascal@305
|
586 <a href="http://pkgs.slitaz.org/">Packages</a> ·
|
pascal@305
|
587 <a href="http://bugs.slitaz.org">Bugs</a> ·
|
pascal@302
|
588 <a href="http://hg.slitaz.org/?sort=lastchange">Hg</a>
|
pascal@302
|
589 </div>
|
pascal@302
|
590 <div>
|
pascal@302
|
591 SliTaz @
|
pascal@305
|
592 <a href="http://twitter.com/slitaz">Twitter</a> ·
|
pascal@305
|
593 <a href="http://www.facebook.com/slitaz">Facebook</a> ·
|
pascal@305
|
594 <a href="http://distrowatch.com/slitaz">Distrowatch</a> ·
|
pascal@305
|
595 <a href="http://en.wikipedia.org/wiki/SliTaz">Wikipedia</a> ·
|
pascal@302
|
596 <a href="http://flattr.com/profile/slitaz">Flattr</a>
|
pascal@302
|
597 </div>
|
pascal@302
|
598 <img src="/static/qr.png" alt="#" onmouseover="this.title = location.href"
|
pascal@302
|
599 onclick="this.src = QRCodePNG(location.href, this)"/>
|
pascal@302
|
600 </footer>
|
slaxemulator@10
|
601
|
slaxemulator@10
|
602 </body>
|
slaxemulator@10
|
603 </html>
|