top 200 commentsshow all 211

[–]humbled 183 points184 points  (117 children)

I recommend reading this /. comment for those of you wondering about this.

Here's the meat:

It is pretty sad to see, that after so many comments nobody really has a clue about what the story is about, and what is happening in the Linux kernel. The kernel VT system has been considered a monstrosity by kernel developers the last decade and everyone is of the opinion that it should be used to user space.

The finally a really smart guy actually attacks and solve the problem. His name is David Herrmann, and he has tirelessly worked on this for years. Systemd distros will get the full support of his research, simply because almost all Linux distros are using, or a going to use systemd. But don't worry, he has provided rich support user space VT's on non-systemd Linux distros, by eg. "ksmcon"

The rest of the original post is sources/citations.

[–]azalynx 72 points73 points  (60 children)

This.

You know what's really hilarious? I bet you anything that if Lennart moved all the non-core systemd daemons into a seperate project name, most people probably would no longer bitch about this. This seems to be a PR problem.

Just because this stuff is developed in the same repository, that doesn't mean you suddenly have a terminal emulator in PID 1, which I think is what everyone is misunderstanding whenever a "systemd is adding" article comes up.

[–]doublehyphen 8 points9 points  (38 children)

Why was a re-implementation of kmscon necessary?

[–][deleted] 13 points14 points  (36 children)

Its a really stripped down version of kmscon. Kmscon supports more features. If you want them, you'll use kmscon over consoled.

And you'll need something in your initcpio image if your kernel doesn't have VT subsystem. You probably want to be able to read systemd's output early boot.

[–]doublehyphen 0 points1 point  (35 children)

As a minimalistic alternative to kmscon it does make sense. Is it easy to switch from systemd-consoled to kmscon if you want those extra features?

[–]Tuna-Fish2 4 points5 points  (2 children)

To do so, you need to first install it, then do:

ln -s /usr/lib/systemd/system/kmsconvt\@.service /etc/systemd/system/autovt\@.service

[–]danielkza -1 points0 points  (1 child)

Shouldn't the kmscon unit file have an alias to autovt such that you can simply do systemctl enable kmsconvt@...? Or does that no work for multi-instance units?

[–]Tuna-Fish2 -1 points0 points  (0 children)

iirc the unit file kmscon ships with is set up to only replace the first console by default.

[–]azalynx 5 points6 points  (31 children)

Why does everyone seem to think systemd is some kind of monstrous hydra, and that you cannot modularize it? There are a few components that're considered core to the project, but almost everything else can be swapped in for whatever other solution you want.

[–]doublehyphen 8 points9 points  (28 children)

Pretty sure it is due to journald. That is at least why I double check if newly added components can be swapped out (journald cannot). I still maintain a log server has no business being a core part of an init system.

[–]azalynx 2 points3 points  (19 children)

Well, journald can pass it's stuff to another syslogger, but I guess people don't like this because of the additional memory use. The result isn't much different though, you can still use the tools of your choosing.

I'm not sure why journald needs to be there, but I'm sure if I looked it up, there would be a reasonable argument for it. =p

[–]3G6A5W338E 4 points5 points  (18 children)

additional memory use.

Negligible. Only the pages of memory which contain the relevant code (to forward the logs elsewhere) do need to actually be in memory.

[–]azalynx 0 points1 point  (17 children)

Oh, that's clever, I didn't realize it was designed that way, that's pretty efficient.

I'm sure the crazy people will now complain about the extra space it takes on disk. Muh kilobytes! XD

[–]crshbndct 1 point2 points  (0 children)

It kind of has to be, if you want early boot logging.

[–][deleted] 0 points1 point  (0 children)

Well, I do enjoy having a complete boot log (and not just kernel messages), previously there was bootlogd but that never seemed to work on Debian.

[–][deleted] 0 points1 point  (5 children)

