On Wed, 10 Aug 2016 11:05:19 +0200
Pino Toscano <ptoscano(a)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(a)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(a)redhat.com>