Some notes on booting single user in x86 Solaris 10
Here's some somewhat sketchy notes, mostly for my own future reference, on various bits of booting Solaris 10 x86 into single-user mode.
On x86 Solaris, kernel boot parameters go on the end of the '
/platform/i86pc/multiboot' line in the GRUB boot entry. You put them in
by interrupting the GRUB menu to edit the default boot entry (and then
that line). The two most useful parameters are
-s for single-user
-v to dump kernel messages to the screen as the system boots
instead of just to syslog.
However, this single user isn't really completely single-user, because
there are still a bunch of
svcs things that get started and run. It
is possible for some of these to crash, leaving you
with a machine that will not come up even when booted with
(You cannot fix this by booting the rescue environment, because you
can't use it to turn services off in your regular system; the
framework has to be running before you can do things like
disable errant startup bits.)
In this situation, boot with '
-m milestone=none'; this starts
svcs framework but runs almost nothing. In particular, the
root filesystem is not mounted read-write; you can either run
/lib/svc/method/fs-root or do it by hand with
fsck / mount -o remount,rw /
(you will also need to mount
/usr and so on if applicable.)
At this point you can use
svcadm to modify what will
be run, for example to force off svc:/system/metainit. An important
safety tip: under at least some situations, trying to
an already disabled service will cause
svcadm to just give you its
general usage message instead of explaining what's actually wrong.
(It is possible to spend some time retyping command lines very carefully, trying to figure out just what stray bit snuck in, before the penny drops. Fortunately I was experimenting, not in the middle of a crisis.)
Useful information is in
/lib/svc/share/README aka here, and the various scripts that are
run to start things are in
(Probably all the hip
svcs people already know that, but I didn't.)