xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] pygrub: Support (/dev/xvda) style disk specifications
@ 2013-10-10  9:37 Ian Campbell
  2013-10-14 16:40 ` Ian Jackson
  0 siblings, 1 reply; 2+ messages in thread
From: Ian Campbell @ 2013-10-10  9:37 UTC (permalink / raw)
  To: xen-devel; +Cc: ian.jackson, Ian Campbell

You get these if you install Debian Wheezy as HVM and then try to convert to
PV.

This is Debian bug #603391.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Tested-by: Tril <tril@metapipe.net>
---
 tools/pygrub/examples/debian-wheezy-hvm.grub2 |  104 +++++++++++++++++++++++++
 tools/pygrub/src/GrubConf.py                  |    6 +-
 2 files changed, 109 insertions(+), 1 deletion(-)
 create mode 100644 tools/pygrub/examples/debian-wheezy-hvm.grub2

diff --git a/tools/pygrub/examples/debian-wheezy-hvm.grub2 b/tools/pygrub/examples/debian-wheezy-hvm.grub2
new file mode 100644
index 0000000..b5ee9e2
--- /dev/null
+++ b/tools/pygrub/examples/debian-wheezy-hvm.grub2
@@ -0,0 +1,104 @@
+
+#
+# DO NOT EDIT THIS FILE
+#
+# It is automatically generated by grub-mkconfig using templates
+# from /etc/grub.d and settings from /etc/default/grub
+#
+
+### BEGIN /etc/grub.d/00_header ###
+if [ -s $prefix/grubenv ]; then
+  load_env
+fi
+set default="0"
+if [ "${prev_saved_entry}" ]; then
+  set saved_entry="${prev_saved_entry}"
+  save_env saved_entry
+  set prev_saved_entry=
+  save_env prev_saved_entry
+  set boot_once=true
+fi
+
+function savedefault {
+  if [ -z "${boot_once}" ]; then
+    saved_entry="${chosen}"
+    save_env saved_entry
+  fi
+}
+
+function load_video {
+  insmod vbe
+  insmod vga
+  insmod video_bochs
+  insmod video_cirrus
+}
+
+insmod part_msdos
+insmod ext2
+set root='(/dev/xvda,msdos1)'
+search --no-floppy --fs-uuid --set=root f395d5a0-4612-4872-806c-33cd37c152f0
+if loadfont /usr/share/grub/unicode.pf2 ; then
+  set gfxmode=640x480
+  load_video
+  insmod gfxterm
+  insmod part_msdos
+  insmod ext2
+  set root='(/dev/xvda,msdos1)'
+  search --no-floppy --fs-uuid --set=root f395d5a0-4612-4872-806c-33cd37c152f0
+  set locale_dir=($root)/boot/grub/locale
+  set lang=en_US
+  insmod gettext
+fi
+terminal_output gfxterm
+set timeout=5
+### END /etc/grub.d/00_header ###
+
+### BEGIN /etc/grub.d/05_debian_theme ###
+set menu_color_normal=cyan/blue
+set menu_color_highlight=white/blue
+### END /etc/grub.d/05_debian_theme ###
+
+### BEGIN /etc/grub.d/10_linux ###
+menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os {
+        load_video
+        insmod gzio
+        insmod part_msdos
+        insmod ext2
+        set root='(/dev/xvda,msdos1)'
+        search --no-floppy --fs-uuid --set=root f395d5a0-4612-4872-806c-33cd37c152f0
+        echo    'Loading Linux 3.2.0-4-amd64 ...'
+        linux   /boot/vmlinuz-3.2.0-4-amd64 root=UUID=f395d5a0-4612-4872-806c-33cd37c152f0 ro  
+        echo    'Loading initial ramdisk ...'
+        initrd  /boot/initrd.img-3.2.0-4-amd64
+}
+menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
+        load_video
+        insmod gzio
+        insmod part_msdos
+        insmod ext2
+        set root='(/dev/xvda,msdos1)'
+        search --no-floppy --fs-uuid --set=root f395d5a0-4612-4872-806c-33cd37c152f0
+        echo    'Loading Linux 3.2.0-4-amd64 ...'
+        linux   /boot/vmlinuz-3.2.0-4-amd64 root=UUID=f395d5a0-4612-4872-806c-33cd37c152f0 ro single 
+        echo    'Loading initial ramdisk ...'
+        initrd  /boot/initrd.img-3.2.0-4-amd64
+}
+### END /etc/grub.d/10_linux ###
+
+### BEGIN /etc/grub.d/20_linux_xen ###
+### END /etc/grub.d/20_linux_xen ###
+
+### BEGIN /etc/grub.d/30_os-prober ###
+### END /etc/grub.d/30_os-prober ###
+
+### BEGIN /etc/grub.d/40_custom ###
+# This file provides an easy way to add custom menu entries.  Simply type the
+# menu entries you want to add after this comment.  Be careful not to change
+# the 'exec tail' line above.
+### END /etc/grub.d/40_custom ###
+
+### BEGIN /etc/grub.d/41_custom ###
+if [ -f  $prefix/custom.cfg ]; then
+  source $prefix/custom.cfg;
+fi
+### END /etc/grub.d/41_custom ###
diff --git a/tools/pygrub/src/GrubConf.py b/tools/pygrub/src/GrubConf.py
index 6324c62..cb853c9 100644
--- a/tools/pygrub/src/GrubConf.py
+++ b/tools/pygrub/src/GrubConf.py
@@ -67,7 +67,11 @@ class GrubDiskPart(object):
         return self._disk
     def set_disk(self, val):
         val = val.replace("(", "").replace(")", "")
-        self._disk = int(val[2:])
+        if val.startswith("/dev/xvd"):
+            disk = val[len("/dev/xvd")]
+            self._disk = ord(disk)-ord('a')
+        else:
+            self._disk = int(val[2:])
     disk = property(get_disk, set_disk)
 
     def get_part(self):
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-10-14 16:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-10  9:37 [PATCH] pygrub: Support (/dev/xvda) style disk specifications Ian Campbell
2013-10-14 16:40 ` Ian Jackson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).