grub-devel
[Top][All Lists]
Advanced

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

Re: A black window pop out after I select a boot entry in grub2


From: Vladimir 'phcoder' Serbinenko
Subject: Re: A black window pop out after I select a boot entry in grub2
Date: Wed, 10 Aug 2016 18:02:48 +0000

It's not about kernel but GRUB messages

Le mer. 10 août 2016 19:57, Xen <address@hidden> a écrit :
Andrei Borzenkov schreef op 10-08-2016 16:17:

> This is terminal window (same you get when entering CLI) where
> messages from commands are displayed (do not forget that menu entry is
> simply list of commands, so you *are* entering CLI in a sense). There
> is no way to disable it. Several years ago openSUSE tried to make it
> transparent, effectively hiding it; patch was dropped although I'm
> still not sure if this was some fundamental grub problem or simply
> unfortunate theme design.

Is this simply about the regular (Linux) terminal output that is getting
hidden by plymouth (usually)?

Personally at this point I am just worried about disabling any kernel
messages before Plymouth can hide it.

There are always a few messages that make it through in the beginning;
usually some ATA soft reset or some PowerNow thing that doesn't work or
something of the kind. This kinda pollutes the display when it was not
really intended.

Given my current level of expertise I would probably just patch the
kernel to make it easier, but then you have to deal with the whole
ordeal of kernel upgrades.

They haven't (on Ubuntu/Kubuntu at least) managed to make it hidden, and
if you install the nVidia driver which has no framebuffer driver,
textual messages continually leak through the displayed text progress
bar.

It kinda suprises me seeing the number of patches to grub that they've
made to make the boot experience more seemless.

You can't usually read boot messages fast enough and if systemd doesn't
make it to the "dumping everything in /var now" stage you are pretty
much screwed in diagnosing your system.

So the value of boot messages is rather limited, even when designing my
own systemd service to do anything I consistently have to look at
journalctl output, the boot output is too fast for me even when I know
what to expect, and *even* when I incur a 10 second pause.

Usually when something gets stuck it doesn't just get stuck, but systemd
messages keep being repeated quickly clearing the previous log off
screen.

I question the validity of having on-screen boot messages these days;
certainly in the number and speed they flow over the screen.

If there were options for interrupting the thing using regular keys or
being shown less but being able to expand it, it would be different.

I think showing the start of SystemD (or the end of initrd) would be a
good thing. Most people not involved with Linux will have no clue about
these different phases. I think it would be helpful if people could
grasp if there were two stages (or actually perhaps, three).

Something like

Loading pre-boot environment.
Loading device drivers.
Handing control over to the system.



Or an expansion of that in the sense of:

Loading boot environment.
Loading device drivers.
Unlocking encrypted system drive.
Checking main volume for errors.
Connecting main volume.
Transferring control to main system.

The issue is that "root filesystem" is not a concept people can
understand. It also makes it so troublesome to diagnose or fix root
filesystem problems because you cannot get there very easily (you need a
separate system).

To make the thing more user friendly (and therefore user-powerful) you
would need to have at least the following:

- the ability to boot into a functional initrd environment that is not
as alienating (there are only a few concepts that are important)
- the ability to enter this environment by shutting down your system
(upon shutting down your system)
- an awareness that this "filesystem" you will see is not the same as
your actual computer system
- ideally the ability to return to your main system after exiting the
initrd environment, even if that means rebooting it from the environment
(not sure if that would not complicate things further).

There are basically only 2 concepts in the initrd environment:

- loading and finding and unlocking your root filesystem
- passing control over to the installed system.

This would imply only a number of meaningful tasks:

- crypt unlocking
- raid assembling
- device enumeration
- filesystem mounting
- and/or passing control to a system that may not even have been mounted
yet.

Such a system could be like the debian text mode installers.

It deals with the same concepts as the installation.

People don't understand "mounting" something. They also don't understand
"root" filesystem. To make it meaningful "root" would have to be
identified as a device. Windows (and DOS) did that by using drive
letters. You were allowed to have many different roots, each pertaining
to a device. These days you can also mount stuff in a Windows tree just
fine.

So the only conceptual difference between Linux and Windows is that
Linux has one tree and Windows just has many. There is no other
difference here.

Linux is a single tree and Windows is a forest of up to 26 trees.

Identification of devices and where they connect is usually most
important.

My real suggestion is honestly just to use drive letters or something
that can simulate it; or to use other kinds of markings, or a new
concept of namespaces that actually has meaning to people(?).

I know there are kernel namespaces but I still don't know what they mean
(mount namespaces) and why they are important.

What you need to be user friendly is to give devices a name and to
access them using that name as a form of namespace in which those names
become primary access tokens.

Meaning any system that uses (flat) labels or even 'namespaced' labels
(such as "nas:media" or "remote:backup") would fit the bill here.

In theory a Windows system is just:

root -- A:
      -- B:
      -- C:

