When we talk about Cookbooks in computer science or software engineering, what comes into our minds first? It's likely that the O'Reilly should have a strong presence, yes, I do mean the old school thick paperback books that are usually too heavy to carry in your backpack and always with a fantastic beast on the cover. Those Cookbooks have brought valuable hands-on experience to practitioners and thus have inspired generations of people. We want to create one of these and we hope this could bring some inspiration as well as be helpful for the very least.
This is the Cookbook about openFyde and Chromium OS.
The recipes in this Cookbook are there to give you inspiration in terms of what you can achieve with the openFyde projects. The objectives of the recipes may or may not be able to help you directly with your project needs, but we hope that they can provide some pointers in terms of where to get started.
The openFyde Authors and the people behind FydeOS will continue to contribute to the contents in this Cookbook, a firm thank you to each and everyone who has helped to make this possible.
The recipes in this book were written with the assumption that the readers have some basic understanding and operational experiences of Linux or other UNIX-like operating systems. Prior software development experience could be very helpful but not essential. For example, the readers should know how to navigate through the command-line interface, issue commands, edit files, apply patches and invoke software build procedures. Most importantly, we assume readers should be able to use search engines properly and effectively.
We also assume that you have already fully read and performed all the procedures described in the openFyde Getting started. By completing this, you should have a decent understanding of how to produce a working openFyde image from source code that you can actually modify.
Similar to any other Cookbook you may find in your favourite corner of the bookstore, it has recipes. A recipe is an article with a set of templates that aims to provide you with a guide so that when you do as it states, you would then be able to reproduce/recreate the same result, repeatedly without fail.
The recipes in this Cookbook follow the following structure:
In a more conventional cookbook, this may be a photo of a delicious cooked dish with a decent presentation. In our scenario, we will just have to stick with a clear and concise description of what are we going to achieve and the rationale behind the Objectives, if it is not very immediately obvious.
Instead of the ingredients and supermarket shopping list, this section gives you information about software/hardware requirements, tools you need to prepare and some other prep work that you may need to complete prior to actually performing the tasks.
In this section, you will find step-by-step guides on how to achieve the objective, with as much information as we could possibly imagine. In theory, if you follow the instructions, you should be able to achieve the same objective.
We will try to include some discussions about the theories and principles to render the inner workings behind the scene, for you to achieve a better understanding of what is happening.
Some final words to wrap things up goes to the end of the recipe.
Here are some useful information that you should know to better understand and utilise this Cookbook.
Command-line shell commands are shown with different labels to indicate whether they apply to:
Label | Description |
---|---|
no label | on your local development computer where it may or may not have the cros_sdk chroot |
(outside) | on your build computer, outside the chroot |
(inside) | inside the chroot on your build computer |
(device) | on the openFyde device's shell |
Here is a list of things that you should ideally have to perform the recipes in this Cookbook:
A x86_64 system to perform the build of openFyde. 64-bit hardware and OS are musts. The openFyde (and Chromium OS) is a very large project, building from the source from scratch usually takes hours to over 10 hours, depending on the system configuration.
A x86_64 Linux OS as your main workstation, it will be referred to as the host OS later in this doc. The openFyde build process utilises chroot to isolate the build environment from the host OS. So theoretically any modern Linux system should work. However, only limited Linux distros are tested by the Chromium OS team and the FydeOS team. Linux versions that are known to work:
A non-root user account with sudo access. The build process should be run by this user, not the root user. The user needs to have sudo access. For simplicity and convenience password-less sudo could be set for this user.
openFyde is the open-source inititive started and maintained primarily by Fyde Innovations, the people behind FydeOS. openFyde is the open-source version of FydeOS. In a nutshell, openFyde is a downstream fork of the Chromium OS but it does not enforce you to use Google's cloud infrastructure and services API to support the OS, we also try to use open-source components wherever possible to swap the binary or propeitary modules within Chromium OS / Chrome OS. openFyde is Chromium OS with more flexibility and choices.
Due to the sheer complexity of any Linux based operating system, openFyde is organised as many individual repositories with every single one serving a distinctive purpose. You will also need the entirety of Chromium OS source code to continue working on openFyde, as openFyde and Chromium OS basically share the same codebase. There are also quite a large number of dependencies all over the place. In consequence of the above, openFyde in GitHub is managed as an "organisation" with necessary repositories inside. This current repository does not contain any actual source code and only serves for introductory and guidance purposes.
As a downstream fork of Chromium OS, openFyde does not intend to be the rivalry of Chromium OS. We are open to contributing works back to the upstream and making Chromium OS a better operating system.
Sign in to post a comment
Repository Comments ( 0 )