{"id":13642984,"url":"https://github.com/open-power/skiboot","last_synced_at":"2025-04-03T09:17:47.774Z","repository":{"id":18257806,"uuid":"21414075","full_name":"open-power/skiboot","owner":"open-power","description":"OPAL boot and runtime firmware for POWER","archived":false,"fork":false,"pushed_at":"2025-04-02T15:54:49.000Z","size":51918,"stargazers_count":105,"open_issues_count":66,"forks_count":134,"subscribers_count":37,"default_branch":"master","last_synced_at":"2025-04-02T16:48:21.547Z","etag":null,"topics":["bmc","c","firmware","kernel","linux","opal","openpower","power8","power9","powerpc","ppc64le"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open-power.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-02T06:42:26.000Z","updated_at":"2025-03-07T16:18:29.000Z","dependencies_parsed_at":"2024-01-02T21:41:01.671Z","dependency_job_id":"daab0218-18a6-4ee2-a6a0-b4d4f3660370","html_url":"https://github.com/open-power/skiboot","commit_stats":null,"previous_names":[],"tags_count":189,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-power%2Fskiboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-power%2Fskiboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-power%2Fskiboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-power%2Fskiboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-power","download_url":"https://codeload.github.com/open-power/skiboot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246970325,"owners_count":20862509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bmc","c","firmware","kernel","linux","opal","openpower","power8","power9","powerpc","ppc64le"],"created_at":"2024-08-02T01:01:39.028Z","updated_at":"2025-04-03T09:17:47.764Z","avatar_url":"https://github.com/open-power.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# skiboot\n\nFirmware for OpenPower systems.\n\nSource: https://github.com/open-power/skiboot\n\nMailing list: skiboot@lists.ozlabs.org\n\nInfo/subscribe: https://lists.ozlabs.org/listinfo/skiboot\n\nArchives: https://lists.ozlabs.org/pipermail/skiboot/\n\nPatchwork: http://patchwork.ozlabs.org/project/skiboot/list/\n\nDocumentation: http://open-power.github.io/skiboot/doc/index.html\n\n## Overview\nOPAL firmware (OpenPower Abstraction Layer) comes in several parts.\n\nA simplified flow of what happens when the power button is pressed is:\n\n1. The baseboard management controller (BMC) powers the system on.\n2. The BMC selects the master chip and releases the self-boot engines (SBEs)\n   on the POWER8 chips, master last.\n3. The BMC relinquishes control of the flexible service interface (FSI)\n   SCAN/SCOM engines.\n4. The hostboot firmware IPLs the system. It initiates a secondary power-on\n   sequence through a digital power systems sweep (DPSS).\n5. The hostboot firmware loads the OPAL image and moves all processors to\n   their execution starting points.\n\nHere, the OPAL image is three parts:\n\n1. skiboot (includes OPAL runtime services)\n2. skiroot - the bootloader environment\n   * kernel\n   * initramfs (containing petitboot bootloader)\n\nThey may be all part of one payload or three separate images (depending on\nplatform).\n\nThe bootloader will kexec a host kernel (probably linux). The host OS can\nmake OPAL calls. The OPAL API is documented in doc/opal-api/ (there are\nmissing parts, patches are welcome!)\n\nSee doc/overview.rst for a more in depth overview of skiboot.\n\n## Building\n\nAny host OS can build and test skiboot provided it has a C cross compiler\nfor *big endian* powerpc64. All good Linux distributions (and several bad\nones) provide a packaged compiler that can be installed through the usual\npackage management tools.\n\nTo build on Ubuntu:\n```\napt-get install gcc-powerpc64le-linux-gnu gcc valgrind \\\n\texpect libssl-dev device-tree-compiler make \\\n\txz-utils libmbedtls-dev\nCROSS=powerpc64le-linux-gnu- make -j`nproc`\n```\n\nTo build on Fedora:\n```\ndnf install gcc-powerpc64le-linux-gnu binutils-powerpc64-linux-gnu gcc make \\\n    diffutils findutils expect valgrind-devel dtc openssl-devel xz \\\n    mbedtls-devel\nCROSS=powerpc64le-linux-gnu- make -j`nproc`\n```\n\n(The little-endian powerpc64le compilers in Ubuntu and Fedora are actually\nbi-endian and can compile skiboot even though it's big-endian. We recommend\ninstalling a little-endian toolchain if you plan on building other projects.)\n\nOn any POWER system with a bi-endian system compiler:\n```\nCROSS=\"\" make -j`nproc`\n```\n\nAlternatively, pre-built cross compilers for x86 systems can be downloaded\nfrom here: https://www.kernel.org/pub/tools/crosstool/ When using\nthese compilers add /opt/cross/gcc-4.8.0-nolibc/powerpc64-linux/bin/\nto your PATH. Once this is done skiboot can be compiler by just running `make`\n\n### Building Documentation\n\nWe use [Sphinx](http://www.sphinx-doc.org/) to produce various documentation\nfrom reStructuredText (preferred) and Markdown. The Sphinx documentation has\na useful primer for  reStructuredText\n[here](http://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html).\nAnd the docutils website has a nice [quick\nreference](http://docutils.sourceforge.net/docs/user/rst/quickref.html) for the\nbasic constructes.\n\nBuilding on Fedora\n```\ndnf install python3-sphinx python3-recommonmark.noarch\npip install -r doc/requirements.txt\nmake -C doc/ html SPHINXBUILD=sphinx-build-3\n```\n\nOn Ubuntu:\n```\nPatches welcome!\n```\n\nView the output using `doc/_build/html/index.html`\n\n## Testing\nSkiboot comes with a set of unit tests that can be run on your desktop.\nThey can can be run with:\n```\nmake check\n```\n\nTo test in a simulator, install the IBM POWER8 Functional Simulator from:\nhttp://www-304.ibm.com/support/customercare/sas/f/pwrfs/home.html\nAlso see external/mambo/README.md\n\nQemu as of version 2.8 implements the 'powernv' machine model and is sufficient\nto run skiboot:\n\n qemu-system-ppc64 -M powernv -m 3G -nographic -L /path/to/skiboot/\n\nTo run a boot-to-bootloader test you need a Linux kernel image 'zImage.epapr'.\nBuild one using the `opal_defconfig` config for op-build. See\nhttps://github.com/open-power/op-build/ on how to build, or download one from\nhttps://github.com/open-power/op-build/releases/ .\n\nDrop zImage.epapr in the skiboot directory and the skiboot test suite will\nautomatically pick it up. You can also run a combined skiboot and Linux test in\nQemu (version 3.0+):\n\n qemu-system-ppc64 -M powernv -m 3G -nographic -kernel zImage.epapr -L /path/to/skiboot/\n\nSee opal-ci/README for further testing instructions.\n\nTo test on real hardware, you will need to understand how to flash new\nskiboot onto your system. This will vary from platform to platform.\n\nYou may want to start with external/boot-tests/boot_test.sh as it can\n(provided the correct usernames/passwords) automatically flash a new\nskiboot onto ASTBMC based OpenPower machines.\n\n## Hacking\n\nAll patches should be sent to the mailing list with linux-kernel style\n'Signed-Off-By'. The following git commands are your friends:\n```\ngit commit -s\ngit format-patch\n```\n\nYou probably want to read the linux\nhttps://kernel.org/doc/html/latest/process/submitting-patches.html as\nmuch of it applies to skiboot.\n\n\n## Output files\n\nThe Skiboot build process produces a bunch of different outputs. This is what\nthey are, and where you should use them:\n\n skiboot.elf: The output of the linker. Don't flash to a system, but useful when debugging\n\n skiboot.lid: The raw binary object, named .lid because IBM. Flash this on\n\t      really old P8 systems, the POWER Functional Simulator (mambo), or\n\t      FSP systems\n\n skiboot.lid.stb: Lid wrapped with secure boot header. Use on FSP systems\n\n skiboot.lid.xz: Compressed raw binary. Use this on a OpenPower P8\n\n skiboot.lid.xz.stb: Compressed raw binary wrapped with a secure boot header.\n                     Use this on OpenPower P9 systems\n\n## License\n\nSee LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-power%2Fskiboot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-power%2Fskiboot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-power%2Fskiboot/lists"}