After a full three days (well, today I worked – rather interesting stuff actually; OpenBSD-based spamfilter, we’ll make most of the setup public, I get to set up the backup on MirBSD, Xen HVM DomU, and got lauded – but the evening and night it did cost) of continuous bug squashing, they are here. The new bootloaders work okay on everything I throw them at.
They’re even smaller ☺ except the new commands, such as “machine label”, “cat”, paginating in “cat” and “ls”, support for FAT12, FAT16, FAT28, etc. cost a little:
- -r--r--r-- 1 tg tg - 41456 Jan 12 21:28 boot.old.disc-only
- -r--r--r-- 1 tg tg - 46736 Jan 12 21:25 boot.new.disc-only
- -r--r--r-- 1 tg tg - 48892 Jan 12 21:28 boot.old.pxe-only
- -r--r--r-- 1 tg tg - 57864 Jan 12 21:29 boot.new.disc+pxe
As already mentioned, you can load it from DOS (limited: DOS=LOW must be in CONFIG.SYS, DOS=HIGH conflicts with the kernel, and chaining breaks) as well as SYSLINUX & Co. and any Multiboot loader (GNU grub-legacy, GRUB 2). You can chain to GNU GRUB (both versions), boot sectors and flat image files like ourselves. It does 4.2FFS, CD9660 (no “ls”) and FAT. It also is usable as PXE loader, doing TFTP (and supposedly NFS) as well as any local filesystem listed earlier – although the boot device seems to be passed to the kernel incorrectly if it’s a local drive.
Now we just need more testing and a manpage polish… and some more (minor though) fixes like the boot drive.
I plan on bringing out a new snapshot any time soon, now that this works and security stuff is in, although Lynx might get updated again first. And I still write HTML source code in Blocksatz… old dasr habit.
It's official, I've got a new job (some adminning). However, this means, whereas Benny has been committing like crazy, I've got to step back some. I somehow broke DOS operation of boot(8/i386) during some of the last changes, which means I need to investigate. And probably rewrite all of the asm part of it to get rid of the LINKSEG vs LOADSEG problems, since I confuse them all the time, and OpenBSD only introduced them because they didn't know how to use 32 bit relocations in 16 bit code segments.
This means my mikap project will be delayed a little. Sorry.
We can use “machine exec grub /boot/grub/stage2” as well as “machine exec grub /boot/grub/core.img” to chain into GNU GRUB-Legacy or GRUB2 now. GRUB2 is in rescue mode, though, but catting files works, as does chaining from GRUB 0.9x (mirports/sysutils/pxegrub) to GRUB2.
Also, “machine exec grub /stage2_eltorito” works, because they are actually the same (it doesn’t care if it’s a CD or not; we might use that in the future too instead of the tori_bootflag hack). However, while GRUB 0.9x can deal with filesystems created by “mkisofs”, “makefs”, “mkisofs -R”, it cannot deal with one created by “makefs -o rockridge”, neither the old makefs(8) we had 3 months ago, nor stock TNF one, nor our new one with my patches. Since GRUB2 just says unknown filesystem, it’s fine… but useless.
Anyway, I now have a way to boot MS-DOS® from a USB stick (bootbsd → grub → memdisk → DOS) in order to install SYSLINUX on the very same stick… gaaaaaaaaaaaah!
Update: Yay! Our bootloader is now multiboot compliant, detects El Torito in a better way without the patch-the-code kludge, and can thusly survive boot ↔ grub cycles.
2. Update: It can also chain to itself, and can still be used from MS-DOS® or as SYSLINUX (et al.) COMBOOT module. It just can’t load SYSLINUX because you usually only have LDLINUX.SYS not LDLINUX.BIN, see my earlier post. And it can’t load an MS-DOS® boot sector, however, chaining to GRUB then from there to DOS works. (So much for my plans to directly load an IO.SYS file.)
3. Update 18.01.2009: Even GRUB2 could operate on the filesystem. As could various OSes and tools (from Schily and others). Just grub-legacy can’t. What was it? Padding was missing…
Hmm… where is bsiegert@’s promised entry?
SYSLINUX creates an ldlinux.bin file from source code which is composed of two parts: a bootsector (FAT PBR) and the rest of the code, later written to A:LDLINUX.SYS. However, the later code not only makes assumptions about which bootsector loads it, but also jumps into it at will for unimportant things like loading more sectors (like the configuration file) from the disc. Bah! Impossible to do, as the bootsector is cut off before ldlinux.sys is written. Worse than even Microsoft®, who at least don’t go back to the bootsector once the first 2048 bytes of IO.SYS in DOS 7.10 are loaded.
Ich guck’ ja keinen an…
- ##002# (and press the green/dial button afterwards): disable all call redirections (alle)
- ##21#: disable unconditional redirection (immer)
- ##61#: disable redirections if no answer (geht nicht ran)
- ##62#: disable redirections if unreachable (Akku leer, …)
- ##67#: disable redirections if busy (besetzt)
After my earlier escapades, which you might have read about, here’s some news regarding USB sticks:
- The IBM X40 can boot, but always uses a geometry of LBA translated into 255 heads, 63 sectors per track, contrary to the “USB ZIP” one which demands 64 heads, 32 sectors per track.
- The ALIX.1c does recognise the stick’s physical or USB ZIP geometry,
since they match each other and what the BSD kernel thinks:
sd0: 241MB, 241 cyl, 64 head, 32 sec, 512 bytes/sec, 495607 sec total
However, it still cannot boot MS-DOS® 7.10 from the stick. WTF?
- The VIA C7 can still not boot from the stick. It doesn’t even appear in the boot menu. Interestingly enough, it does try to boot from SCSI even if unlisted (disabling the AHA-2940U2B BIOS helps to disable it, but I don’t even know where that MBR code which it did boot came from…)
- I still hate ATX. I fragged a K6-2 mainboard when trying to power it on due to a flash(?) (German: Überschlagsblitz). Also, I definitively have a lack of hardware with an ISA slot, a floppy drive, and USB.
- The (old) herc hardware might work, but its keyboard controller is damaged, ISTR I wrote about it ages ago. Some day, I’ll either solder in a new one or use a USB keyboard to bring it back working (to hack a hercules framebugger).
So the way out of this misére is a “machine sector <type> <filename>” command for boot(8/i386). It should be able, at least, to load: an MBR/PBR, a GNU GRUB stage2, stage2_eltorito (with boot-info-table emulation), SYSLINUX, ISOLINUX, EXTLINUX, an MS-DOS® 7.x IO.SYS. But at the beginning, I’m content with less. Because it seems to be impossible to boot DOS from a USB stick, due to the varying CHS geometries, MEMDISK might be the way to go for a triple-boot stick. A combined grml+MirBSD thing would not be hindered by it because both SYSLINUX and boot(8/i386) use the LBA access method if available.
Benny beat me, he did the first commit this year. Congrats! Oh, and the second and the third. But I’ll write the first wlog entry, hahaha, and the Developers’ Weblog is not a blog! Oh, and the fourth.
tg@bleu:~ $ head -2 /var/run/dmesg.boot MirBSD#10uA4 (GENERIC) #1161: Fri Dec 26 21:05:59 UTC 2008 firstname.lastname@example.org:/usr/src/distrib/generic/obj/build/GENERIC tg@bleu:~ $ r 2=3 head -3 /var/run/dmesg.boot MirBSD#10uA4 (GENERIC) #1161: Fri Dec 26 21:05:59 UTC 2008 email@example.com:/usr/src/distrib/generic/obj/build/GENERIC cpu0: Intel(R) Pentium(R) M processor 1.40GHz ("GenuineIntel" 686-class) 598 MHz tg@bleu:~ $ fc -l 1 head -2 /var/run/dmesg.boot 2 head -3 /var/run/dmesg.boot
What’s best, the modified commands are written into the history, not the modificator itself.
Some of the commentaries are rather clueless too, not $! but $_ is the last word of the last command, in this case:
tg@bleu:~ $ head -2 /var/run/dmesg.boot MirBSD#10uA4 (GENERIC) #1161: Fri Dec 26 21:05:59 UTC 2008 firstname.lastname@example.org:/usr/src/distrib/generic/obj/build/GENERIC tg@bleu:~ $ print $_ /var/run/dmesg.boot
Instead of “^-s” you would use “r -- -s=” (the two dashes are needed as the “r” built-in alias parses its arguments).
More on Planet Debian (read via Planet Symlink): how many times do I have to tell you it’s “CAs” not “CA’s” again? Please do the world a favour and read Apostrophen und andere Katastrophen with rules for German and English: never in German except the word ends with s or similar: „Jens’, Max’ und Joes CDs“ and for genitives only in both languages, but with apostrophe in English: “Jens’, Max’ and Joe’s CDs”
ciruZ now has a blog too… with two ruby scripts. I prefer mine in mksh very much, thank you :þ
It’s simply amazing. I wanted to show gecko2@ a USB stick with both grml(-small) and MirBSD on it, using SYSLINUX, but this fscking laptop does not boot from USB stick. So, the ALIX.1c it is, or the VIA C7.
Update: the VIA C7 doesn’t, either. Phoenix/Award BIOS v6.00PG it is, 09/26/2006-ID-PCM7E-6A7L6EIIC-00 apparently (I learned today from gecko2@ that you can indeed use the “Pause” key on the IBM PS/2 keyboard to hold the output during BIOS POST). And I suspect the X40 just has USB Legacy support disabled, but won’t reboot now.
Did you all read my comment on the MD5 CA thing?
25C3 is over, gecko2@ arrived today, and both he and bogus are just too verpeilt – they forgot to distribute the MirOS flyers and CDs at first, then bogus (who had them) got really ill.
We all somehow are, at the moment. Get better, everyone. (replaced couldn’t get to the BSD@Wien pre-christmas party either…)
cnuke@ pointed me to a nice IRC quote:
17:57 < jtsn> Der 25C3 ist lustig. Deutsche Vortragende brechen sich vor deutschen Zuhörern auf Englisch einen ab. ;-) 18:01 < jtsn> Adolfs Werk war sehr nachhaltig. ;-) 18:01 < jtsn> Das gab's nichtmal in der DDR, das[sic!] Deutsche mit Deutschen auf Russisch reden. ;-)
This’ll be my ~/.etc/sig for a while… it does hold some truth. *looks at this wlog*
Benny is still alive, yet a little offline, hacking on perl stuff for MirPorts. Good riddance.
By the way: does anyone know of a way to use a web browser or engine, for instance Webkit, from a shell script to produce a rendered version of a HTML source file (preferably to PostScript® or PDF)?
We’ll see what we do with that “m”…
I’ve updated src/etc/ssl.certs.shar, read about the procedure. Someone might want to update the nss certdata.txt file (to mark them as untrusted); for OpenSSL it’s enough to have them renamed. Luckily, the CAs agree wanting to switch to SHA-1 (yuck, broken as well). Only, do they get a new root certificate (probably not), and where does an OS vendor get such news?
Update: This appears to be not needed, as per this comment. However, how credible is this person? Where is proof? I’d recommend everyone who has not yet read it to look at On Trusting Trust. Anyway, the CA certificates are now trusted again; let’s just hope the backdated demo intermediate CA was the only one generated in the meantime. We really need my SSL known_certs proposal, I think. What’s with these MD2 certs anyway? (end of update)
I also ported the e3 editor to MirBSD, it’s 17 KiB i386 statically linked (stand-alone) binary. GNU GPL, but good for custom-made (hehe…) install/rescue system bsd.rd kernels. I would like to add TinyIRC-MirOS as well, but need to get an exception licence for crunchgen(1) use.
Both tinyirc and mksh(1) now use TIOCGWINSZ more properly and aggressively. The shell, in particular, now always has COLUMNS and LINES set.
Yesternight, not only my server crashed in the softupdates code again (*sigh* two RAID 1 rebuilds and a lot of fsck(8)), but also one of these energy saving light bulbs (13W). This proves that they do not have a longer lifetime than regular bulbs.
I oppose the planned ban of regular light bulbs, because, although almost(!) all of mine are energy saving ones, some of the propaganda apparently is wrong, plus they are not good in situations where the light switch is used very often, or when the light is only on for very short amounts, such as in the entrance area of an appartement (say 1½ m²).
What did I do? Meh, just some bootloader hacking.