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.kratochvil(a)redhat.com> wrote:
From: Jan Kratochvil <jan.kratochvil(a)redhat.com>
Subject: [Fedora-livecd-list] auto-biarch (x86_64 + i686) LiveDVD patch + ISO
To: fedora-livecd-list(a)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/01188...
*/
++#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_vers...
+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(a)redhat.com
https://www.redhat.com/mailman/listinfo/fedora-livecd-list