public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Anthony G. Basile" <blueness@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/grss:master commit in: grs/
Date: Sun, 14 Jan 2018 14:07:35 +0000 (UTC)	[thread overview]
Message-ID: <1515938848.f4caf3c0c28d0773f29d044aadcb3ec507ccf662.blueness@gentoo> (raw)

commit:     f4caf3c0c28d0773f29d044aadcb3ec507ccf662
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 14 14:07:28 2018 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Sun Jan 14 14:07:28 2018 +0000
URL:        https://gitweb.gentoo.org/proj/grss.git/commit/?id=f4caf3c0

grs/Netboot.py: add option to make efi hybrid bootable CD

 grs/Interpret.py |  6 ++++--
 grs/Netboot.py   | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 55 insertions(+), 3 deletions(-)

diff --git a/grs/Interpret.py b/grs/Interpret.py
index 9baf41b..2f3d5a5 100644
--- a/grs/Interpret.py
+++ b/grs/Interpret.py
@@ -245,8 +245,10 @@ class Interpret(Daemon):
                         semantic_action(_line, objs, 0, _io.isoit)
                     medium_type = 'isoit'
                 elif verb == 'netbootit':
-                    # 'netbootit' can either be just a verb, or a 'verb obj' pair.
-                    if len(objs):
+                    # 'netbootit' can either be just a 'verb', 'verb obj' or 'verb obj obj'
+                    if len(objs) == 2:
+                        semantic_action(_line, objs, 1, _nb.netbootit, objs[0], obj[1])
+                    elif len(objs) == 1:
                         semantic_action(_line, objs, 1, _nb.netbootit, objs[0])
                     else:
                         semantic_action(_line, objs, 0, _nb.netbootit)

diff --git a/grs/Netboot.py b/grs/Netboot.py
index ae5a0a4..60cb027 100644
--- a/grs/Netboot.py
+++ b/grs/Netboot.py
@@ -47,9 +47,10 @@ class Netboot(HashIt):
         self.medium_name = 'initramfs-%s-%s%s%s' % (name, self.year, self.month, self.day)
         self.digest_name = '%s.DIGESTS' % self.medium_name
         self.kernelname = 'kernel-%s-%s%s%s' % (name, self.year, self.month, self.day)
+        self.cd_name = '%s-%s%s%s.ISO' % (name, self.year, self.month, self.day)
 
 
-    def netbootit(self, alt_name=None):
+    def netbootit(self, do_cd=None, alt_name=None):
         """ TODO """
         if alt_name:
             self.medium_name = 'initramfs-%s-%s%s%s' % (alt_name, self.year, self.month, self.day)
@@ -112,3 +113,52 @@ class Netboot(HashIt):
         os.chdir(initramfs_root)
         Execute(cmd, timeout=600, logfile=self.logfile, shell=True)
         os.chdir(cwd)
+
+        # 6. If do_cd='cd' then we package a bootable CD image
+        # TODO: This code is rushed and we need a better way of
+        # locating the tarball
+        if do_cd == 'cd':
+            tarball_path = '/usr/share/grs-*/ISO-*.tar.gz'
+            cmd = 'tar -Jcf %s .' % (tarball_path)
+
+            cwd = os.getcwd()
+            os.chdir(initramfs_root)
+            Execute(cmd, timeout=600, logfile=self.logfile, shell=True)
+            os.chdir(cwd)
+
+            # Note: we are copying the netboot kernel and initramfs into
+            # the ISO directory, so the kernel_dst and initramfs_dst above
+            # are the sources for these files
+            iso_dir = os.path.join(self.kernelroot, 'ISO')
+            isolinux_dir = os.path.join(iso_dir, 'isolinux')
+            shutil.copy(kernel_dst, '%s/kernel' % (isolinux_dir))
+            shutil.copy(initramfs_dst, '%s/initrd' % (isolinux_dir))
+
+            # Note gentoo.efimg and isolinux.bin are in the ISO tarball
+            # isolinux.bin comes from sys-boot/syslinux
+            # gentoo.efimg is created using
+            #  1) dd if=/dev/zero of=gentoo.efimg bs=1k count=16k
+            #  2) mkfs.vfat -F 16 -n GENTOO gentoo.efimg
+            # gentoo.efimg contains ./EFI/BOOT/BOOTX64.EFI
+            # BOOTX64.EFI is created using
+            #  1) mount -o loop gentoo.efimg zzz
+            #  2) mkdir -p zzz/EFI/BOOT/
+            #  3) grub-mkstandalone /boot/grub/grub.cfg=grub-stub.cfg --compress=xz -O x86_64-efi -o zzz/EFI/BOOT/BOOTX64.EFI
+            #  4) umount zzz
+            # Here grub-stub.cfg contains the following lines
+            #  search --no-floppy --set=root --file /grub/grub.cfg
+            #  configfile /grub/grub.cfg
+            args = '-J -R -z '                      # Joliet/Rock Ridge/RRIP
+            args += '-b isolinux/isolinux.bin '     # Use isolinux boot
+            args += '-c isolinux/boot.cat '         # Create the catalog file
+            args += '-no-emul-boot '                # No disk emulation for El Torito
+            args += '-boot-load-size 4 '            # 4x512-bit sectors for no-emulation mode
+            args += '-boot-info-table '             # Create El Torito boot info table
+            args += '-eltorito-alt-boot '           # Add an alternative boot entry
+            args += '-eltorito-platform efi '       # The additional boot entry is EFI
+            args += '-b gentoo.efimg '              # Use EFI boot
+            args += '-no-emul-boot '                # No disk emulation for El Torito
+
+            cd_path = os.path.join(self.tmpdir, self.cd_name)
+            cmd = 'mkisofs %s -o %s %s' % (args, cd_path, iso_dir)
+            Execute(cmd, timeout=None, logfile=self.logfile)


             reply	other threads:[~2018-01-14 14:07 UTC|newest]

