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, short key 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 common packages.
What I do is to add these udeb support of GNU/Screen and it's dependencies.
I created four Bug reports, actually it is 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 supporting 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 ashortcut 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 suppored 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]