[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Broken System After Update



Ogya Chief wrote:
>    No init found. Try passing init= bootarg

Ouch.

> I googled for solution and this is the solution I got. The solution
> talks about chrooting and running the following command:
>     update-initramfs -u -k $(uname -r) -u

Seems reasonable.  This should rebuild the initrd (initial ram disk)
which seems to have become corrupted on your system.

> but when I do that I get this error message:
>    bash: update-initramfs: command not found.

That command is located at /usr/sbin/update-initramfs.  After you
chroot into your system do you have that command there?

  # ls -ld /usr/sbin/update-initramfs
  -rwxr-xr-x 1 root root 9315 May 13  2011 /usr/sbin/update-initramfs

Is it possible that you have /usr on a separate partition?  In which
case it needs to be mounted too.

It is possible that in your chroot PATH is not set to point to that
directory.  In which case you could call the command using the full
path to it.

  # /usr/sbin/update-initramfs -u -k $(uname -r) -u

It is also possible that a broken initrd is not the problem and that
the problem is elsewhere on your system

> This is what I did:

Thank you for the very nice and complete description of what you did!
That was very good.

> I booted up my computer using a debian live cd and ran the following
> commands:
>   mount /dev/sda2 /mnt/
>   mount /dev/sda1 /mnt/boot

Good.

>   mount -t proc proc /mnt/proc
>   mount -t sysfs sys /mnt/sys
>   mount -o bind /dev /mnt/dev

I prefer to bind mount all of them instead of creating a second
/proc.  But okay either way.  But I think this is a little cleaner.  I
don't think /sys is needed in the chroot for this operation.  At least
I never mount it and it all seems okay.

  mount -t bind /proc /mnt/proc

> after which I typed 
>   chroot /mnt /bin/bash

And since that worked and gave you a prompt we know most of your
system there must be okay.

> What am I doing wrong? 

Look in /usr/sbin just to make sure there are files there.  If you
have /usr on a separate filesystem then you would need to mount it too
along with the others when you mounted it above.  If it were missing
it would also cause the same error.

PATH may not be set nicely and may not include /usr/sbin:/sbin in the
chroot.  Fix that with:

  PATH=/usr/sbin:/usr/bin:/sbin:/bin
  export PATH

As an alternative to calling update-initramfs I usually call

  dpkg-reconfigure linux-image-$(uname -r)

That basically does the same thing.  It calls the Debian package
manager to run the kernel postinst script which calls update-initramfs
and so has the same result.  But it also has the opportunity to do
other things in the postinst script too.

Bob

Attachment: signature.asc
Description: Digital signature


Reply to: