Tomáš Golembiovský
2016-Aug-09 11:55 UTC
Re: [Libguestfs] [PATCH 8/8] v2v: linux: correctly reconfigure the initrd on Debian
On Mon, 8 Aug 2016 18:38:55 +0200 Pino Toscano <ptoscano@redhat.com> wrote:> Use the canonical way to regenerate the initrd images for all the > installed kernels, i.e. reconfigure the initramfs-tools which will > trigger the kernel postinst scripts. > --- > v2v/convert_linux.ml | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/v2v/convert_linux.ml b/v2v/convert_linux.ml > index cfe46b8..a556ce6 100644 > --- a/v2v/convert_linux.ml > +++ b/v2v/convert_linux.ml > @@ -866,7 +866,9 @@ let rec convert ~keep_serial_console (g : G.guestfs) inspect source rcaps > ignore (g#command (Array.of_list args)) > in > > - if g#is_file ~followsymlinks:true "/sbin/dracut" then > + if family = `Debian_family then > + ignore (g#command ([| "dpkg-reconfigure"; "--frontend=noninteractive"; "initramfs-tools" |])) > + else if g#is_file ~followsymlinks:true "/sbin/dracut" then > run_dracut_command "/sbin/dracut" > else if g#is_file ~followsymlinks:true "/usr/bin/dracut" then > run_dracut_command "/usr/bin/dracut"It might be better to call update-initramfs directly. I don't know, is using dpkg-reconfigure maybe safer across distributions? The slight advantage of calling update-initramfs is that we can turn on verbose mode, just like for dracut: let run_update_initramfs_command () let args "update-initramfs" :: (if verbose () then [ "-v" ] else []) @ [ "-c"; "-k"; mkinitrd_kv ] in ignore (g#command (Array.of_list args)) in The other advantage is that we can provide the kernel version we want. The default is to update the initramfs for the latest kernel, which in theory might not be the one we want if it were missing virtio drivers (not sure if this can happen). According to ordering we do any kernel without virtio drivers is worse than any kernel with virtio drivers. What we can also do is specify list of modules we require. Similar to what we do for dracut/mkinitrd. Debian uses a file for that: (* The modules to add to initrd are defined in a file. *) ignore (g#sh "sh -c 'echo \\# Added by virt-v2v >> /etc/initramfs-tools/modules'"); let cmd = (sprintf "sh -c 'echo %s >> /etc/initramfs-tools/modules'" (String.concat " " modules)) in ignore (g#sh cmd); The commits I didn't reply to LGTM. -- Tomáš Golembiovský <tgolembi@redhat.com>
Pino Toscano
2016-Aug-10 09:05 UTC
Re: [Libguestfs] [PATCH 8/8] v2v: linux: correctly reconfigure the initrd on Debian
On Tuesday, 9 August 2016 13:55:53 CEST Tomáš Golembiovský wrote:> On Mon, 8 Aug 2016 18:38:55 +0200 > Pino Toscano <ptoscano@redhat.com> wrote: > > > Use the canonical way to regenerate the initrd images for all the > > installed kernels, i.e. reconfigure the initramfs-tools which will > > trigger the kernel postinst scripts. > > --- > > v2v/convert_linux.ml | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/v2v/convert_linux.ml b/v2v/convert_linux.ml > > index cfe46b8..a556ce6 100644 > > --- a/v2v/convert_linux.ml > > +++ b/v2v/convert_linux.ml > > @@ -866,7 +866,9 @@ let rec convert ~keep_serial_console (g : G.guestfs) inspect source rcaps > > ignore (g#command (Array.of_list args)) > > in > > > > - if g#is_file ~followsymlinks:true "/sbin/dracut" then > > + if family = `Debian_family then > > + ignore (g#command ([| "dpkg-reconfigure"; "--frontend=noninteractive"; "initramfs-tools" |])) > > + else if g#is_file ~followsymlinks:true "/sbin/dracut" then > > run_dracut_command "/sbin/dracut" > > else if g#is_file ~followsymlinks:true "/usr/bin/dracut" then > > run_dracut_command "/usr/bin/dracut" > > It might be better to call update-initramfs directly. I don't know, is > using dpkg-reconfigure maybe safer across distributions? The slight > advantage of calling update-initramfs is that we can turn on verbose > mode, just like for dracut: > > let run_update_initramfs_command () > let args > "update-initramfs" :: > (if verbose () then [ "-v" ] else []) > @ [ "-c"; "-k"; mkinitrd_kv ] > in > ignore (g#command (Array.of_list args)) > in > > The other advantage is that we can provide the kernel version we want. > The default is to update the initramfs for the latest kernel, which in > theory might not be the one we want if it were missing virtio drivers > (not sure if this can happen). According to ordering we do any kernel > without virtio drivers is worse than any kernel with virtio drivers.Makes sense, I'll drop my patch and leave it to you.> What we can also do is specify list of modules we require. Similar to > what we do for dracut/mkinitrd. Debian uses a file for that: > > (* The modules to add to initrd are defined in a file. *) > ignore (g#sh "sh -c 'echo \\# Added by virt-v2v >> /etc/initramfs-tools/modules'"); > let cmd = (sprintf "sh -c 'echo %s >> /etc/initramfs-tools/modules'" > (String.concat " " modules)) in > ignore (g#sh cmd);If we want to do that, then please use the write_append API for this. Thanks, -- Pino Toscano
Tomáš Golembiovský
2016-Aug-10 12:00 UTC
Re: [Libguestfs] [PATCH 8/8] v2v: linux: correctly reconfigure the initrd on Debian
On Wed, 10 Aug 2016 11:05:19 +0200 Pino Toscano <ptoscano@redhat.com> wrote:> On Tuesday, 9 August 2016 13:55:53 CEST Tomáš Golembiovský wrote: > > On Mon, 8 Aug 2016 18:38:55 +0200 > > Pino Toscano <ptoscano@redhat.com> wrote: > > > > > Use the canonical way to regenerate the initrd images for all the > > > installed kernels, i.e. reconfigure the initramfs-tools which will > > > trigger the kernel postinst scripts. > > > --- > > > v2v/convert_linux.ml | 4 +++- > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > > > diff --git a/v2v/convert_linux.ml b/v2v/convert_linux.ml > > > index cfe46b8..a556ce6 100644 > > > --- a/v2v/convert_linux.ml > > > +++ b/v2v/convert_linux.ml > > > @@ -866,7 +866,9 @@ let rec convert ~keep_serial_console (g : G.guestfs) inspect source rcaps > > > ignore (g#command (Array.of_list args)) > > > in > > > > > > - if g#is_file ~followsymlinks:true "/sbin/dracut" then > > > + if family = `Debian_family then > > > + ignore (g#command ([| "dpkg-reconfigure"; "--frontend=noninteractive"; "initramfs-tools" |])) > > > + else if g#is_file ~followsymlinks:true "/sbin/dracut" then > > > run_dracut_command "/sbin/dracut" > > > else if g#is_file ~followsymlinks:true "/usr/bin/dracut" then > > > run_dracut_command "/usr/bin/dracut" > > > > It might be better to call update-initramfs directly. I don't know, is > > using dpkg-reconfigure maybe safer across distributions? The slight > > advantage of calling update-initramfs is that we can turn on verbose > > mode, just like for dracut: > > > > let run_update_initramfs_command () > > let args > > "update-initramfs" :: > > (if verbose () then [ "-v" ] else []) > > @ [ "-c"; "-k"; mkinitrd_kv ] > > in > > ignore (g#command (Array.of_list args)) > > in > > > > The other advantage is that we can provide the kernel version we want. > > The default is to update the initramfs for the latest kernel, which in > > theory might not be the one we want if it were missing virtio drivers > > (not sure if this can happen). According to ordering we do any kernel > > without virtio drivers is worse than any kernel with virtio drivers. > > Makes sense, I'll drop my patch and leave it to you. >Ok.> > What we can also do is specify list of modules we require. Similar to > > what we do for dracut/mkinitrd. Debian uses a file for that: > > > > (* The modules to add to initrd are defined in a file. *) > > ignore (g#sh "sh -c 'echo \\# Added by virt-v2v >> /etc/initramfs-tools/modules'"); > > let cmd = (sprintf "sh -c 'echo %s >> /etc/initramfs-tools/modules'" > > (String.concat " " modules)) in > > ignore (g#sh cmd); > > If we want to do that, then please use the write_append API for this.Yes, that's much better. Thanks for the tip. -- Tomáš Golembiovský <tgolembi@redhat.com>
Possibly Parallel Threads
- Re: [PATCH 8/8] v2v: linux: correctly reconfigure the initrd on Debian
- [PATCH 8/8] v2v: linux: correctly reconfigure the initrd on Debian
- [PATCH v3 1/2] v2v: linux: correctly reconfigure the initrd on Debian
- [PATCH v4] v2v: linux: correctly reconfigure the initrd on Debian
- [PATCH 1/2] v2v: linux: correctly reconfigure the initrd on Debian