[fedora-virt] P2V and grub bootloader

Richard W.M. Jones rjones at redhat.com
Thu Apr 30 22:30:14 UTC 2009


On Fri, May 01, 2009 at 12:25:44AM +0200, Dennis J. wrote:
> On 05/01/2009 12:11 AM, Richard W.M. Jones wrote:
>> On Thu, Apr 30, 2009 at 10:39:37PM +0100, Richard W.M. Jones wrote:
>>> I haven't tried it, but it's possibly something you can do from
>>> libguestfs, or if not, it's something that we could add to libguestfs.
>>
>> OK, I just added grub-install to libguestfs:
>>
>> http://git.et.redhat.com/?p=libguestfs.git;a=commitdiff;h=b55bf8158f0b7f6b1760b7b3b5f7c1274a149127
>>
>> (Make sure you have a back up of your guest image before experimenting
>> with this ...)
>
> Looking at that patch wouldn't specifying /dev/sda as device actually  
> overwrite the physical boot sector on the host system rather than the one 
> in the image?
> Or does libguestfs manipulate the device table so that access to /dev/sda 
> get automatically gets re-routed to access the image instead?

Neither.  libguestfs boots a mini virtual machine, so /dev/sda really
is the right device all along.

Example usage:

$ guestfish 
Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.

Type: 'help' for help with commands
      'quit' to quit the shell

><fs> alloc /tmp/test 100M
><fs> run
qemu: loading initrd (0x157fd37 bytes) at 0x000000000f470000
><fs> sfdisk /dev/sda 0 0 0 ,
><fs> list-partitions 
/dev/sda1
><fs> mkfs ext2 /dev/sda1
><fs> mount /dev/sda1 /
><fs> ll /
total 13
drwxr-xr-x  3 root root  1024 Apr 30 18:28 .
drwxr-xr-x 19 root root     0 Apr 30 18:27 ..
drwx------  2 root root 12288 Apr 30 18:28 lost+found

><fs> grub-install / /dev/sda
><fs> ll /boot/grub/
total 236
drwxr-xr-x 2 root root   1024 Apr 30 18:28 .
drwxr-xr-x 3 root root   1024 Apr 30 18:28 ..
-rw-r--r-- 1 root root     30 Apr 30 18:28 device.map
-rw-r--r-- 1 root root  11736 Apr 30 18:28 e2fs_stage1_5
-rw-r--r-- 1 root root  11512 Apr 30 18:28 fat_stage1_5
-rw-r--r-- 1 root root  10744 Apr 30 18:28 ffs_stage1_5
-rw-r--r-- 1 root root  10736 Apr 30 18:28 iso9660_stage1_5
-rw-r--r-- 1 root root  12328 Apr 30 18:28 jfs_stage1_5
-rw-r--r-- 1 root root  10968 Apr 30 18:28 minix_stage1_5
-rw-r--r-- 1 root root  13360 Apr 30 18:28 reiserfs_stage1_5
-rw-r--r-- 1 root root    512 Apr 30 18:28 stage1
-rw-r--r-- 1 root root 111020 Apr 30 18:28 stage2
-rw-r--r-- 1 root root  11008 Apr 30 18:28 ufs2_stage1_5
-rw-r--r-- 1 root root  10344 Apr 30 18:28 vstafs_stage1_5
-rw-r--r-- 1 root root  12984 Apr 30 18:28 xfs_stage1_5

><fs> exit

$ ll /tmp/test
-rw-rw-r--. 1 rjones rjones 104857600 2009-04-30 23:28 /tmp/test
$ file /tmp/test
/tmp/test: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, 1st sector stage2 0x25003, GRUB version 0.94; partition 1: ID=0x83, starthead 0, startsector 1, 192779 sectors, extended partition table (last)\011, code offset 0x48

Note that this does not require root privileges.

Rich.

-- 
Richard Jones, Emerging Technologies, Red Hat  http://et.redhat.com/~rjones
New in Fedora 11: Fedora Windows cross-compiler. Compile Windows
programs, test, and build Windows installers. Over 70 libraries supprt'd
http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw




More information about the Fedora-virt mailing list