The different trees are just aggregated under a root that is never
mentioned and never used for access.

If you could employ the mentioned namespace-labels as user-centric
access tokens that are recognised on the level of the kernel,

With a format such as:

/:root    (non-namespaced root label)
/this:root     (namespaced root label)

/this:root/etc   (directory on namespaced root label)

:root/etc   (not using absolute addressing)

nas:media/...  (not using absolute addressing)

You would have an easy to implement system really in which the only
issues is : being an allowed character in filenames that mess with the
functioning of certain tools (tar, rsync, scp).

In which the character actually serves the same purpose.

Under these conditions absolute targetting would be required to ensure
that namespaces are not getting used (or labels) are not getting used by
unpacking some tar archive that contains such filenames; and hence could
be used to overwrite stuff that should not be targetted in that way.

Ie. you unpack some filename "here:root" that is a directory and
suddenly the contents of that directory are written to the root
filesystem.

Other than these issues there really aren't any other than the fact that
for it to be really useful a check against these names has to be made
for every root (/) entry lookup and every AT_CWD lookup, possibly
slowing down lookups slightly, while not being allowed for these lookups
to make it to any dentry cache.

If you could alleviate the problems you would have a system that could
at least be used quite proficiently as a kind of "toy" system (ie.
consumer desktops) even if you wouldn't want that for a long time for
harsher environments (servers).

The whole thing is only meant for user convenience, after all.

You would be able to integrate the various desktop environments in
having the same "Places" infrastructure down below. No tools would need
to be adjusted in order to use the system other than that "label" aware
programs (I originally just called this Magical Symlinks :p) would want
to prefix / internally (to make them absolute references) as well as
shells as long as : remains a valid character in e.g. tar archives. Of
course the : already creates problems on Windows systems. AT_CWD lookups
should only be allowed for interactive use. And root entries should
never contain a : (on the actual filesystem).

Given these constraints you could have something like this working in
no-time if you had the skills ;-).

It's just that interactive tools would need to prefix / internally given
that AT_CWD lookups like that can't really be allowed.

So the only constraints are:

- root entries cannot have : in them
- interactive tools must know about it (if safety is a concern)
- only absolute lookups using the /:name or /name:share syntax could
ordinarily be allowed

The "here" namespace could reference filesystem labels on local disks.

If you labeled your filesystems "root" and "var" and "tmp" you would
have here:root, here:var and here:tmp.

Servers could have their own namespaces with shares, such as nas:media,
nas:backup, nas:home.

Such a namespace could even be tied to autofs (if it works, it doesn't
always work for me).

The way it is these namespaces would do nothing other than references
mounted locations on the local filesystem hierarchy.

But what they would provide would be a flat namespace and a namespaced
(yes, confusing) namespace ;-) in which certain locations would become
easier to access such as:

:media will refer to /media/<user> for the current user.

:home will be a bit easier to type than $HOME or ~ on many keyboard, AND
it would work from graphical programs.

A program such as CloneZilla could use :partimag instead of abusing
/home/partimag for that.

"m" could be a namespace referring to all mounted devices under :media,
such as that m:<tab> would show a list of such devices.

So you might have your Kingston USB stick under m:KINGSTON/....

As well as, I guess, :media/KINGSTON/....

Or :m/<tab> would do the same.

Anyway.

It would all be faily easy to implement by having "real" symlinks under
/proc/sys somewhere that are getting managed by a userspace tool or
daemon and lookups for namespace:share or namespace:device would simply
resolve to such a directory symlink in the same way that regular
symlinks as a path component get "expanded" until the full path is
found.

It would simply expand into a path that references /proc/sys/share or
/proc/sys/name or something of the kind.

This in turn would be a symlink that gets resolved to the actual path.
Such that e.g.

/proc/sys/share/main/root  would be a symlink pointing to / and
resolving for :root.

/proc/sys/share/nas/media would be a symlink pointing to whatever and
resolving for nas:root/

Or simply /proc/share.

I don't like /sys.

So the magical symlink implementation will simply catch the lookup being
done, check for a : in it, only do it for / lookups when needed, prevent
these lookups from being cached (they are in-memory anyway) perform a
substitution in the path or return it as a "magical symlink" (my
preference) that points to /proc, and let the system handle the rest.

There will simply be 2 symlink resolution steps for every lookup using
that/those names.

The internal table is maintained by a module that updates /proc when
accessed through the "management interface" and just serves these
lookups in the meantime.

Well, enough, I guess.

I just think that would go a long way to making the system more
comprehensible to an ordinary person. Another namespace could be

disk:

That would display all disk devices or part: that would display all
partitions. You can go as crazy as you want.

Instead of /dev/sda you would use disk:sda or even disk:a

There is no interface where partitions are subdirectories of disks?
There is no /dev/disk/sda/1/

_______________________________________________
Grub-devel mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/grub-devel

reply via email to

[Prev in Thread] Current Thread [Next in Thread]