Building a Linux distribution from scratch | Interview

Building a Linux distribution from scratch | Interview

Here’s a quick interview with Constantine Apostolou who is the creator and maintainer of the Cinux Linux distribution. Creating an operating system from scratch has its difficulties, but also its good parts. Constantine explains this process and gives us more details about his own baby – Cinux!

Tell us a few things about you and your relation to the FOSS world.

Well, my name is Constantine, which in Latin means stability (thankfully I have plenty of that), I was born on January 2nd 1991 in New York City. Both of my parents are Greek. When I was 8 to 9 years old and after my father’s death, my mother decided to move back to Greece and reunite with her family. There, after I finished school I was admitted to the Computer Engineering and Informatics school of Patras University. That’s when I first came in contact with the FOSS world. My cousin, Andrew, a telecommunications major at the time, suggested I installed Ubuntu 9.04 on my laptop which I did and really liked. From that time, an installation of a Linux distribution always “resided” on my hard drive, simply because I enjoyed the freedom and the philosophy of FOSS. Also, shortly after that I started developing software, at first I did quite simple stuff in C or Java but not too long after that I begun to write a simple UNIX like kernel in C and then I started planning and developing Cinux.

How did Cinux came to be? Was it a pre-planned project, or a nice curiosity “accident”?

That’s a good question. I always admired Bill Gates and Linus Torvalds because they created something of a kind, with millions of users (in the case of Windows, I guess billions?). So, I always wanted to do something like that. Well, obviously I wasn’t trying to create something for the millions of people but, something for me and if someone else liked it, for him too. That’s why I begun writing that UNIX-like kernel I told you about. But, I came to realize that it would be impossible for me to maintain a from scratch OS (drivers, bug hunting, new features…) so I simply went the free and open source way to create a from scratch Linux! Which probably makes it was a curiosity “accident”.

What are the biggest difficulties that you faced while building a Linux distribution from scratch and how did you overcome them?

When I started to develop Cinux I hardly knew 1% of what I know now about software development. This had me hours hunting on Google for information or trying to understand what the LFS or BLFS books meant. I guess that my need and passion to create was the thing that made me overcome these and any other difficulties that I ever had.

Besides learning everything about how your system works, what would you say are the main benefits for someone who builds a distribution from scratch?

Well, Cinux is a pure Linux system. Anything you create on it will work with most Linux distributions. Besides that, it’s a more secure and fast environment. Who would want to exploit Cinux anyways? Also, because of it’s nature the user has as much freedom as he wants, no super users, no restrictions. Of course, he will always have to be careful because he doesn’t want to break his system. With Cinux everyone has a good chance to become a Linux expert.

What makes Cinux unique among the hundreds of Linux distributions?

As I stated in my previous answer, Cinux is a pure Linux based operating system. It’s not just another Ubuntu, Debian or Fedora based distro. To be honest I was quite sick and tired seeing more and more of those and that’s another reason I went the “From Scratch way”. To add, Cinux is just a system, an operating system to start off, once you install it you can take it as far as you like, unlike other Linux distributions out there.

Cinux is trying to automate processes like the installation of the OS, and to offer an easy way to install applications that almost everyone uses. It is trying to be user friendly, but what is the target user market really? Is it the linux noobies, or the experienced users?

I’m not trying to provide pre-installed applications that much as I’m trying to cover dependencies in case a user wants to install his favorite application. Lets say a user wants to install Skype, or Google Chrome. From when I was developing that version of Cinux, I included all of the back end dependencies that are needed to run either software. This way Cinux is for sure trying to be user friendly. Now, about the target user market… Cinux might not be best for entry level users but a level up. After users “get their feet wet”, then they can use Cinux, play with it and learn from it. It’s a specialized operating system anyways.

The latest version (Cinux Pandora) is considered still unstable. What is it suitable for, and when are we going to see a “stable” Cinux release?

Cinux 1.7 (Pandora) is really another more stable Beta version of Cinux1. It started from Cinux 1.0.3, the first release with a user interface and brought it up to Pandora, with more features, speed and stability. Pandora has many good features. One of them is the presence of the Debian Package manager (Dpkg). By including it I managed to make Cinux a binary compatible OS with Debian and Ubuntu, not 100% but it’s still something. That’s how you can install Google Chrome for example. Other than Dpkg, there is the Cinux-Get package manager. It is ready to be modified by the user. And by that I meant that the user can, by himself, add his own repositories and have Cinux-Get install his packages from his own repos. Plus, Cinux 1.7 is continuing the job of it’s older brothers to be the a specialized OS.

Is Cinux still an one man project? Do you receive any contributions from Cinux users?

Up to Cinux 1.7 I was the only one who developed Cinux. There were a few guys that provided feedback but that’s just about it. Lately, and as I prepare the next release of Cinux (version 1.8), I get help from a kid in Greece. I hope in the future more people will want to help. That’s the purpose of FOSS, the community.

I know you like feedback and proposals, but how difficult is it for a developer to find the golden mean between doing what he wants and doing what the users tell him to do.

When a project is user oriented rather than developer oriented, the developer strives to make his creation likeable by the end user(s). However, there should be a border line as well. For example, a user may ask me to try to implement a new feature such as Gtk+-3.0 (which I currently am for 1.8) but he can’t ask from me to compile and make a version with Xfce, or Lxde, or Gnome Shell and so on, simply because that doesn’t meet the philosophy of the project. I have never heard anyone telling Microsoft or Apple to implement a new User Interface for a minority of users.

Any future plans that you may share with us?

