Frank Peters posted on Mon, 01 Jul 2013 15:35:42 -0400 as excerpted:

> Kernel-3.10 has just been released and I quickly grabbed the source and
> compiled.  I usually have no problems with a new kernel but this time
> there were a few surprises.
> First, there is a new kernel option called "Kernel support for scripts
> starting with #!."  This option seemed applicable only to boot scenarios
> involving initramfs but unchecking it caused my system to fail to boot.
> Because this may cause unexpected problems for others, I mention it
> here.

That's standard "shebang" (shell bang or hash-bang) support, 
traditionally used to allow pointing to the interpreter used to interpret 
a script-executable.  It's actually used in a number of contexts, 
including most *ix interpreters understanding it to allow pointing at a 
different interpreter as necessary/desired.  Bash will use this to invoke 
the appropriate executable as interpreter, handing it the file it was 
just sourcing itself to execute, if it encounters a shebang pointing to 
say perl or python instead of sh or bash, for instance.

AFAIK the kernel has long had the option, enabled by default, but it 
probably moved in the kernel config menu and/or was slightly reworded, so 
it showed up as new.

And no, as you found out it's *NOT* initramfs-only.  It's basic kernel 
functionality that been assumed for (I guess) decades now.  The wording 
in the kconfig help text for that option simply explains that if the 
support is compiled as a module rather than built-in, you won't be able 
to run scripts until the module is loaded.  Most binary-based distros 
ship a modules based kernel with initial module loading in an initr*, and 
often the init in the initr* is a script, thus the warning there.

But as you may have noticed, openrc, gentoo's default init system, uses 
#!/sbin/runscript to point to runscript (part of openrc), as its script 
interpreter, and it may well be that turning off kernel shebang support 
screwed you up that way.

Regardless, it's basic enough Linux and Unix functionality that you'll 
nearly always want it enabled and even built-in for any even semi-
traditional Linux install.  Certain embedded cases may not need it, 
however, and I'd guess android (now the largest linux kernel deployment 
by far, well outnumbering traditional gnu/linux deployments) doesn't use 
it either, tho I don't know enough about android to be sure.  Thus the 

> Second, the RTC (real time clock) module option, which has been present
> for a long time as a basic kernel driver, has suddenly disappeared.  To
> get the same functionality, one has to enable the new "PC-style CMOS"
> RTC driver, and because this builds a module with a different name
> (rtc-cmos vs. rtc) my custom start-up scripts suddenly were broken.  It
> took a bit of searching to resolve the problem.  I suppose that users of
> udev may not notice the change, but I mention it just in case others may
>  experience something similar.

Good heads-up. =:^)

> However, the main problem for me with kernel-3.20 is that the
> nvidia-drivers will fail to emerge.

3.10 I think you mean, unless you're a time-traveler just arrived from 
about two years in our future (the kernel release cycle's about 10 weeks, 
roughly 5 releases a year), but anyway...

As the others have said, that's standard and expected behavior with new 
kernels and out-of-tree drivers (including but not limited to the nVidia 
graphics driver) that haven't updated to account for changes to the 
latest mainline kernel code.

See the stable_api_nonsense.txt file in the kernel's Documentation subdir 
for the official explanation, but it's simply a cost of choosing to keep  
kernel code out of the main tree (as nvidia has to do due to their 
refusal to fully open source their code).

Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman

Reply via email to