1
1
#! /bin/sh
2
2
3
+ me=` id -u `
4
+ if [ " $me " -gt 0 ] ; then
5
+ echo ' Please run this script with root privileges!'
6
+ fi
7
+
3
8
source stage0n_variables
4
9
5
10
mkdir -p ${CLFS} /iso-bios/boot/isolinux
6
11
mkdir -p ${CLFS} /iso-bios/boot/system
7
- mkdir -p ${CLFS} /iso-uefi/boot
12
+ mkdir -p ${CLFS} /iso-uefi/boot/efi
13
+ mkdir -p ${CLFS} /iso-uefi/boot/isolinux
14
+ mkdir -p ${CLFS} /tmp/efi
8
15
9
16
# Copy libraries
10
17
echo ${CLFS} /cross-tools/${CLFS_TARGET} ${CLFS} /targetfs
@@ -13,11 +20,11 @@ tar -C ${CLFS}/cross-tools/${CLFS_TARGET} --exclude='*.a' --exclude='pkgconfig'
13
20
# Create the initramfs
14
21
( cd ${CLFS} /targetfs ; find . | cpio -o -H newc | gzip -c > ../iso-bios/boot/system/initrd.gz )
15
22
16
- # copy the kernel
23
+ # Copy the kernel
17
24
kern=` ls ${CLFS} /targetfs/boot/vmlinuz* | tail -n1 `
18
25
install -m 0644 " $kern " ${CLFS} /iso-bios/boot/system/vmlinuz
19
26
20
- # copy the bootloader
27
+ # Copy the bootloader
21
28
for f in bios/com32/menu/menu.c32 bios/com32/menu/vesamenu.c32 \
22
29
bios/com32/modules/ifcpu64.c32 bios/com32/modules/ifcpu.c32 \
23
30
bios/com32/modules/reboot.c32 bios/com32/chain/chain.c32 \
@@ -32,8 +39,52 @@ for f in isolinux.cfg help.txt ; do
32
39
install -m 0644 patches/${f} ${CLFS} /iso-bios/boot/isolinux/
33
40
done
34
41
42
+ # Build the ISO for BIOS
35
43
${CLFS} /hosttools/bin/xorriso -as mkisofs -joliet -graft-points \
36
44
-c boot/isolinux/boot.cat -b boot/isolinux/isolinux.bin \
37
45
-no-emul-boot -boot-info-table -boot-load-size 4 \
38
46
-isohybrid-mbr ${CLFS} /hosttools/share/syslinux/bios/mbr/isohdpfx.bin \
39
- -V CLFS -o ${CLFS} /tiny-cross-bios.iso -r ${CLFS} /iso-bios
47
+ -V TINYCROSS -o ${CLFS} /tiny-cross-bios.iso -r ${CLFS} /iso-bios
48
+ sync
49
+
50
+ # Calculate size of the system dir
51
+ efisize=` du ${CLFS} /iso-bios/boot/system | tail -n1 | awk ' {print $1}' `
52
+ efisize=` expr $efisize ' *' 105 / 100 + 1000 `
53
+ efiblocks=` expr $efisize / 4096 + 1 `
54
+
55
+ # Create and format EFI image
56
+ dd if=/dev/zero bs=4M count=$efiblocks of=${CLFS} /iso-uefi/boot/efi/efi.img
57
+ freeloop=` losetup -f `
58
+ losetup $freeloop ${CLFS} /iso-uefi/boot/efi/efi.img
59
+ mkfs.msdos -n EFIBOOT $freeloop
60
+ mount -t vfat -o noatime $freeloop ${CLFS} /tmp/efi
61
+ # Copy files to EFI image
62
+ cp -v ${CLFS} /iso-bios/boot/system/vmlinuz ${CLFS} /tmp/efi/VMLINUZ.EFI
63
+ cp -v ${CLFS} /iso-bios/boot/system/initrd.gz ${CLFS} /tmp/efi/INITRD.GZ
64
+ mkdir -p ${CLFS} /tmp/efi/EFI/BOOT
65
+ mkdir -p ${CLFS} /tmp/efi/loader/entries
66
+ cp -v ${CLFS} /hosttools/lib/gummiboot/gummibootx64.efi ${CLFS} /tmp/efi/EFI/BOOT/BOOTX64.EFI
67
+ sync
68
+ sleep 3
69
+ umount ${CLFS} /tmp/efi
70
+ cp -v patches/loader.conf ${CLFS} /tmp/efi/loader/loader.conf
71
+ cp -v patches/tiny.conf ${CLFS} /tmp/efi/loader/entries/tiny.conf
72
+ losetup -d $freeloop
73
+ # We need a dummy isolinux, otherwise ISO will not boot
74
+ install -m 0644 ${CLFS} /hosttools/share/syslinux/bios/core/isolinux.bin ${CLFS} /iso-uefi/boot/isolinux
75
+
76
+ # Build ISO containing the EFI image
77
+ ${CLFS} /hosttools/bin/xorriso -as mkisofs -joliet -graft-points \
78
+ -c boot/isolinux/boot.cat -b boot/isolinux/isolinux.bin \
79
+ -no-emul-boot -boot-info-table -boot-load-size 4 \
80
+ -isohybrid-mbr ${CLFS} /hosttools/share/syslinux/bios/mbr/isohdpfx.bin \
81
+ -eltorito-alt-boot \
82
+ -e boot/efi/efi.img -no-emul-boot \
83
+ -isohybrid-gpt-basdat \
84
+ -V TINYCROSS -o ${CLFS} /tiny-cross-uefi.iso -r ${CLFS} /iso-uefi
85
+
86
+ # ${CLFS}/hosttools/bin/xorriso -as mkisofs -joliet -graft-points \
87
+ # -e boot/efi/efi.img -no-emul-boot \
88
+ # -isohybrid-gpt-basdat \
89
+ # -V CLFS -o ${CLFS}/tiny-cross-uefi.iso -r ${CLFS}/iso-uefi
90
+
0 commit comments