--- toast-linux 2005/02/06 04:14:39 1.134 +++ toast-linux 2005/02/06 08:09:19 1.135 @@ -1636,12 +1636,14 @@ s/!PREFIX!/$prefix/g; } -# looks like SYSLINUX doesn't support tabs.... -# TODO: banish non-printing characters from configure script -#for($text{"floppy/logo"}) -#{ -# s!^(( {8})+)!"\t" x (length($1)/8)!mge; -#} +for(qw(floppy/logo floppy/help cd/isolinux/logo cd/isolinux/help)) +{ + for($text{$_}) + { + s/\^([A-Z])/chr(ord($1)-64)/ge; + s/\%/\xb1/g; + } +} my($oldcfg); for($text{"floppy/syslinux.cfg"}) @@ -1703,7 +1705,7 @@ WGET = wget -FROMCONF = dev toast-linux.stub mkhd bochs-config toast.vmx sbin/setup +FROMCONF = dev toast-linux.stub mkhd bochs-config toast.vmx sbin/setup logotoppm FROMCONF2 = smartcat linux-config-smallk linux-config-largek busybox-config PKGS = TOOLCHAIN LINUX BUSYBOX E2FSPROGS NTFSPROGS PARTED DEVMAP LVM2 GENEXT2FS MTOOLS SYSLINUX CDRTOOLS @@ -1788,6 +1790,7 @@ MCOPY = $(MTOOLS_DIR)/mcopy MDIR = $(MTOOLS_DIR)/mdir SYSLINUX = $(SYSLINUX_DIR)/mtools/syslinux +ISOLINUX = $(SYSLINUX_DIR)/isolinux.bin MKISOFS = $(CDRTOOLS_DIR)/mkisofs/mkisofs INSTALL_DIR = $(DESTDIR)!PREFIX! @@ -1955,10 +1958,10 @@ cd $(MTOOLS_DIR) && ./configure $(MAKE) -C $(MTOOLS_DIR) -$(SYSLINUX): $(SYSLINUX_ARCHIVE) smartcat +$(SYSLINUX) $(ISOLINUX): $(SYSLINUX_ARCHIVE) smartcat rm -fr $(SYSLINUX_DIR) ./smartcat $< | tar x - touch $@ + touch $(SYSLINUX) $(ISOLINUX) $(MKISOFS): $(CDRTOOLS_ARCHIVE) smartcat rm -fr $(CDRTOOLS_DIR) @@ -1976,9 +1979,10 @@ cp $(SMALLK) $@/linux cp rootfs.gz $@/initrd -cd: $(LARGEK) $(ISOLINUX) rootfs.gz +cd: $(LARGEK) $(ISOLINUX) rootfs.gz logo.lss rm -fr $@ !CONFIGURE! $@ + cp logo.lss $@/isolinux/logo.lss cp $(LARGEK) $@/isolinux/linux cp $(ISOLINUX) $@/isolinux/isolinux.bin cp rootfs.gz $@/isolinux/initrd @@ -1996,6 +2000,12 @@ %.iso: % $(MKISOFS) $(MKISOFS) -o $@ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table $< +palette.ppm: logotoppm + ./logotoppm --palette > $@ + +logo.lss: floppy logotoppm palette.ppm $(SYSLINUX) + ./logotoppm floppy/logo | pnmcrop | pnmscale 1.25 | pnmrotate 4 | pnmpad -width 640 -height 480 | pnmremap -fs -mapfile=palette.ppm | $(SYSLINUX_DIR)/ppmtolss16 \#000000=0 \#aaaaaa=7 \#ffffff=15 > $@ + toast-linux: toast-linux.stub floppy.iso.gz rm -f $@ cat $^ > $@ @@ -2197,6 +2207,111 @@ esac done +--- FILE logotoppm --- +#!/usr/bin/perl + +use warnings; +use strict; + +my(@palette) = +( + "\x00\x00\x00", + "\x00\x00\xaa", + "\x00\xaa\x00", + "\x00\xaa\xaa", + "\xaa\x00\x00", + "\xaa\x00\xaa", + "\xaa\x55\x00", + "\xaa\xaa\xaa", + "\x55\x55\x55", + "\x55\x55\xff", + "\x55\xff\x55", + "\x55\xff\xff", + "\xff\x55\x55", + "\xff\x55\xff", + "\xff\xff\x55", + "\xff\xff\xff", +); + +if(@ARGV && $ARGV[0] eq "--palette") +{ + print("P6\n16 1\n255\n", @palette); + exit(0); +} + +my($small) = "ailnostux"; +my($large) = q( + + XX XXX X + XX XX XX + XX XX + XXXX XXX XX XX XXX XXXXX XXXXX XXXXXX XX XX XX XX + XX XX XX XX XX XX XX XX XX XX XX XX XX XX + XXXXX XX XX XX XX XX XX XX XX XX XX XXXX +XX XX XX XX XX XX XX XX XXX XX XX XX XX +XX XX XX XX XX XX XX XX XX XX XX XX XXXX +XX XX XX XX XX XX XX XX XX XX XX X XX XX XX XX + XXX XX XXXX XXXX XX XX XXXXX XXXXX XX XXX XX XX XX + +); +my(@font) = split(/\n/, $large); +push(@font, "") while scalar(@font) < 16; +$small .= " "; +for(@font) +{ + $_ .= " " while length($_) < length($small) * 8; +} +$small .= "\xb1"; +my($grid) = "X " x 4; +for(@font) +{ + $_ .= $grid; + $grid =~ s/(.)(.)/$2$1/g; +} + +my($line) = 0; +$/ = undef; +my($input) = <>; +$input =~ s/.*\x0c//; +$input .= "\n" x 26; + +print("P6\n720 400\n255\n"); +my(@obuf) = map("", 1..16); +my($r, $fg, $bg) = (0, 7, 0); +while($input =~ /(\x0f..|.)/sg) +{ + last if $r >= 25; + + my($char) = $1; + if($char =~ /\x0f(.)(.)/) + { + $bg = hex($1); + $fg = hex($2); + next; + } + + my($idx) = index($small, $char); + + if($idx == -1 || length($obuf[0]) == 720*3) + { + for(@obuf) + { + $_ .= "\x00" while length($_) < 720*3; + } + print(@obuf); + @obuf = map("", 1..16); + ++$r; + next if $idx == -1; + } + + for(0..15) + { + my($pixels) = substr($font[$_], 8 * $idx, 8) . " "; + $pixels =~ s/(.)/$palette[$1 eq " " ? $bg : $fg]/ge; + $obuf[$_] .= $pixels; + } +} + --- FILE mkhd --- #!/usr/bin/perl @@ -2299,35 +2414,37 @@ append initrd=initrd root=/dev/ram0 rw --- FILE floppy/logo --- - +^L - 6e 07 6e 07 - 6e 北北北北 北北北北 07 - 6e 北北北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 北北北北北北北北北北北北北北 07 - 6e 07 + ^O6e ^O07 ^O6e ^O07 + ^O6e %%%%%%%% %%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e %%%%%%%%%%%%%%%%%%%%%%%%%%%% ^O07 + ^O6e ^O07 + toast linux -Press 0fF107 within 20 seconds, or risk losing the contents of all hard disks! +Press ^O0fF1^O07 within 20 seconds, or risk losing the contents of all hard disks! --- FILE cd/isolinux/logo --- -Fancy toast linux logo will go here. +^Xlogo.lss +Press ^O0fF1^O07 within 20 seconds, or risk losing the contents of all hard disks! --- FILE floppy/help --- -By default, the network will be configured automatically using DHCP. +^LBy default, the network will be configured automatically using DHCP. All available network interfaces will be tried sequentially, starting with eth0; the first one that responds to DHCP will be used. You can override this behavior with the IF parameter: