Very cool. Now if only you can go tri-arch with ppc. Actually I'm just kidding, I don't care about that unless I can get fixstars to hire me, or someone to give me a ps3.
Out of curiosity- has anybody yet mastered a good spin that also plays video when inserted into a typical dvd player? I don't think there are any issues with that, but wonder why I haven't seen that before. It seems like packing in a kickass intro-to-fedora video that people could play on their DVD player, would be a great feature, that might help a certain class of new users feel more comfortable with the process. I.e. it feels pretty safe to watch a DVD, versus running some strange software on your computer. Thanks again Jan, very cool feature. -dmc --- On Sun, 6/21/09, Jan Kratochvil <jan.kratoch...@redhat.com> wrote: > From: Jan Kratochvil <jan.kratoch...@redhat.com> > Subject: [Fedora-livecd-list] auto-biarch (x86_64 + i686) LiveDVD patch + ISO > To: fedora-livecd-list@redhat.com > Date: Sunday, June 21, 2009, 5:05 AM > Hi, > > finally created a LiveDVD ISO automatically booting x86_64 > OS on x86_64 > (and i686 otherwise). Regular users will not notice > there exists any new arch > while they will benefit from the full performance of their > PC: > http://people.redhat.com/jkratoch/x86bilive-2009062000.tar.gz > (71KB) > > It uses live_dir=LiveOS-x86_64 vs. live_dir=LiveOS-i686 to > boot the image. > > The syslinux patch provides "default-{x86_64,i386}" > keywords in isolinux.cfg. > > livecd-iso-to-disk is not patched/compatible with such > image. > > livecd-creator should create such ISO on a single run, not > by merging the > output of two livecd-creator runs by a 3rd party app. > > > Regards, > Jan > > Reasons: > > * I still did not understand why I have to carry with me > two media - both > x86_64 and i386 - when all the data perfectly fit on > a single media. > > * Why I have to try to boot x86_64 first to find out if the > specific machine > is x86_64? Even common programmers do not know > it, "Windows XP works here". > > * The OS must "just work", it must be fun and easy. > Requiring a special > technical decision before even starting the OS > download is a showstopper. > > * Checked that a regular user will on http://fedoraproject.org/get-fedora > still download terrible performance degradation of > 32-bit OS although her > hadware is in 70%-95%(?) of cases x86_64. > x86_64 is here for 6 years now. > > * Arguing x86 may be faster than x86_64... I did not > find any such case, > x86_64 is a more modern arch (more registers, > PIC for free, better ABI). > We already hit the 2GB address space > limitations. x86_64 is the future. > > * All the friends of mine have 8Mbit+ ADSL and TB disks > downloading many DVD > disks so some several more hundreds of MB are not > something to notice. > > -----Inline Attachment Follows----- > > mkisofs -f -J -r -hide-rr-moved > -hide-joliet-trans-tbl -V Fedora-11-x86bi-Live -o > ../x86bilive.iso -b isolinux/isolinux.bin -c > isolinux/boot.cat -no-emul-boot -boot-info-table > -boot-load-size 4 . > > mount -r -o loop Fedora-11-x86_64-Live.iso x86_64/ > mount -r -o loop Fedora-11-i686-Live.iso i686/ > > x86bilive: > total 4 > lrwxrwxrwx 1 root root 13 2009-06-18 21:10 > GPL -> ../x86_64/GPL > lrwxrwxrwx 1 root root 14 2009-06-18 21:11 > LiveOS-i686 -> ../i686/LiveOS/ > lrwxrwxrwx 1 root root 16 2009-06-18 21:10 > LiveOS-x86_64 -> ../x86_64/LiveOS/ > lrwxrwxrwx 1 root root 16 2009-06-18 21:10 > README -> ../x86_64/README > drwxr-xr-x 2 root root 4096 2009-06-20 21:44 isolinux/ > > x86bilive/isolinux: > total 184 > lrwxrwxrwx 1 root root 30 > 2009-06-18 21:13 boot.cat -> > ../../x86_64/isolinux/boot.cat > lrwxrwxrwx 1 root root 31 > 2009-06-18 21:17 ii686 -> > ../../i686/isolinux/initrd0.img > -rw-r--r-- 1 root root 14336 2009-06-20 21:45 > isolinux.bin > -r--r--r-- 1 root root 1411 2009-06-20 > 21:44 isolinux.cfg > lrwxrwxrwx 1 root root 33 > 2009-06-18 21:13 ix8664 -> > ../../x86_64/isolinux/initrd0.img > lrwxrwxrwx 1 root root 28 > 2009-06-18 21:17 ki686 -> ../../i686/isolinux/vmlinuz0 > lrwxrwxrwx 1 root root 30 > 2009-06-18 21:13 kx8664 -> > ../../x86_64/isolinux/vmlinuz0 > lrwxrwxrwx 1 root root 29 > 2009-06-18 21:13 memtest -> > ../../x86_64/isolinux/memtest > lrwxrwxrwx 1 root root 32 > 2009-06-18 21:13 splash.jpg -> > ../../x86_64/isolinux/splash.jpg > -r--r--r-- 1 root root 159888 2009-06-20 20:48 > vesamenu.c32 > > isolinux.cfg: > > default vesamenu.c32 > timeout 100 > > menu background splash.jpg > menu title Welcome to Fedora-11-x86bi-Live! > menu color border 0 #ffffffff #00000000 > menu color sel 7 #ffffffff #ff000000 > menu color title 0 #ffffffff #00000000 > menu color tabmsg 0 #ffffffff #00000000 > menu color unsel 0 #ffffffff #00000000 > menu color hotsel 0 #ff000000 #ffffffff > menu color hotkey 7 #ffffffff #ff000000 > menu color timeout_msg 0 #ffffffff #00000000 > menu color timeout 0 #ffffffff #00000000 > menu color cmdline 0 #ffffffff #00000000 > menu hidden > menu hiddenrow 5 > label linux0 > menu label x86_64 Boot > kernel kx8664 > append initrd=ix8664 > root=CDLABEL=Fedora-11-x86bi-Live rootfstype=auto > live_dir=LiveOS-x86_64 ro liveimg quiet rhgb > menu default-x86_64 > label check0 > menu label x86_64 Verify and Boot > kernel kx8664 > append initrd=ix8664 > root=CDLABEL=Fedora-11-x86bi-Live rootfstype=auto > live_dir=LiveOS-x86_64 ro liveimg quiet rhgb check > label linux1 > menu label i686 Boot > kernel ki686 > append initrd=ii686 > root=CDLABEL=Fedora-11-x86bi-Live rootfstype=auto > live_dir=LiveOS-i686 ro liveimg quiet rhgb > menu default-i386 > label check1 > menu label i686 Verify and Boot > kernel ki686 > append initrd=ii686 > root=CDLABEL=Fedora-11-x86bi-Live rootfstype=auto > live_dir=LiveOS-i686 ro liveimg quiet rhgb check > label memtest > menu label Memory Test > kernel memtest > label local > menu label Boot from local drive > localboot 0xffff > > -----Inline Attachment Follows----- > > --- /dev/null 1 > Jan 1970 00:00:00 -0000 > +++ defaults.patch 20 Jun 2009 20:10:46 > -0000 > @@ -0,0 +1,175 @@ > +--- > syslinux-3.75-orig/com32/menu/Makefile > 2009-04-16 06:42:14.000000000 +0200 > ++++ > syslinux-3.75-defaults/com32/menu/Makefile > 2009-06-20 19:21:32.000000000 +0200 > +@@ -24,7 +24,7 @@ MODULES = > menu.c32 vesamenu.c32 > + TESTFILES = > + > + COMMONOBJS = menumain.o readconfig.o passwd.o drain.o > printmsg.o colors.o \ > +- background.o refstr.o execute.o > ++ background.o refstr.o execute.o > verify_cpu.o > + > + all: $(MODULES) $(TESTFILES) > + > +--- syslinux-3.75-orig/com32/menu/menu.h > 2009-04-16 06:42:14.000000000 +0200 > ++++ > syslinux-3.75-defaults/com32/menu/menu.h > 2009-06-20 19:21:32.000000000 +0200 > +@@ -224,4 +224,9 @@ void execute(const char *cmdline, enum > k > + /* drain.c */ > + void drain_keyboard(void); > + > ++/* verify_cpu.S */ > ++#if defined(__i386__) || defined(__x86_64__) > ++int verify_cpu(void); > ++#endif > ++ > + #endif /* MENU_H */ > +--- > syslinux-3.75-orig/com32/menu/readconfig.c > 2009-04-16 06:42:14.000000000 +0200 > ++++ > syslinux-3.75-defaults/com32/menu/readconfig.c > 2009-06-20 20:23:24.000000000 +0200 > +@@ -656,11 +656,22 @@ static void parse_config_file(FILE > *f) > + > m->parent_entry->displayname = > refstr_get(m->title); > + } > + } > +- } else if ( looking_at(p, "default") > ) { > +- if (ld.label) { > +- ld.menudefault = 1; > +- } else if (m->parent_entry) { > +- m->parent->defentry = > m->parent_entry->entry; > ++ } else if ( looking_at(p, > "default") > ++#if defined(__i386__) || defined(__x86_64__) > ++ || > looking_at(p, "default-i386") > ++ || > looking_at(p, "default-x86_64") > ++#endif > ++ ) { > ++#if defined(__i386__) || defined(__x86_64__) > ++ if (! ( ( looking_at(p, > "default-i386") && verify_cpu () == 0 ) || > ++ ( > looking_at(p, "default-x86_64") && verify_cpu () != > 0 ) ) ) > ++#endif > ++ { > ++ if (ld.label) { > ++ ld.menudefault = 1; > ++ } else if (m->parent_entry) > { > ++ > m->parent->defentry = m->parent_entry->entry; > ++ } > + } > + } else if ( looking_at(p, > "hide") ) { > + ld.menuhide = 1; > +--- > syslinux-3.75-orig/com32/menu/verify_cpu.S > 1970-01-01 01:00:00.000000000 +0100 > ++++ > syslinux-3.75-defaults/com32/menu/verify_cpu.S > 2009-06-20 20:30:27.000000000 +0200 > +@@ -0,0 +1,119 @@ > ++/* > https://lists.linux-foundation.org/pipermail/fastboot/2006-November/011885.html > */ > ++#if defined(__i386__) || defined(__x86_64__) > ++ .globl verify_cpu > ++verify_cpu: > ++ push %ebx > ++ push %esi > ++ push %edi > ++ push %ebp > ++ call Xverify_cpu > ++ pop %ebp > ++ pop %edi > ++ pop %esi > ++ pop %ebx > ++ ret > ++ > ++/* > ++ * > ++ * verify_cpu.S > ++ * > ++ * 14 Nov 2006 Vivek Goyal: > Created the file > ++ * > ++ * This is a common code for > verification whether CPU supports > ++ * long mode and SSE or not. It is not > called directly instead this > ++ * file is included at various places > and compiled in that context. > ++ * Following are the current usage. > ++ * > ++ * This file is included by both 16bit > and 32bit code. > ++ * > ++ * arch/x86_64/boot/setup.S : Boot cpu > verification (16bit) > ++ * arch/x86_64/boot/compressed/head.S: > Boot cpu verification (32bit) > ++ * arch/x86_64/kernel/trampoline.S: > secondary processor verfication (16bit) > ++ * > arch/x86_64/kernel/acpi/wakeup.S:Verfication at resume > (16bit) > ++ * > ++ * verify_cpu, returns the status of > cpu check in register %eax. > ++ * 0: Success > 1: Failure > ++ * > ++ * The caller needs to check for the > error code and take the action > ++ * appropriately. Either display a > message or halt. > ++ */ > ++ > ++Xverify_cpu: > ++ > ++ pushfl > # > Save caller passed flags > ++ pushl > $0 # > Kill any dangerous flags > ++ popfl > ++ > ++ /* minimum CPUID flags for x86-64 */ > ++ /* see http://www.x86-64.org/lists/discuss/msg02971.html */ > ++#define SSE_MASK ((1<<25)|(1<<26)) > ++#define REQUIRED_MASK1 > ((1<<0)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<8)|\ > ++ > > (1<<13)|(1<<15)|(1<<24)) > ++#define REQUIRED_MASK2 (1<<29) > ++ pushfl > # > standard way to check for cpuid > ++ popl %eax > ++ movl %eax,%ebx > ++ xorl $0x200000,%eax > ++ pushl %eax > ++ popfl > ++ pushfl > ++ popl %eax > ++ cmpl %eax,%ebx > ++ jz > verify_cpu_no_longmode # cpu has no cpuid > ++ > ++ movl > $0x0,%eax # See if > cpuid 1 is implemented > ++ cpuid > ++ cmpl $0x1,%eax > ++ jb > verify_cpu_no_longmode # no cpuid 1 > ++ > ++ xor %di,%di > ++ cmpl > $0x68747541,%ebx # AuthenticAMD > ++ jnz > verify_cpu_noamd > ++ cmpl > $0x69746e65,%edx > ++ jnz > verify_cpu_noamd > ++ cmpl > $0x444d4163,%ecx > ++ jnz > verify_cpu_noamd > ++ mov > $1,%di > # cpu is from AMD > ++ > ++verify_cpu_noamd: > ++ movl > $0x1,%eax # Does the > cpu have what it takes > ++ cpuid > ++ andl > $REQUIRED_MASK1,%edx > ++ xorl > $REQUIRED_MASK1,%edx > ++ jnz > verify_cpu_no_longmode > ++ > ++ movl > $0x80000000,%eax # See if extended cpuid > is implemented > ++ cpuid > ++ cmpl $0x80000001,%eax > ++ jb > verify_cpu_no_longmode # no extended > cpuid > ++ > ++ movl > $0x80000001,%eax # Does the cpu have what > it takes > ++ cpuid > ++ andl > $REQUIRED_MASK2,%edx > ++ xorl > $REQUIRED_MASK2,%edx > ++ jnz > verify_cpu_no_longmode > ++ > ++verify_cpu_sse_test: > ++ movl $1,%eax > ++ cpuid > ++ andl $SSE_MASK,%edx > ++ cmpl $SSE_MASK,%edx > ++ je > verify_cpu_sse_ok > ++ test %di,%di > ++ jz > verify_cpu_no_longmode # only try to force > SSE on AMD > ++ movl > $0xc0010015,%ecx # HWCR > ++ rdmsr > ++ btr > $15,%eax # enable SSE > ++ wrmsr > ++ xor > %di,%di > # don't loop > ++ jmp > verify_cpu_sse_test # try again > ++ > ++verify_cpu_no_longmode: > ++ popfl > # > Restore caller passed flags > ++ movl $1,%eax > ++ ret > ++verify_cpu_sse_ok: > ++ popfl > # > Restore caller passed flags > ++ xorl %eax, %eax > ++ ret > ++#endif > --- syslinux.spec 16 Apr 2009 18:11:30 > -0000 1.59 > +++ syslinux.spec 20 Jun 2009 20:10:46 > -0000 > @@ -7,6 +7,7 @@ License: GPLv2+ > Group: Applications/System > URL: http://syslinux.zytor.com/ > Source0: > ftp://ftp.kernel.org/pub/linux/utils/boot/syslinux/%{name}-%{tarball_version}.tar.bz2 > +Patch9: defaults.patch > ExclusiveArch: %{ix86} x86_64 > Buildroot: > %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} > -n) > BuildRequires: nasm >= 0.98.38-1, perl, netpbm-progs > @@ -33,12 +34,18 @@ MEMDISK, which loads legacy operating > sy > > %prep > %setup -q -n syslinux-%{tarball_version} > +%patch9 -p1 > > %build > CFLAGS="-Werror -Wno-unused -finline-limit=2000" > export CFLAGS > # If you make clean here, we lose the provided > syslinux.exe > #make clean > +rm -f com32/menu/vesamenu.c32 > +make -C com32/lib libcom32.a > +make -C com32/gpllib libcom32gpl.a > +make -C com32/menu vesamenu.c32 > +test -f com32/menu/vesamenu.c32 > make installer > make -C sample tidy > > > -----Inline Attachment Follows----- > > -- > Fedora-livecd-list mailing list > Fedora-livecd-list@redhat.com > https://www.redhat.com/mailman/listinfo/fedora-livecd-list > -- Fedora-livecd-list mailing list Fedora-livecd-list@redhat.com https://www.redhat.com/mailman/listinfo/fedora-livecd-list