-
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]