Well, I stated on Cinux’s blog some time ago that I was planning on making it an all x86_64 (64 bit) distribution, simply because, for me at least, 32-bit systems are dead and the beyond 64-bits systems are the future. But, my grandfather used to say “Tell God your plans to make him laugh.”, so other than that, I really don’t want to say something specific because you never know how things will turn out to be.

Cinux Homepage

  • shadowguy14

    32-bit is dead huh? Not now they aren’t. Some of us like using “outdated” computers because they still work. Pretty selfish to just make a 64-bit version

  • Constantine Markos Apostolou

    Yes, I’m selfish. That’s why I took time out of my life to make something that’s free.

  • Constantine Markos Apostolou

    Thanks for the article and the interview Bill!

  • John

    You’re not the only distro doing 64bit only – it’s the way of the future

  • Bogen

    As far as 64 bit only, nothing wrong with that.

    But the following I’m confused about:
    >Also, because of it’s nature the user has as much freedom as he wants,
    no super users, no restrictions.
    >Of course, he will always have to be
    careful because he doesn’t want to break his system.

    That means
    no user privilege separation I assume? No separation of root an regular
    users as far as regular and pseudo filesystems?

    That in and of itself rules out any evaluation of Cinux on my part as that would very must restrict how Cinux could be used.

    that insists on running only as root on any *nix I actually consider
    stupid and lazy (at the minimum just ignorant). (I would make the exception for some limited access
    embedded system where a *nix is being used).

    I’ve been using
    Linux (and some of the BSDs) since 1996 and had used some Unix before
    that. Learning privilege separation and permissions comes with the
    territory (for any modern OS).

  • Alex

    There are many people that still use 32-bit although with a PAE kernel and scheduler. I see nothing wrong with the 64-bit user mode O.S. however please consider the 32-bit with PAE support too, it’s actually easier to code for in some cases and if you use blob files on manufacturers you have a better time with that as well as compared to 64-bit which requires extra steps (from distro to distro this is a pain in the arse). Although, I look forward as to how you handle this in 64-bit.

  • Constantine M. Apostolou

    I agree. I would like to add to that something, though. I wouldn’t call it lack of user privilege separation, I would rather say that there is no module in the installer that installs a custom user account on the computer, thus the user himself will be able to create the kind of account he wants with any kind of access to the rest of the system. It could be a kiosk account or an administrative one. I should say that I did have in mind ignorance and that’s why I mentioned that the users should be careful. When it comes to this, it’s more like Arch Linux. The live CD is root based. I intend to change this, however.

  • Constantine M. Apostolou

    PAE sounds interesting and I have to say that I did consider it as an option. Right now I am testing a PAE kernel for version 1.8. It works fine and it works fast as well, but the point of going to x86_64 is to avoid patching the kernel and getting hold of a pure system. Honestly it would be easier for me to stay in the x86 region because going to x86_64 would mean that I have to build everything from scratch, something that could be good and bad at the same time. I would like to add that I have a working pre-alpha 64-bit version but it was more like a small project. It runs on fluxbox and it’s not root based anymore.

  • Bogen

    Ok, thanks for the clarification. I assumed wrong then. :) No super user = user must login as root and create an account. Yeah, like Arch Linux is fine. I do live CDs default logins as non root. (well, a sudo no password account, no login over ssh until a passwd is set, unless one updates authorized keys). I also do installers via a non root user, using sudo only where needed.

  • Pingback: 开源访谈:从无到有构建出一个 Linux 发行版 | | XFOSS.COM()

  • Aventinus the Zethos

    Keep up the good work! :)

  • Phillip Martin

    Its pretty selfish to expect distro’s to cater to users of old ass hardware. Time and technology move on, so on point in wasting resources to code for old and slow hardware.

  • Ticked

    Oh, I had to ask a few things, couldn’t help it.
    1. What have you created?
    2. Do you have ANY idea what it’s like to tackle a project of this size?

    I am no coder, I admit. The largest task I have with any script or coding is html and css and batch scripting. I do make many graphics as well, MBAM icon, AlienArena logo, etc… too many to list and while it’s not easy to come up with original ideas everyone will like, sometimes damn hard and days days and days of just getting and idea together, and the same with creating websites. I can’t imagine doing something on this level as Constantine has.

    While I’m told in this day and age to just “leave it go”, I firmly believe ignorance needs a kick in the ass, not to be left running wild. I too make most graphics for FREE, mainly for freeware and my way of giving back to the excellent developers and coders who give us great freeware on ANY scale.

    This is something most get paid for and BIG bucks so again, to claim selfishness on Constantine, well, simply fired me up and shows how much (for many) intelligence is lacking along with self-centred thinking and make a horrid combo.

    Selfish? Only your statement.

  • Constantine M. Apostolou

    Hey, thanks for your comment and sorry for not answering earlier.
    I like your question and how you developed it. When I started developing Cinux I had in mind a desktop OS. However, as time passed I noticed that it was no use to go that way so I “converted” Cinux into a Education/Development Platform – No other OS is like this, less things to do and you might have a wider audience (schools, universities or companies). It has ALL the tools you might think of, even the ones that are required to develop your own programming language! Yes, still the project is not easy to carry on with but I try to do my best. They “key to success” is to be stubborn. What I mean? If you notice that you can’t carry on with it, just sit there until you get it done (whatever that is) rather than to bail.

    If someone wants to believe that I’m selfish, that’s their opinion. But, what are they? Can’t they buy a newer computer that supports x86_64? What would they say if Microsoft discontinued the 32-bit version of Windows? Nothing… I guess FOSS gives people too much freedom.