You are on page 1of 8

The Meilix Road Block Project

Migration to 64 bit

FOSSASIA - GSoC 2018

- Tarun Kumar | meets2tarun

meets2tarun@gmail.com

Contents

1. Abstract
2. Analysis and Proposed Solutions
3. Timeline
4. About Me

1. Abstract

The Meilix road block projects deals with resolving all the major road blocks of the Meilix
Linux custom distribution to put it into a productive stage. One key unresolved issue is
to migrate the distribution from a 32Bit to current 64Bit system and associated live boot
kernels. While several people had tried to solve the road block issues no one in the
project was able so far to dedicate the time to get it through.
Meilix provides you to download a pre-customizable OS ready to live boot on different
systems at a time.
This will reduce a install the same OS on different systems and then customize it with
different packages and settings. Meilix Generator provides a webapp to configure your
desire packages and settings in GUI and get that specific OS in your email box within
10 minutes.
Now we can have FOSSASIA as well as other orgs. using Meilix throughout their event.
● The current version of Meilix is in 32 bit. We can see that in the modern time
many apps are dropping their 32 bit version and adopting to 64 bit, so the idea is
to migrate Meilix to 64 bit.
● Next is to integrate the present Meilix desktop with SUSI.AI. The idea is to build
desktop enabled with susi_desktop. Embedding firefox and chrome with susi
bots. We can enable messaging in the Meilix using susi slack and Gitter bots.
Meilix will undergo sustainable development means developing Meilix using
extensions developed in FOSSASIA only.
● The last but not the least is to configure Meilix for programming event. A live
image ISO will already equipped with the required software can be dump in a
large amount of system at a time. This can be made possible through advancing
Meilix Generator features.

2. Analysis and Proposed Solutions

There can be more than one way to migrate to a 64 bit system from the existing 32 bit
base.

I plan to proceed as follows:

Installing a 64 bit kernel


● linux-image-amd64 - This version will automatically upgrade to the
upcoming latest version.
● linux-image-3.16.0-5-amd64 - This way will stick to this version only.

Setting up the bootloader to start the system and then boot it up.

Now the time is to change all the application to 64 bit for better performance.
So we will now create a small 64 bit system consists of 64 bit binaries and 64 bit
libraries.

Code Comment

mkdir /chroot64 creating a directory to work upon

apt-get install debootstrap tool which is going to be used


debootstrap --arch amd64 stretch/chroot stretch-stable: ​It was initially released as
http://ftp.debian.org/debian version 9 on June 17th, 2017 and its latest
update, version 9.4, was released on March
10th, 2018.

chroot /chroot64 Login into the system

chroot /chroot64 Libc6-i386 used to make work existing 32


bit binaries.

ctrl-d exit

cd​ /chroot64 Creating a list of the 64 bit binaries of the


find . -depth | ​while​ r ​ ead​ f mini system.
​do
​if​ file -L ​"​$f​"​ | grep -q ELF
​then
​echo​ ​"​$f​"​ >> /tmp/bins.txt
​fi
​done
​echo​ ​"./etc/ld.so.cache"​ >>
/tmp/bins.txt

chroot /chroot64 Upgrading all the packages to installed in


the 64-bit mini root.
dpkg --get-selections|awk ​'{print $1}'
> /tmp/minipackages.txt

<CTRL-D>

apt-get update

apt-get install `cat


/chroot64/tmp/minipackages.txt`

mkdir /main Choosing a linux live cd to make certain


changes and then mounting all the system
mount /dev/sdax /main partition into the /main.

cd​ /main

ls ​# check if it's really the root of


your main system

cat etc/fstab ​# see all your other


filesystems, eg: /usr
mount /dev/sda8 /main/usr
mount /dev/sda11 /main/tmp

cd​ /main/chroot64 Overwriting the binaries of main system


from the 64 bit mini root.
cpio -pVdu /main < /main/tmp/bins.txt

umount /main/tmp Unmounting the mounted partition


umount /main/usr
...
umount /main

Now we will boot to the newly build 64 bit OS.


Then we will reinstall all the remaining 32 bit packages.

This the beta approach which I found and this can be used to convert the existing
meilix.

Remaining Paths

● Getting in touch with developers of casper and other boot parts.


● Swapping the installer and casper to 64 bit and to use 64 bit debootstrap
● Getting an image of ​image-i386.tar.lzma for 64 bit (​link​)

Other task to consider:

➔ Integration of SUSI desktop and Add-on in Browser

Today we can see that Windows, MacOS, Amazon have Cortana, Siri, Alexa
respectively which make one to perform its task easily.
FOSSASIA already have SUSI in a very developed condition. The majority of this
task would be to integrate SUSI on Meilix desktop. So Meilix will have several
automation feature which can be handy in workshops, summit and conferences,etc.

➔ Creating an desktop for programming event

The webapp Meilix Generator is the subset of this feature. Improvisation of different
features to make Meilix more customizable will make it suitable for any event like
programming, hackathons, etc.
With the help of this feature one has the ability to choose the which package one
wants to be in OS with a different choices and getting a link to ISO in its email.
Choosing a software will be made possible from a menu available on the webapp.