Thread overview: 139+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-14 14:07 Anthony G. Basile [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-20  2:22 [gentoo-commits] proj/grss:master commit in: grs/ Anthony G. Basile
2022-07-20  1:49 Anthony G. Basile
2022-07-19 20:22 Anthony G. Basile
2022-07-19 20:18 Anthony G. Basile
2022-07-18 21:13 Anthony G. Basile
2019-04-19 12:29 Anthony G. Basile
2018-11-18 19:09 Anthony G. Basile
2018-11-12  3:08 Anthony G. Basile
2018-11-11 23:57 Anthony G. Basile
2018-11-11 23:35 Anthony G. Basile
2018-11-11 23:16 Anthony G. Basile
2018-06-25 20:32 Anthony G. Basile
2018-04-14 14:53 Anthony G. Basile
2018-04-10  3:14 Anthony G. Basile
2018-02-20  2:27 Anthony G. Basile
2018-02-20  2:04 Anthony G. Basile
2018-02-18 22:38 Anthony G. Basile
2018-02-18 16:37 Anthony G. Basile
2018-02-06 11:57 Anthony G. Basile
2018-02-06 11:42 Anthony G. Basile
2018-02-06 11:33 Anthony G. Basile
2018-02-06 10:55 Anthony G. Basile
2018-01-28 12:31 Anthony G. Basile
2018-01-28 12:09 Anthony G. Basile
2018-01-15  1:31 Anthony G. Basile
2018-01-15  1:23 Anthony G. Basile
2018-01-14 18:22 Anthony G. Basile
2018-01-14 17:05 Anthony G. Basile
2018-01-14 15:02 Anthony G. Basile
2018-01-14 14:37 Anthony G. Basile
2018-01-13 17:40 Anthony G. Basile
2018-01-10 21:02 Anthony G. Basile
2018-01-10 20:40 Anthony G. Basile
2017-12-28 17:54 Anthony G. Basile
2017-12-28 17:22 Anthony G. Basile
2017-12-27  9:25 Anthony G. Basile
2017-12-26 14:19 Anthony G. Basile
2017-12-26  0:04 Anthony G. Basile
2017-12-26  0:04 Anthony G. Basile
2017-12-26  0:04 Anthony G. Basile
2017-12-25 23:38 Anthony G. Basile
2017-12-25 23:24 Anthony G. Basile
2017-12-23 16:04 Anthony G. Basile
2017-12-23 14:15 Anthony G. Basile
2016-03-23 15:08 Anthony G. Basile
2016-03-23 15:05 Anthony G. Basile
2015-11-26 19:48 Anthony G. Basile
2015-10-10 20:20 Anthony G. Basile
2015-10-10 19:36 Anthony G. Basile
2015-10-10 19:07 Anthony G. Basile
2015-10-10 12:22 Anthony G. Basile
2015-10-10 11:44 Anthony G. Basile
2015-10-10 11:22 Anthony G. Basile
2015-10-10 11:20 Anthony G. Basile
2015-10-10 11:10 Anthony G. Basile
2015-10-10  1:46 Anthony G. Basile
2015-10-10  1:40 Anthony G. Basile
2015-10-10  1:34 Anthony G. Basile
2015-10-10  1:26 Anthony G. Basile
2015-10-10  1:23 Anthony G. Basile
2015-10-10  1:18 Anthony G. Basile
2015-10-10  0:34 Anthony G. Basile
2015-10-10  0:29 Anthony G. Basile
2015-10-09 23:33 Anthony G. Basile
2015-10-09 23:33 Anthony G. Basile
2015-10-09 23:30 Anthony G. Basile
2015-10-09 23:11 Anthony G. Basile
2015-10-09 23:06 Anthony G. Basile
2015-10-08 23:52 Anthony G. Basile
2015-10-08 18:03 Anthony G. Basile
2015-10-08 17:20 Anthony G. Basile
2015-10-07 11:28 Anthony G. Basile
2015-10-07 11:15 Anthony G. Basile
2015-10-07 11:07 Anthony G. Basile
2015-10-07 11:03 Anthony G. Basile
2015-10-07 10:57 Anthony G. Basile
2015-10-07  8:31 Anthony G. Basile
2015-10-07  8:01 Anthony G. Basile
2015-10-06 10:07 Anthony G. Basile
2015-09-16 22:08 Anthony G. Basile
2015-09-16  5:16 Anthony G. Basile
2015-09-16  0:37 Anthony G. Basile
2015-09-16  0:32 Anthony G. Basile
2015-09-14  7:17 Anthony G. Basile
2015-09-14  5:32 Anthony G. Basile
2015-09-14  5:25 Anthony G. Basile
2015-09-14  0:29 Anthony G. Basile
2015-09-13 17:31 Anthony G. Basile
2015-09-12 20:56 Anthony G. Basile
2015-09-12 20:56 Anthony G. Basile
2015-08-09 20:26 Anthony G. Basile
2015-08-08 20:06 Anthony G. Basile
2015-08-08 18:01 Anthony G. Basile
2015-08-08 17:51 Anthony G. Basile
2015-07-29  0:20 Anthony G. Basile
2015-07-28 22:44 Anthony G. Basile
2015-07-27 20:49 Anthony G. Basile
2015-07-25 22:36 Anthony G. Basile
2015-07-14 23:37 Anthony G. Basile
2015-07-14 23:29 Anthony G. Basile
2015-07-14 23:19 Anthony G. Basile
2015-07-14 23:16 Anthony G. Basile
2015-07-14 23:02 Anthony G. Basile
2015-07-14 22:39 Anthony G. Basile
2015-07-14 22:35 Anthony G. Basile
2015-07-14 21:45 Anthony G. Basile
2015-07-14 21:21 Anthony G. Basile
2015-07-14 21:02 Anthony G. Basile
2015-07-14 20:55 Anthony G. Basile
2015-07-10 12:54 Anthony G. Basile
2015-07-10  2:37 Anthony G. Basile
2015-07-10  2:37 Anthony G. Basile
2015-07-10  2:01 Anthony G. Basile
2015-07-09 15:26 Anthony G. Basile
2015-07-09  1:44 Anthony G. Basile
2015-07-08 15:44 Anthony G. Basile
2015-07-08 10:28 Anthony G. Basile
2015-07-07 20:52 Anthony G. Basile
2015-07-07 20:34 Anthony G. Basile
2015-07-07 14:30 Anthony G. Basile
2015-07-07 12:54 Anthony G. Basile
2015-07-07 12:46 Anthony G. Basile
2015-07-07 12:44 Anthony G. Basile
2015-07-07 12:33 Anthony G. Basile
2015-07-07 11:26 Anthony G. Basile
2015-07-07  2:17 Anthony G. Basile
2015-07-06 20:13 Anthony G. Basile
2015-07-06 18:13 Anthony G. Basile
2015-07-05 16:49 Anthony G. Basile
2015-07-05 12:04 Anthony G. Basile
2015-07-02 22:30 Anthony G. Basile
2015-07-01 17:27 Anthony G. Basile
2015-07-01 17:03 Anthony G. Basile
2015-07-01 16:53 Anthony G. Basile
2015-07-01 16:52 Anthony G. Basile
2015-07-01 16:07 Anthony G. Basile
2015-07-01 12:30 Anthony G. Basile
2015-07-01 12:23 Anthony G. Basile

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1515938848.f4caf3c0c28d0773f29d044aadcb3ec507ccf662.blueness@gentoo \
    --to=blueness@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox