{"id":118,"date":"2015-10-05T05:32:58","date_gmt":"2015-10-05T05:32:58","guid":{"rendered":"http:\/\/demo.athemes.com\/west\/?p=118"},"modified":"2016-12-19T23:07:11","modified_gmt":"2016-12-19T23:07:11","slug":"how-we-started","status":"publish","type":"post","link":"https:\/\/www.piboxproject.com\/index.php\/2015\/10\/05\/how-we-started\/","title":{"rendered":"How PiBox started"},"content":{"rendered":"<div id=\"dslc-theme-content\"><div id=\"dslc-theme-content-inner\"><p>A long while back there was a need at my company for a custom Linux distribution to run on an a high-end embedded platform.\u00a0 At the time there were few tools to consolidate the various components required for building a custom distribution.\u00a0 There was the <a href=\"http:\/\/www.linuxfromscratch.org\/\">Linux From Scratch<\/a> project, which described the process of building a custom distribution.\u00a0 And then there were <a href=\"http:\/\/kegel.com\/crosstool\/\">Dan Kegel&#8217;s crosstool scripts<\/a>.\u00a0 But there wasn&#8217;t anything the explained exactly what you needed to pull together to bring up a piece of hardware with a custom Linux distribution.\u00a0 I wanted to know all the pieces required to build a complete system for the variety of new hardware I was starting to work on.<\/p>\n<p>After much exploration I finally found the ingredients needed for any project.\u00a0 It reduces to the following.<\/p>\n<ul>\n<li>A cross toolchain to compile software on a host to run on target hardware.<\/li>\n<li>One or more bootloaders that configure hardware so it can run an operating system.<\/li>\n<li>A Linux Kernel.<\/li>\n<li>A root file system containing boot processing, libraries and applications core to the platform.<\/li>\n<li>Custom applications that turn all of this into a purpose-driven system.<\/li>\n<\/ul>\n<p>Much work has gone into building a new generation of tools to make this process easier to manage.\u00a0 Dan&#8217;s scripts have evolved into Yan Morin&#8217;s excellent <a href=\"http:\/\/crosstool-ng.org\/\">Crosstool-NG<\/a> package that provides a menu based configuration to build a cross toolchain.\u00a0 The <a href=\"https:\/\/busybox.net\/\">Busybox<\/a> and <a href=\"https:\/\/buildroot.org\/\">Buildroot<\/a> teams have forged a collection of utilities needed in a core platform to provide facilities for custom application development.\u00a0 And of course the Linux Kernel has grown to support a wide variety of hardware platforms.<\/p>\n<p>While these tools evolved there were metabuild systems evolving around them.\u00a0 The most popular has been <a href=\"http:\/\/www.openembedded.org\/wiki\/Main_Page\">openembedded<\/a> which started as a project for hand held devices.\u00a0 A metabuild is a &#8220;build of builds&#8221;, a wrapper around lots of other software with the intent of creating a complete system.\u00a0 The openembedded platform, along with <a href=\"https:\/\/www.yoctoproject.org\/\">yocto<\/a>\u00a0 and a few others, was based on a cross OS design that utilizes python (via a tool called bitbake) to manage system builds.\u00a0 But those system just didn&#8217;t fit my needs.\u00a0 So I created my own:\u00a0 PiBox.\u00a0 PiBox wraps the core tools (toolchain, bootloader, kernel and root file system) making it easier to use upstream utilities to build a custom platform.\u00a0 It&#8217;s based on GNU Make so ramp up is easy (no custom python programming to learn).\u00a0 And it&#8217;s easily extendable to any hardware platform (I&#8217;ve run it on at least 5 different systems).<\/p>\n<p>More important was the evolution of the philosophy of PiBox:\u00a0 the structure of the metabuild should be consistent so it easily translates to any project.\u00a0 And that philosophy carried over to the PiBox Media Center custom application development.<\/p>\n<p>So PiBox is a tool for creating embedded distributions for the IoT world.\u00a0 And it&#8217;s a philosophy for how to build software for integration into those distributions.<\/p>\n<p>But PiBox isn&#8217;t for everyone.\u00a0 PiBox is not multi-OS:\u00a0 it&#8217;s designed for Linux and Unix systems.\u00a0 It isn&#8217;t for people wanting point-and-click systems.\u00a0 It isn&#8217;t web based.\u00a0 It&#8217;s a build system and more.\u00a0 And it does require one important human aspect:\u00a0 motivation.\u00a0 Because in the end, PiBox is a learning tool.\u00a0 To understand PiBox is to understand embedded development.<\/p>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>A long time ago, at a job far, far away&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":196,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[2],"tags":[],"class_list":{"0":"post-118","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tech","8":"czr-hentry"},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.piboxproject.com\/wp-content\/uploads\/2016\/10\/cropped-SiteIcon-512x512.png?fit=512%2C512&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8du2Y-1U","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/posts\/118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/comments?post=118"}],"version-history":[{"count":3,"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/posts\/118\/revisions"}],"predecessor-version":[{"id":248,"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/posts\/118\/revisions\/248"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/media\/196"}],"wp:attachment":[{"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/media?parent=118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/categories?post=118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.piboxproject.com\/index.php\/wp-json\/wp\/v2\/tags?post=118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}