Life Cycle Model:

An Evolutionary Model would be followed. As described above, the project has been
broken into several tasks which will be incrementally implemented and delivered.
New Releases would include new functionality.

By Milestone -I (Midterm), we would have 64 bit Meilix in our hand with few SUSI
features.
By Milestone -II (Final Evolution), Advance features would be developed in Meilix
Generator and an ready to made ISO for any event.

❏ There will daily scrum before 10 AM local time.


❏ Blogs will be exclusively written on the worked tasks per week.
❏ Continuous updating of test cases for successfully building of project on
travis, etc.
❏ Making a documentation of the tasks/ways which work and which not.
❏ Making of the video of implemented feature, so as we progress we have a
record of history.

Proposed Timeline:

Pre-Community Bonding Period

● Trying out hands with Linux from Scratch and to understand the working
behind different packages.
● Understanding the source code which actually decides whether the
development package will be 32 or 64 bit.
● Testing and trying the SUSI bots developed in FOSSASIA
Community Bonding Period (​24 April 2018 -13 May 2018)

● In the period, I’ll try the above mention plan of implementing the 64 bit
version. And simultaneously getting in touch with the developers of Casper
and will discuss the plans, issues and approach to follow them.
● Always present in the channel and follow the mailing list for a better iteration
of the proposal.
● Embedding the current build with the SUSI tools so as to make sure that the
bots are compatible with Meilix environment.

Coding Phase

14 May 2018 - 28 May 2018

● Working on the 64 bit version first for Meilix 


● Testing and fixing of any issues arise during the same. 

29 May 2018 - 11 June 2018

● Sending it out to fellow developers for testing and reviewing purpose. 


● Getting sorted with any issues related to 64 bit support of the Meilix. 
● Implementing SUSI desktop features into Meilix. 

11 June 2018 - 15 June 2018 


 
● Creation of the documentation of the work done so far. 
● 1st evaluation time: ready with all the code commits and documentation. 
 
 
16 June 2018 - 28 June 2018 
 
● Simultaneously adding support for continuous integration. 
● Sending out the 64 bit version to developers of FOSSASIA (mainly current 
GSoCers) to test the version and review it. 
● Testing of SUSI desktop working. 
 
29 June 2018 - 9 July 2018 
 
● Implementing other SUSI add-on in different browsers. 
● Testing of the SUSI features which are embedded into browser. 
 
 
9 July 2018 - 13 July 2018 
 
● Getting ready with the 2nd evaluation documentation and all the code 
commits 
 
 
14 July 2018 - 23 August 2018 
 
● Improving new features in Meilix Generator includes:  
● Wallpaper bug fixes  
● Homepage URL fix 
● Getting an latest build link in the mail 
 
24 July 2018 - 6 August 2018 
 
● Implementing package choosing feature in Generator: 
● One has the ability to choose which text editor, media player should be 
installed from the webapp 
 
6 August 2018 - 14 August 2018 
 
● Prepared with all the documentation and proper gist for evaluation. 
● Have all the videos and blogs in hand for tracking out the history of the 
project.

About Me
My name is Tarun Kumar. I am an Electrical Undergraduate at the Indian Institute of
Technology Patna, India, in my sixth semester. During summer, I will be located in my
college or my college Bihta, Bihar, India.
After the GSoC 2017, I was regularly updated with FOSSASIA.
I was engaged in Advanced Developer Program with Meilix, Badgeyay and Labyrinth
repos. Over there I was contributing to those repos and reviewing code commits and
blog posts.
Throughout the year I review pull requests and blog posts for students participated in
Code Heat and helping out the young school developers for the Google Code In.
During GSoC 2017, Meilix reaches several milestones like conversion to LXqt, getting a
webapp like meilix generator, and many many more and I was proud to be part of it. I’ll
be present in the FOSSASIA Summit 2018 where I’ll meet Debian developers and tell
them about Meilix and discuss the issues with them.
I’ll use these talk to carry out those things from developers which can be helpful in
successfully executing the major tasks.

Ultimate aim of this GSoC :


Getting Meilix into common man use.
Get it use in FOSSASIA Summit and other conferences in every computer by
making it so suitable for it.
The active period of coding phase coincides with my summer vacation, therefore I’ll
be mostly active throughout. I’ll be solely working on GSoC project and can easily
give around 6-7 hours a day to project or around 40-45 hours a week.
My time zone is Indian Standard Time (IST), +5:30 GMT​.

Reference:

https://wiki.debian.org/Migrate32To64Bit

Contact

meets2tarun@gmail.com 

sucode.me 

Github Profile: ​https://github.com/meets2tarun 

FOSSASIA Blog: ​https://blog.fossasia.org/author/meets2tarun​/ 

Slack: ​https://fossasia.slack.com/messages/@sucode 

Gitter: ​https://gitter.im/meets2tarun 

Phone No: +91-7905278253

You might also like