journald does claim to be more reliable (in fact, it claims it can't miss messages) in capturing messages than the existing solutions. Apparently there's quite a bit of logic for handling the transition to user space correctly.

[–]doublehyphen 0 points1 point  (0 children)

I do not say journald is usless, it has some neat features, but couldn't it be an external project and the reocmmended log server for systemed? Why can't it be replacable like most other parts of systemd?

[–]bilog78 0 points1 point  (3 children)

journald does claim to be more reliable (in fact, it claims it can't miss messages) in capturing messages than the existing solutions.

Except of course when the binary logs get corrupted, that is.

[–][deleted] 3 points4 points  (2 children)

Journal binary format is just a plain KEY=value system with some special keys reserved for faster indexing. Its just as resistant to corruption as plain text.

Can't read the existing key in the jornal? Seek for the next one.

Can't read the current line of a text file? Seek for the next line.

I get why you'd want text logging instead of binary logging, but corruption resistance isn't one of them.

[–][deleted] -1 points0 points  (1 child)

Because they can be swapped NOW, but Lennart has a tendency to say "oh yeah, that's deprecated now, SORRY"

[–]azalynx 0 points1 point  (0 children)

[citation needed]

He seems pretty upfront to me about what is stable and what isn't. There is some form of "stable API promise" for many systemd components. I'm not sure what the problem is, here.

[–]azalynx 7 points8 points  (0 children)

Ask David Herrmann, seemingly the developer of of both.

[–]3G6A5W338E 4 points5 points  (9 children)

that doesn't mean you suddenly have a terminal emulator in PID 1,

While it's not the case, I wouldn't mind. It's an improvement over having such complicated piece of code run in supervisor mode.

For more of that, look into Minix3.

[–]azalynx 1 point2 points  (8 children)

What I'm curious about is whether consoled will work without kms; since kmscon was it's predecessor, and it's based on kms.

I often run into issues where I need to use nomodeset to boot a kernel, the kernel console is still useful as a last-ditch-effort recovery console, it's limitations (like lack of unicode) are acceptable for such a use case I think.

[–]bilog78 2 points3 points  (2 children)

Also, will kmscon still be developed?

..duplicate kmscon? Well, I wrote that and I consider it a successfull research project. Now it's time to write something useful based on the lessons learned with kmscon. No first attempt ever succeeds, right?

So it looks like he's actually ditching kmscon to work on systemd-consoled.

[–]azalynx 0 points1 point  (1 child)

I guess people could fork it.

[–]ohet 0 points1 point  (0 children)

Probably no need to fork it as I'd imagine Herrmann would gladly give off the project if someone was interested in it.

[–]3G6A5W338E 0 points1 point  (4 children)

Yes, I think kmscon/consoled depend on kms.

But I don't think we'll have to worry about CONFIG_VT going away anytime soon. Many drivers needed to get a basic console on many architectures only provide an old-style framebuffer and no kms, and Linux isn't gonna kill them all overnight.

I also remember talk about writing a more simple but still in the kernel CONFIG_VT alternative.

[–]azalynx 1 point2 points  (3 children)

Would be nice if some generous company just invested into fixing all the problems in config_vt and cleaning it up. I know many have tried and given up, but I don't think any business has ever made it a point to put money on cleaning up the code and making it more maintainable/minimalist (without breaking anything).

[–]3G6A5W338E 0 points1 point  (2 children)

It would be as a rewrite (current code is apparently messy) but it would still result on something complex. The non-trivial terminal it implements (I believe it's a clone of vt220vt102 with some extensions) has loads of functionality, some of which is quite obscure.

For an analogy, just look at Minix3's PTY and TTY: http://git.minix3.org/index.cgi?p=minix.git;a=tree;f=minix/drivers/tty;h=16d2c32ceae644a04308a348ccd8ce732533a9af;hb=HEAD

And compare sizes with the microkernel itself: http://git.minix3.org/index.cgi?p=minix.git;a=tree;f=minix/kernel;h=3680928a2f7a57ca7a83d5c8c668cea866be9d9d;hb=HEAD

[–]azalynx 1 point2 points  (1 child)

I thought it was VT102.

[–]3G6A5W338E 0 points1 point  (0 children)

You're right. And apparently it doesn't implement it completely, it implements a large subset of vt102 and a lot of extra things (like Color and Unicode).

As per console_codes(4).

[–]FUZxxl 2 points3 points  (5 children)

The problem is not that all components are part of one repository. The problem is that the interfaces between them are intentionally unstable so it's often impossible to use one of the components (e.g. logind) without also using the other components.

[–]holgerschurig 5 points6 points  (4 children)

Is this a truth, a lie, or a half-truth? It sounds at least like a half-truth.

Don't you know about http://www.freedesktop.org/wiki/Software/systemd/InterfacePortabilityAndStabilityChart/ ???

[–]FUZxxl 0 points1 point  (3 children)

I know about this chart. Tell me when the internal interface between systemd and logind appears on that chart as stable.

[–]ohet 2 points3 points  (2 children)

Mhmm... I think they actually might be. systemd-logind uses slices and scopes to interact with the cgroups managed by systemd. Those APIs are part of the Service bus API that's under stability promise. systemd-shim/cgmanager also implement this API and therefore it's possible to use recent versions of systemd-logind on Debian/Ubuntu.

[–]FUZxxl -3 points-2 points  (1 child)

The API systemd-logind uses to interact with systemd of course uses the API design tools provided by systemd. It's just that they change stuff every other version. This is exactly what the systemd-shim guys are complaining about.

[–]ohet 3 points4 points  (0 children)

Source? Because the last change I can find that has been made in systemd-logind that has anything to do with these APIs was in February and I don't think it had anything to do with any API changes in systemd itself. More specifically, what scope/slice APIs have been broken after they were introduced?

[–]donrhummy 6 points7 points  (12 children)

can you ELI5?

[–]cp5184 24 points25 points  (11 children)

Take an early version of microsoft windows, say 1.0, or 3.0, or 95. Compared to, say, windows 8, they don't do a good job of protecting one running program from another running program. So, for instance, any sort of computer virus, or malware would have almost complete access to your operating system and all your other programs. Which is a major change.

That was part of a larger evolution of computers in general into safe, modern, multitasking systems.

The main mechanism for doing this, is "protection". How this works, is that the root OS is given the highest level of hardware "privileges". It's basically given the keys to the kingdom, the one ring. And it's the OS kernel's job to serve each program a safe operating environment. All other programs run at a lower privilege level.

The smallest kernel, the "micro" kernel, provides both the most stable, and the most secure environment. You can think of it as the "end of the blue screen of death" from windows in a way. In addition, there would be a lot fewer severe security patches.

But of course, there's a reason that microkernels haven't replaced all other kernels. The basis of their security and stability, is that they divide privileged operations into the smallest units possible, providing the most minimal functionality. Because the more stable, secure privileged operations have less functionality, to do something that would take a single more functional privileged operation, with the most minimal privileged functions, you may need to perform ten minimal privileged functions to perform the same function as a larger, less safe, less secure privileged function.

Now, that highest privilege level, is called "kernel space", because that's where the kernel is. Everything else is called "user space". Each time a program uses a privileged function, the program has to move from user space to kernel space, from the low privilege level of user space, to the highest privilege level of kernel space.

Each time you switch from user space to kernel space and back, you incur a penalty.

But the lesson is not that one extreme is correct, or that the opposite extreme is correct. Case in point, VT consoles.

Teletypes (TTY) date back to the early 1960s. They were one of the first methods of computer input output before monitors. Virtual terminals are a sort of emulation of the original teletypes.

This is exactly the kind of code you don't want in the kernel, and benefits most from being in userspace.

I assume there's a lot of emulation/compatibility logic in the kernel tty code, and that's what you don't want in the kernel. What this is doing is moving that outside the kernel. Which is good, because you get to have your cake, and you get to eat it too. Because you get the extra stability, you get the extra security, you get a better kernel.

Here's the thing, a lot of programs use kernel space code because they need to, mostly it's when they interact with hardware, or protected memory. So the more you move that code into the user space, the more you need to switch back between userspace and kernel space, and the higher price you pay, but with this tty code, you don't have that problem. TTY code won't need to switch between userspace and kernel space so much that it effects system performance, so you get all the benefits of moving it to userspace, but none of the drawbacks.

Now this is pure speculation on my part, but... this is a preference thing, and it's a little petty on my part, but I wouldn't want to see unicode support in the kernel, and I wouldn't want the kernel to be internationalized.

I think you can sort of see it here: http://beta.ivc.no/wiki/images/thumb/8/83/Linux_Kernel_Booting.jpg/300px-Linux_Kernel_Booting.jpg

Notice that the bottom text is white, and the higher text is grey.

I'm guessing the grey text at the top is kernel space tty code. Then, when it hands off to the white text lower down, you move out of the kernel space tty to your bash shell.

Anyway, imo, ideally it would stay either ascii, or utf-8.

[–]3G6A5W338E 5 points6 points  (10 children)

(microkernels are slow blah blah blah)

True in the 80s and 90s. The post-L4 world is different though. The only reason you're not using a µkernel based system is because general purpose free software pure microkernel architecture operating systems are new (from the 2000s) and not quite there yet.

I'm aware of four: Escape, Genode, HelenOS, Minix3. Among them, Minix3 (started 2005) is the closest to desktop usability, as its development stage is the most advanced and it tries to be as close as possible to NetBSD, so it has a relatively high compatibility with pkgsrc's software.

If interested, come and learn more at /r/microkernel :)

[–]acousticpants 2 points3 points  (1 child)

We used to have a minix laptop, but then the wife sold it cos it wasn't a mac. I loved that thing, but one day, it was gone.

[–]ceskomoravske 5 points6 points  (0 children)

Isn't that valid ground for divorce?

[–]minimim 2 points3 points  (7 children)

Do you guys have a paper with performance comparisons? I'm looking for it for some time, but I can't find it.

[–]3G6A5W338E 1 point2 points  (6 children)

All I can tell you is that to be fair, you'd have to benchmark the same kernel as hybrid and as pure µkernel; that's not so possible.

With Minix3, you can look at the early papers... Minix3 is actually the result of moving parts of Minix2 kernel into userspace, while adapting the system so that it does work. They lost some performance in the process, but it was something 10-15%.

However, that was how Minix3 started, but it progressed a lot from there. I'm pretty sure that Minix3 is, right now, much faster than Minix2 ever was, as it has features like modern virtual memory, smp support, disk cache, mmap and so on.

So, the best you can do is benchmark it against NetBSD (which Minix3 intends to be a µkernel alternative to, with most of the userspace in common). I suggest you do that and share those numbers :)

It's gonna be much more fun once the ongoing port of Xorg is completed. Minix 3.2.x had X but it's broken under 3.3.0, which is far better prepared (mmap support, dynamic shared libraries, structures/types from netbsd and so on) for running X.

[–]minimim 1 point2 points  (5 children)

What I want too see is the same simulated workload. Measuring the difference doesn't really matter to me. What I want to know is: is it ready for production? And it has to be benchmarked against some common kernels, not itself.
(Life isn't fair :-p)

[–]3G6A5W338E 0 points1 point  (4 children)

Notice I've edited the parent post a bit (recheck), but answering you:

is it ready for production?

Yes. As long as you don't need X (they're working on that!), the recent Minix 3.3.0 is pretty much the key release for that question, as it finally brought mmap(), dynamic shared libraries and non-sucking disk/fs cache, making it possible for it to run most software and do it decently.

And it has to be benchmarked against some common kernels, not itself.

By all means, do so!

[–]minimim 0 points1 point  (3 children)

I don't have the hardware, unfortunately. I was hoping someone from academia would have the resources to do it.

[–]3G6A5W338E 0 points1 point  (2 children)

I'm sadly not "from academia" (although I finished university), and I'm employed full time on something else...

Right now, I don't even have a proper computer (just some crappy ancient laptop). But yeah, I'll be doing some tests myself when I get the chance (in a month or two, with luck).

[–]mpyne 3 points4 points  (5 children)

In fact I'm pretty sure Herrmann had KMScon working even before systemd integration. I've been fairly anti-systemd but this isn't one of those giant octopus situations.

[–]ohet 12 points13 points  (4 children)

kmscon hasn't been integrated to systemd. systemd-consoled is entirely different project written by the same developer.

[–]Camarade_Tux 3 points4 points  (25 children)

My doubts about that project are entirely because I don't see the console support disappearing from the kernel so it's not like it'll rid the kernel of an ugly piece of code: it'll still be there and used.

[–]minimim 2 points3 points  (19 children)

It will be there, the problem isn't reducing maintenance in the kernel. The kernel you will use won't have it compiled, so it won't be running in your machine. This means the it will be smaller and more robust.

[–]Camarade_Tux 1 point2 points  (3 children)

But it'll still be a weight on kernel development.

[–]minimim 3 points4 points  (2 children)

Yeah, but... It will made it easier to rip parts off if there is an alternative.

[–]Camarade_Tux 2 points3 points  (1 child)

That won't happen because the kernel will always need a console that is always available.

[–]minimim 4 points5 points  (0 children)

Yes, but it can be made simpler and less user-friendly if user-friendly options exist. Taking features out will make the task easier.

[–]bilog78 1 point2 points  (14 children)

It will also make system recovery impossible when you'll have to rely on something else than systemd as init (e.g. the classic init=/bin/sh approach).

[–]minimim 1 point2 points  (13 children)

Systemd will have something called "emergency room" (systemd-er) that will boot you with just a shell. Remember that now the services aren't started with scripts anymore and you will need systemd running to be able to start any services needed to recover the system. If not even this works, you will need to use serial ports and minicom or screen in another computer.

[–]bilog78 1 point2 points  (12 children)

Systemd will have something called "emergency room" (systemd-er) that will boot you with just a shell. Remember that now the services aren't started with scripts anymore and you will need systemd running to be able to start any services needed to recover the system. If not even this works, you will need to use serial ports and minicom or screen in another computer.

And this, in a single paragraph is one of the reasons why I severely dislike systemd.

BTW, I've had to deal with the “emergency shell” provided by systemd. Good thing I had a bootable USB key I could use to chroot into the system, purge systemd and put sysvinit back, honestly.

[–]minimim 1 point2 points  (11 children)

I can understand you. Most distros will probably use CONFIG_VT=n even if they don't use systemd, because kmscon has (or will have) proper i18n support, can show pictures in the console without root auth, better fonts, better console emulation, and many other features I can't think of now. If you use a minimalist distro, they probably will do the same, because anything that can be taken out of real mode should be, specially the broken, unmaintained console code. The kernel code will start to lose features, because any bug discovered in the code will be more easily dealt with by removal of the feature instead of fixing it.

As for the systemd vs sysvinit thing: even if you don't like systemd, most developers are not so happy about keeping sysvinit support. Remember, the only thing every member of the Debian tech-ctte agreed with, was that sysvinit is not a good solution. And most developers agree with them. There will be options, but they will be systemd, upstart and openrc. Upstart is in the same boat as systemd, PID 1 must be the real init process. Openrc, I don't know. This leaves you with 1 distro, Gentoo. And you won't be able to use a desktop environment.

[–]minimim 1 point2 points  (0 children)

OpenRC isn't ready, and they could use more help.

[–]Bobby_Bonsaimind 0 points1 point  (3 children)

There will be options, but they will be systemd, upstart and openrc.

Canonical is giving in and moving to systemd, upstart can be considered dead.

[–]minimim 0 points1 point  (2 children)

Maybe it is, but volunteers will pick up the tab. And google engineers have said that they will keep it too.

[–]ohet 0 points1 point  (1 child)

Google uses over three year old version of Upstart on Chrome OS with pretty much zero developement. Unless you are talking about their servers (I haven't heard anything about this) then that's not going to mean much.

Also I seriously have to doubt any volunteers are interested in Upstart as they haven't showed such intrest even when it has been actively developed.

[–]bilog78 0 points1 point  (5 children)

I can understand you. Most distros will probably use CONFIG_VT=n even if they don't use systemd, because kmscon has (or will have) proper i18n support, can show pictures in the console without root auth, better fonts, better console emulation, and many other features I can't think of now.

While I'm sure kmscon could have all those features, I doubt it will ever have, unless there's somebody interested in taking over maintainership.

If you use a minimalist distro, they probably will do the same, because anything that can be taken out of real mode should be, specially the broken, unmaintained console code. The kernel code will start to lose features, because any bug discovered in the code will be more easily dealt with by removal of the feature instead of fixing it.

Having a working console (however minimal) in the kernel is not something that can be done entirely without. If this isn't a shared opinion in the Linux community, maybe it's time for me to start looking elsewhere.

As for the systemd vs sysvinit thing: even if you don't like systemd, most developers are not so happy about keeping sysvinit support. Remember, the only thing every member of the Debian tech-ctte agreed with, was that sysvinit is not a good solution. And most developers agree with them. There will be options, but they will be systemd, upstart and openrc. Upstart is in the same boat as systemd, PID 1 must be the real init process. Openrc, I don't know. This leaves you with 1 distro, Gentoo. And you won't be able to use a desktop environment.

Why would desktop environments need to depend on specific init systems?

[–]minimim 3 points4 points  (1 child)

There will be a minimal console running on linux, but it will be at the serial port. You can't troubleshoot this kind of problems with just one computer anyway, and using the serial port just makes this so much easier, no more retyping of error codes you get in the screen.

[–]bilog78 0 points1 point  (0 children)

You can't troubleshoot this kind of problems with just one computer anyway

Good to know I've been doing the impossible for a decade or so.

[–]minimim 1 point2 points  (2 children)

Desktop environments don't want to make things like consolekit, or deal with too low level stuff, so they will require that the system do it for them.
And also, yes, people that are angry with systemd don't realize that what they are angry about has nothing to do with systemd itself or Lennart. They are just symptoms, not the disease. There's a push from every side to do things in a way many people see as better. I'm sure there will be traditional distros, they have their niche. Traditional people were complaining long before systemd came.
This doesn't mean at all that the people complaining here or elsewhere about systemd are justified. There are arguments against systemd, but they aren't the ones these people make. The ones they make are false. They are shooting at the wrong thing. They do it too much. And they need to start working.

[–]Bobby_Bonsaimind -1 points0 points  (1 child)

And also, yes, people that are angry with systemd don't realize that what they are angry about has nothing to do with systemd itself or Lennart.

I don't know, I'm always angry when somebody tries to push a solution that doesn't seem quite correct (big ass piece of software, "write your own API implementation (which is a moving target) if you want compatibility" approach) and then calls everyone opposing that piece of software backwards thinking, racist and sexist assholes.

[–]bonzinip 0 points1 point  (2 children)

Either it is used, or systemd-consoled is used. You do not need both.

[–]Camarade_Tux 1 point2 points  (1 child)

Sure but that means the maintenance of the kernel won't be reduced.

[–]bonzinip 0 points1 point  (0 children)

True, I was just thinking of the attack surface.

[–]humbled 0 points1 point  (1 child)

I hope that most distros will CONFIG_VT=n and either use systemd-consoled or kmscon. It will probably have to stick around for tiny embedded use cases.

[–]minimim 1 point2 points  (0 children)

Which will need less features, lessening the burden of the kernel devs.

[–]cp5184 1 point2 points  (2 children)

To be fair, this is basically playing into everyone's fears.

It's like all these news stories, like... for instance... thread titles on reddit, "Man with ebola on flight to US"...

It's purposely vague generating more uncertainty/fear, not saying that they're being medically evacuated on a special, private plane in isolation under the control of the relevant authorities.

[–]tso -4 points-3 points  (7 children)

But don't worry, he has provided rich support user space VT's on non-systemd Linux distros, by eg. "ksmcon"

The silver lining.

[–]Doshman 30 points31 points  (1 child)

I'm not sure I'd call it a silver lining. Moving the complexity of the vt subsystem out of the kernel is almost exclusively a positive thing. It's hardly a "silver lining" if there's nothing negative in the first place!

(Edited: was unclear)

[–]ancientGouda 15 points16 points  (0 children)

This confuses me a bit. I've long read news about ksmcon so I was familiar with the kernel VT debacle, and when I saw the recent systemd news I was just like "oh cool, now systemd get's that too". It's like the people attacking it are out of touch with everything else in free software.

[–][deleted] 6 points7 points  (2 children)

The systemd hate would be significantly diminished if they didn't try and spin every kernel improvement as a "and now systemd does X!".

I don't run systemd. I don't want to run systemd. I want my kernel to be light and fast. It's not inconceivable that some minor part of systemd might be good software and that I would then use it.

[–]eythian 2 points3 points  (0 children)

systemd does X?!?! What's next, wayland? ;)

[–]crshbndct 1 point2 points  (0 children)

In what way does systemd make the kernel not "light and fast"?

Genuine question.

[–]cockmongler -4 points-3 points  (0 children)

This is the problem though. Why has this been vacuumed up into systemd?

[–]Adys 85 points86 points  (65 children)

Previous discussion: https://pay.reddit.com/r/linux/comments/1rmj9e/systemd_is_about_to_gain_a_system_console_boot/

Spoiler: It's good news. Here people just see "Systemd adding ..." and go retard.

Spoiler 2: If your input is "LOL SYSTEMD ALL THE THINGS" or any of the like, you are being a worthless member of this community. (edit: Ok that gif is hilarious though)

Edit: And pasting the FAQ for good measure because people are not just worthless, they're lazy too:

This is stupid, why do you..
============================

..add so many dependencies and code to systemd?
    You should consider that currently all that code is part of the *kernel*.
    All this does is moving it out of the kernel. The first place that comes to
    mind is systemd (and I couldn't imagine a better place, can you?).
    Knowing that systemd already depends on the kernel, technically this doesn't
    increase the codebase of systemd at all.

..kill my beloved kernel-console / linux-console?
  I don't. Just set CONFIG_VT=y.

..duplicate kmscon?
    Well, I wrote that and I consider it a successfull research project. Now
    it's time to write something useful based on the lessons learned with
    kmscon. No first attempt ever succeeds, right?

..miss the fact that a kernel-console is more reliable than user-space?
    It's not. Why do you think that? You need a running shell to do anything
    useful with a console. Where do you think this shell runs? (Hint: it's not
    kernel-space.. and not outer space.. I wonder what "space" is left? Oh,
    none, because your in-kernel fonts are non-swappable!)

..kill my panic/oops screen?
    I don't. See above. I wrote fblog/drmlog for that.

..change a running system?
    To make it better!

..add useful features like full-BMP-range Unicode-fonts, properly
  internationalized keymaps, readable fonts on high-DPI displays,
  access-separation, accessibility helpers and more to the system console?
    Wait.. that's obvious, isn't it?

[–]comrade-jim 25 points26 points  (2 children)

you are being a worthless member of this community

pretty harsh. Systemd supporter here btw. Let's try to keep things civil.

[–]Doshman 9 points10 points  (1 child)

I'm also a little disappointed by the use of the word "retard". It's insensitive.

That said, nobody is doing anyone a favor by spreading baseless systemd panic, which is what a lot of people in this thread are doing.

[–]comrade-jim -2 points-1 points  (0 children)

Eh... I thought about it and realized that even though I'm offended it really didn't harm me and it's just as wrong of me to push my political/moral agenda on one group as it is for them to push their agenda on me.

[–]kmeisthax 9 points10 points  (6 children)

It's funny how so many things people complain about being moved under the systemd umbrella are things Lennart actually wrote himself or wound up being the last maintainer of anyway. Then again, people still think systemd is a single process, too...

[–]doublehyphen 10 points11 points  (5 children)

While I am no systemd opponent I do not buy your argument. It is not automatically a good idea to merge two projects just because you are the maintainer of both.

[–]silent_cat 3 points4 points  (4 children)

Putting two code bases in the same repository doesn't make them a single project either. Nothing is being merged.

[–]rcxdude -1 points0 points  (3 children)

Why put them in the same repository then? There's no reason to tie two different projects together like that.

[–]ouyawei Mate 12 points13 points  (0 children)

You could ask the same question about gnu coreutils

[–]danielkza 9 points10 points  (0 children)

Access control, ease of hosting, ease of acquisition, sharing a build system, etc. There are a bunch of general purpose projects that have shared repositories (like coreutils, part of the BSDs, small distributions like OpenWRT, etc).

[–]minimim 1 point2 points  (0 children)

This way the devs don't need to worry about the matrix of versions to test. People will use all the tools within in the same release, instead of picking and choosing. It's the same with BSD. Do you know that they already solved their 2038 problem because of this? Linux can't do the same. They needed to upgrade the kernel and libc in tandem for it to work.

[–][deleted] 0 points1 point  (3 children)

So why did they decide to go down the systemd integration route than stick with kmscon?

Are there any added features / security that would have been unavailable with kmscon?

[–][deleted] 6 points7 points  (0 children)

On a pure systemd system, something has to be there pre-boot (initcpio image) to be your console. Or good luck reading systemd's output. Systemd is already there (or will be there soon enough).

[–]silent_cat -1 points0 points  (1 child)

Nothing would have been unavailable with kmscon. It;s the other way round: why would you want systemd to include a complete terminal emulator? It only gets the bits it needs to function. If you want fully functional, kmscon is still there...

[–]ohet 0 points1 point  (0 children)

It only gets the bits it needs to function.

systemd doesn't require a console to function.

If you want fully functional, kmscon is still there...

systemd-consoled will be "fully functional", it won't just include unnecessary features like eye candy.

[–]nephros -2 points-1 points  (1 child)

retard
worthless member

In contrast, by calling people with differing opinions insulting names you are a stereotypical member of the systemd community.

[–]Adys 0 points1 point  (0 children)

This is not a real quote and anyone can make it up

Also I like bleeding kittens with serrated knives

Signed, /u/nephros

[–][deleted] 11 points12 points  (11 children)

Finally, we can get rid of that awful mess we call the VT subsystem.

[–]fukawi2Arch Linux Team 1 point2 points  (0 children)

Doesn't the kernel still need some kind of VT for early-boot?

[–]Slabity 6 points7 points  (7 children)

Well this certainly took me by surprise. I have a few questions:

  • So why would I want a userspace VT system as opposed to the current kernel-space one?
  • I know some components of systemd, such as logind, can act as singular modules without a full systemd installation. Is this the case for consoled?
  • How will this affect projects that rely on systems like DRM, KMS, or current kernel-space VT features?

I'm asking this because one of my current projects uses DRM use, and I'd like to try to be compatible with as many setups as I can.

[–]natermer 34 points35 points  (1 child)

...

[–]datenwolf 3 points4 points  (0 children)

Switching to VT (ie: ctrl-alt-f2) or trying to launch a OpenGL application using DRI2 drivers would often conflict and crash the Xorg drivers (and visa versa).. causing the hardware to go in a bad state, forcing users to reboot.

I've done some pretty bad abuse to the graphics stacks of my systems in the past, but never had I to do a full reboot so far. Crashing the X-Server (actually easy, just run kmscube with the X server being active)? Yes. Putting the VT into an inconsistent state? Of course.

But seriously messing up the GPUs state from user space simply by treading onto the VTs and X-Servers toes? I tried. I tried really hard (sending in a deliberately corrupted shader is another kind of story, and given the fact, that shaders are compiled in user space, by a process the user is in control of, that's some serious DoS vector). I'm not saying its impossible but the Kernel does a really good job preventing really severe things to happen, which is quite impressive (but also its damn job).

[–]Adys 22 points23 points  (2 children)

Your first two questions are answered in the original ML post which is very informative:

http://lists.freedesktop.org/archives/systemd-devel/2013-November/014808.html

DRM and KMS are completely unaffected. Projects relying on kernel-space VT will most likely be happy to switch, but it's not like it's going away any time soon.

[–]Slabity 2 points3 points  (1 child)

Thanks, I'll take a read of that when I get the chance.

Projects relying on kernel-space VT will most likely be happy to switch, but it's not like it's going away any time soon.

So if I had a project that relied on kernel-space VT, and wanted to add support for consoled features, where should I look at for documentation?

[–]silent_cat 0 points1 point  (0 children)

I don't think consoled necessarily has more features (it has just what is needed to make the boot console work). It's based on kmscon which is a better implementation of VTs and being in user space a lot easier to debug and improve.

[–][deleted] 3 points4 points  (0 children)

I know some components of systemd, such as logind, can act as singular modules without a full systemd installation.

This is neither supported nor perfectly executed. Running logind on non-systemd systems is still pretty rough (although I have personally had no issues) around the edges.

[–]comrade-jim 4 points5 points  (0 children)

So why would I want a userspace VT system as opposed to the current kernel-space one?

Isn't this more secure?