Hello everyone, welcome to my presentation.
I will introduce GNU/Screen to Debian Installer today.
I will show you its background.
What is Debian Installer,
What is GNU/Screen,
Why I want GNU/Screen in Debian Installer
and How to add GNU/Screen support in it.
First, The background.
I know that most of you know the Debian Installer.
It is just an installer.
But actually, It is a bootable Debian environment,
which is minimized in size.
That is to say, there is no document in the image.
There is no other non-replicated usually-useful information for normal people, which is usually putted in "/usr/share/doc".
But installer stage, we don't need them.
So, It contributes for minimizing environment.
Previously, we have a installer in one or two floppy disks.
It means that installer was very small.
Nowadays, it is not possible.
Because the kernel size is already over size of the floppy.
Second, there is a partitioner inside the installer.
So, you can do the partition and create a new disk image inside the installer.
After that, we can do the "debootstrap" to install Debian environment for you.
Finaly, the installer will install boot loader.
There is all kinds of boot loader, such as GRUB for PC or for ARM64.
For ARM platform, such as armel or armhf, we use flash-kernel as a boot loader.
What is GNU/Screen?
First, It is a terminal multiplexer.
It means that you can have multiple virtual terminal in real terminal.
And you can switch one virtual terminal to another virtual terminal by a shortcut.
In GNU/Screen, the shortcut is "Ctrl-A + 1", 2, 3, 4.
And Tmux (GNU/Screen alternatives)
use "Ctrl-B + 1", 2, 3, 4.
Then you must be thinking why we need GNU/Screen in Debian Installer.
What is the benefit?
Let me show you normal installer.
This is a normal installer.
We have UI.
And if we face some problem, such as partitioning or creating new disk image, we want to check the log.
We can press the key "Alt-F4"
to switch to the log console.
This is a case for normal PC.
If you want to switch back,
we can press the "Alt-F1".
I can show you the demo.
This is a normal Debian Installer screen.
I can enter "Alt-F2".
Command line appears.
I can see lots of stuff here.
By "Alt-F4", you can see the logs here.
If we want to turn back,
we can enter "Alt-F1".
Then we go back.
This is a case for normal PC.
But, there is no such convenient methods
in embedded.
For embedded device
such as armel or armhf
we usually install using the serial console
or the SSH over the network.
So, there is the only one real screen
for you.
There is no other screen.
Actually, there is a way.
You can see the previous page.
There is a "Go Back" option here.
We can go back and we can have this menu.
This is an advanced menu and you can enter a shell from here for embedded device.
After you enter a shell,
you can check the logs.
The log is in "/var/log/syslog".
It is there, you can check it.
But, if you want to do it,
every time you have to go back
and enter the shell.
You cannot do it all the time either.
Because sometimes the installer is running to install packages.
You cannot do it at anytime
like in a normal PC.
I was just thinking,
if we have GNU/Screen introduced
into the Debian Installer,
we can have it simple and convenient as a normal PC in the embedded area like armel.
So, I have started to work for it.
So, How to achieve it?
After some search, I found that
I need to support GNU/Screen binary package and its dependencies such as library to support udeb.
udeb is special format for Debian Installer
which minimize installer image.
That is to say,
it remove documents for example.
So, we have to support udeb
for GNU/Screen and its library.
And, we need to add those udebs
into the Debian Installer image.
The third one is that we need to write some script to start GNU/Screen in Debian Installer.
First, udeb support.
Normally, udeb is controlled by "debian/control".
it is like every binary packages
for the source packages.
So we just add additional section
for supporting a udeb (new binary).
After that, we just create a new "-udeb.install" file.
And it is almost identical to the original ".install" file, but entries for unnecessary file are removed.
After that we can create a patch.
Then submit it to package maintainer
to let him or her to incorporate my changes.
We add the new udeb package.
But, if the package is maintained by DM,
unfortunately DM need to ask DD
to sponsor the package to upload.
For the same reason, the package will stay
in NEW queue in ftp-master.
And we need to wait the ftp-master
to approve the upload.
So, it takes much longer time
than normal packages.
What I do is to add these udeb support
of GNU/Screen and it's dependencies.
I created four Bug reports,
actually these are four bugs with patches.
After that, we can have udeb package
that are ready to use.
But, we still need to include
in the Debian Installer image.
So, I patched to "debian-installer.git" repository
to support it.
And finally we need to start GNU/Screen command
after we started Debian Installer.
We also need GNU/Screen configuration to emulate Debian Installer environment like PC.
We actually have four virtual screen
in the Debian Installer.
First one is main screen, second is command
line console, and last is log console.
We want to emulate them.
I want to show you the demo.
Actually, I run the Debian Installer
on virtual machine.
This is the Debian Installer
with GNU/Screen support.
So, we have four virtual terminals here,
1, 2, 3, 4.
And I can switch terminal by a shortcut
such as "Ctrl-A + 2", "Ctrl-A + 3", and "Ctrl-A + 4".
It is a log.
As a PC side, as you see now,
it seems not much useful.
Because we can use "Alt-F1", "Alt-F2",
and "Alt-F3" to switch.
But for embedded side, It is much useful.
I have a progress update.
Actually these action items
are already done.
For example, first two packages are for library.
Actually, it was not needed at all.
Because, I learned that from Mr. Laurent,
GNU/Screen can be configured
to compile twice.
First time is for normal GNU/Screen and second time is for the one which does not use audit and pam library.
So, it can make GNU/Screen udeb binary minimized.
Actually, library which needs
to be really supported is ncurses.
ncurses has been uploaded to the ftp-master two weeks ago with the GNU/Screen binary package.
For Debian Installer image, I just pushed a commit after Debian Installer Stretch Alpha 7 was released this week.
Since I just pushed the commit
after the release,
you can now try GNU/Screen
in Debian Installer daily image.
Which device will benefit from it?
These are usual some ARM boards installed
by serial console or SSH network console
and some big machines
like SPARC64 or IBM s390/s390x.
Even some PC can benefit from it.
Because some PC are headless.
There is no HDMI or VGA ports
on that kinds of PC-server-like PC.
I would like to thank various people through early request-for-comment stage on my proposal
and the help during
my udeb package upload stage.
Thank you very much.
[Applause]
Are there any questions?
[chair]: OK, do it.
[questioner 00]: First of all, I use a SPARC embedded systems all the time.
[questioner 00]: So, absolutely this will be a great help.
[questioner 00]: Thank you very much for all your work.
[questioner 00]: I really appreciate this.
[question 00-00]: What was the one
thing that you found hardest with doing this?
[question 00-01]: What did make you surprised the most "How easy it was"?
Actually, most difficult part
is uploading the package.
Because one package is maintained by DM.
Usually DM can upload
without DD sponsorship.
But, since udeb is regarded as new package,
we need a DD to sponsor it.
I think it takes almost two month through the process.
[questioner 00]: And one thing you found very easy to do,
[questioner 00]: which you thought got to be hard?
mmm...
[questioner 00]: Nothing is not all hard?
[laughs]
From technical side, it was not hard.
Because everything is there.
I just write some simple patch
to add udeb support
and some script to start
GNU/Screen in Debian Installer.
So, from technical side, it is not so difficult.
[questioner 00]: Awesome.
Thank you.
[questioner 00]: Next question?
[questioner 01]: You said that it was already in Stretch Alpha 7...
No, I pushed my commit after Stretch Alpha 7.
[questioner 01]: OK, So is it gonna be after the freeze?
Yes.
[questioner 01]: OK.
[question 01-00]: Do you know if adding all these components related to GNU/Screen, how much the size of image will be increased in?
[questioner 01]: A lot or not much? Does it make any difference?
Yes, Debian Installer image size will be little bit larger than before.
For example, there are "QNAP" series which is armel architecture machine.
"QNAP" series are supported by Debian Installer.
But, "QNAP" series has size limitation.
Because we put the kernel and initrd image
in flash memory
and the flash memory size is about 2 MB for kernel and 4 MB for initrd.
So, the size is limited.
Whereas, the size of GNU/Screen udeb
package is about 500 KB.
So, it might be impossible incorporate with this new feature into that specific images.
For other images, I think it is OK.
There is no big size limitation concerned.
Currently, it is in Debian Installer daily build image.
So, you can just try it in daily build image.
And, URL is "https://d-i.debian.org/daily-images/".
There are many images in there.
Because there are images for all supported architectures such as amd64 and GNU Hurd etc.
So, you need to choose the right architecture and image.
This is my talk. Thank you very much.
[Applause]