auto-biarch (x86_64 + i686) LiveDVD patch + ISO
by Jan Kratochvil
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.
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
--- /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
12 years, 11 months
How I do to use livecd-creator in CentOS 3 (kernel 2.4) ?
by Thiago Braga Santana
Hello.
I relly need build a CentOS 3 (or similar with kernel version 2.4) livecd.
I already have installed the "livecd-tools". But I get problems in moment of
mount the ext3 image, because "/sys" does exist.
Somebody can help me?
Exist any version of livecd-creator for kernel 2.4?
Regards
Thiago Santana
14 years, 5 months
Re: [Fedora-livecd-list] Install to hard-disk option missing in custom livecd
by Bruno Wolff III
On Sat, Jun 27, 2009 at 12:48:59 -0400,
kala <kalabharath(a)gmail.com> wrote:
> Yes i did it in that way only, it didnt work :-(
> kala bharath
You should get a desktop icon, but if you don't and just need to install,
you can run liveinst from a shell.
liveinst comes from anaconda, so it pretty much has to be there.
14 years, 5 months
Install to hard-disk option missing in custom livecd
by kala
Dear friends
I had made a custom live cd with fedora 9 with packages from a
fedora-9-dvd.iso and it worked like a charm with option which installs to
hard disk and now i have tried similar with F11 with packages from
fedora-11-dvd.iso , it also worked but the " install to hard disk " option
is missing , I am sure that i have missed a particular package, can you
please tell me the list of packages ( main + deps) which allows me to enable
this option
with regards
kala bharath
14 years, 5 months
Re: [Fedora-livecd-list] rebootless liveos installer - rliveinst v0.3 for f11
by Jane Dogalt
Also, this does not yet work with a --home style liveusb, and overlays might not work either. And it doesn't play well with the automatic swap enabling, so before running the script, do 'swapoff -a'. And what the heck, for good measure you may want to do a 'umount /mnt/live' for good measure beforehand as well.
But other than all those caveats- it did just actually do its job on a real hardware test (acer aspire one).
Obviously much work remains to be done, but it's rapidly approaching where I've always wanted to see it.
-dmc
--- On Sat, 6/27/09, Douglas McClendon <dmc.fedora(a)filteredperception.org> wrote:
> From: Douglas McClendon <dmc.fedora(a)filteredperception.org>
> Subject: [Fedora-livecd-list] rebootless liveos installer - rliveinst v0.3 for f11
> To: fedora-livecd-list(a)redhat.com
> Date: Saturday, June 27, 2009, 7:52 AM
> I've been working on a pygtk-glade
> GUI for my rebootless liveos installer that I posted here
> nearly 2 years ago. It should be ready any day
> now. In the meantime, I updated my bash version for
> fedora-11. Just in case somebody at fudcon wants to play
> around, here is the possibly working update-
>
> http://filteredperception.org/downloads/rliveinst-0.3
>
> and here are screenshots of the imminent GUI
>
> http://filteredperception.org/smiley/stuff/gallery/zyxrli
>
> happy hacking...
>
> -dmc
>
> --
> Fedora-livecd-list mailing list
> Fedora-livecd-list(a)redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-livecd-list
>
14 years, 5 months
[PATCH] don't need to checkMBR() for loop devices
by Martin Dengler
livecd-iso-to-disk.sh doesn't do the right thing w.r.t. loop devices
and MBR detection. I don't think this is intentional, but it
currently requires loop devices to start with an MBR, by virtue of
getdisk() being a NOOP for loop devices and checkMBR assuming that the
disk must need an MBR. checkMBR() should just ignore loop devices
like other key functions do.
---
livecd-iso-to-disk.sh | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/livecd-iso-to-disk.sh b/livecd-iso-to-disk.sh
index 672e6db..0efef58 100755
--- a/livecd-iso-to-disk.sh
+++ b/livecd-iso-to-disk.sh
@@ -93,6 +93,9 @@ resetMBR() {
}
checkMBR() {
+ if [[ "$DEV" =~ "/dev/loop*" ]]; then
+ return 0
+ fi
getdisk $1
bs=$(mktemp /tmp/bs.XXXXXX)
--
1.6.0.6
14 years, 5 months
tools/livecd-iso-to-disk.sh
by Jeremy Katz
tools/livecd-iso-to-disk.sh | 3 +++
1 file changed, 3 insertions(+)
New commits:
commit d2de65a9ee73af0d001660ee8b2939d88f4f83fe
Author: Martin Dengler <martin(a)martindengler.com>
Date: Tue Jun 23 21:59:16 2009 +0100
don't need to checkMBR() for loop devices
livecd-iso-to-disk.sh doesn't do the right thing w.r.t. loop devices
and MBR detection. I don't think this is intentional, but it
currently requires loop devices to start with an MBR, by virtue of
getdisk() being a NOOP for loop devices and checkMBR assuming that the
disk must need an MBR. checkMBR() should just ignore loop devices
like other key functions do.
diff --git a/tools/livecd-iso-to-disk.sh b/tools/livecd-iso-to-disk.sh
index 672e6db..0efef58 100755
--- a/tools/livecd-iso-to-disk.sh
+++ b/tools/livecd-iso-to-disk.sh
@@ -93,6 +93,9 @@ resetMBR() {
}
checkMBR() {
+ if [[ "$DEV" =~ "/dev/loop*" ]]; then
+ return 0
+ fi
getdisk $1
bs=$(mktemp /tmp/bs.XXXXXX)
14 years, 5 months
Re: [Fedora-livecd-list] auto-biarch (x86_64 + i686) LiveDVD patch + ISO
by Jane Dogalt
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
>
14 years, 5 months