{"id":21396627,"url":"https://github.com/stuffo/scaleway-archkernel","last_synced_at":"2026-05-16T15:37:01.254Z","repository":{"id":74620769,"uuid":"75959299","full_name":"stuffo/scaleway-archkernel","owner":"stuffo","description":"Arch Package for running standard Arch Kernels on Scaleway C1 instances","archived":false,"fork":false,"pushed_at":"2018-05-06T14:42:00.000Z","size":22,"stargazers_count":2,"open_issues_count":3,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-16T14:49:24.012Z","etag":null,"topics":["arch-linux","armv7","kexec","scaleway"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stuffo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2016-12-08T17:20:33.000Z","updated_at":"2018-05-06T14:42:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"77a582ab-84d2-460c-a07a-de0684d46d1c","html_url":"https://github.com/stuffo/scaleway-archkernel","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/stuffo/scaleway-archkernel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuffo%2Fscaleway-archkernel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuffo%2Fscaleway-archkernel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuffo%2Fscaleway-archkernel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuffo%2Fscaleway-archkernel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stuffo","download_url":"https://codeload.github.com/stuffo/scaleway-archkernel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuffo%2Fscaleway-archkernel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33108232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["arch-linux","armv7","kexec","scaleway"],"created_at":"2024-11-22T14:28:04.837Z","updated_at":"2026-05-16T15:37:01.220Z","avatar_url":"https://github.com/stuffo.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"Run standard Arch Kernels on Scaleway C1 instances\n==================================================\n\n## Preface\nScaleway C1 instances have the root filesystem on NBD. Scaleway came up with\na custom kernel that has network and nbd drivers builtin and uses a custom \ninitrd to mount the root filesystem before handing over control to the normal\ninit system. So basically you are stuck with the Scaleway supplied kernels if\nyou don't want to bake a Scaleway-like initrd. As Arch supplies up-to-date\nkernels for ARMv7 you can employ this systemd service to automatically patch \nthe original Scaleway initrd on bootup and boot into default Arch kernel.\n\nAll this happens by the magic of kexec which Scaleway supports in recent \ninitrds (aka bootscripts).\n\nThis project was greatly inspired by:  \nhttps://github.com/gh2o/digitalocean-debian-to-arch/blob/debian7/install.sh\n\n## Requirements\n* A Scaleway C1 instance with Arch Linux\n* Kernel (bootscript) with KEXEC support\n\n## Installation\n1. make sure your Arch system is up-to-date (`pacman -Syu`)\n2. Install an ARMv7 Arch kernel (eg. `pacman -S linux-armv7`)\n3. Install this package  \n   `pacman -U https://github.com/stuffo/scaleway-archkernel/releases/download/v2.1/scaleway-archkernel-git-r17.0c6d00a-1-armv7h.pkg.tar.xz`\n4. `systemctl enable archkernel-load` to enable the systemd service\n5. `reboot` \n\nThe system will boot and kexec into the Arch Kernel while booting the Arch \nimage. You can see some debug output after bootup using:\n`journalctl -u archkernel-load.service`\n\nFrist boot will be taking about 20 seconds longer while regenerating the\ninitrd. Subsequent boots with the same Arch kernel will instantly kexec.\n\n## Troubleshooting\nIf your initrd or kernel is bad you can get stuck with a non booting system.\nAdd a server tag in the Scaleway webui with the name `archkernel_disabled`\nand kexec won't be executed on bootup anymore.  \n\nOther usefull Scaleway related tags are `INITRD_POST_SHELL=1` which will drop \nyou in a shell after the whole initrd shebang is done so you can tinker with \nyour filesystem. Also consider `INITRD_VERBOSE=1` to make initrd more verbose.\n`INITRD_DEBUG=1` is maximum verbose and will trace all commands that get \nexecuted in initrd.\n\nYou can always run archkernel-load.sh manually to start the kexec process.\n\n## Building\n1. clone this (`git clone https://github.com/stuffo/scaleway-archkernel.git`)\n2. run `makepkg` in the repository to create the Arch package\n3. `pacman -U scaleway-archkernel-git*` to install the package\n\n## How it works\n1. While booting check if Arch kernel is loaded and matches the initrd.\n2. fetch U-Boot bootscript from Scaleway TFTP server\n3. fetch Scaleway uInitrd mentioned in bootscript\n4. extract uInitrd and add Arch kernel modules (mvneta_bm, mvneta, nbd) \n5. repackage uInitrd into /boot\n6. kexec load Arch kernel and new uInitrd with original Scaleway /proc/cmdline \n7. run systemctl kexec\n8. shutdown initrd will unmount nbd and call kexec -e (execute)\n9. new Arch kernel boots and loads required modules before handing over to \n   Scaleway init script that does the usual Scaleway magic.\n10. Voila! The system is ready now.\n\n## Testing\n| Package          | Version   | working         |\n| :--------------- | :-------- | :-------------- |\n| `linux-armv7`    | 4.8.12-1  | X               |\n| `linux-armv7-rc` | 4.9.rc8-1 | X               |\n| `linux-armv7`    | 4.9.0-1   | X               |\n| `linux-armv7`    | 4.9.5-1   | X               |\n| `linux-armv7`    | 4.9.9-1   | X               |\n| `linux-arvm7`    | 4.10.1-1  | X               |\n| `linux-arvm7`    | 4.10.10-1 | X               |\n| `linux-arvm7`    | 4.14.15-1 | X               |\n\n\n## Bugs\nThe mv_xor module throws some stack traces while booting and fails to load but the \nkernel will run fine without it.\n\nOn some kernels shutdown/reboot fails because of wired timing issues with nbd and \nnetwork shutdown related to systemd. Never really got to find out what the problem\nis as it is painfull to debug with the 9600 console scaleway has on C1 instances. \nIf your instance get stuck on reboot/shutdown, just issue a hard reset via web or \ncommand line client.\n\nKexec itself seems to fail sporadically on this ARM platform. You will see the \nlast words \"kexec_core: loading new kernel\" and than nothing will ever happen. \nI suspect unclean device shutdown issues (maybe KEXEC_HARDBOOT would fix it?).\nJust hard reset your instance and try again. \n\nI am open to suggestions and pull request on how to fix this issues as Scaleway\ndoesn't seem to be very interested in fixing any C1 instance related issues. I\nguess its on the way to retirement. :(\n\n## My Advise on C1 instances\nForget about C1 instances. They have painfully slow console, the CPU is slow, the \nscaleway initrd system sucks and you need tools like this to get your own kernels\ngoing. A healthy reboot results in a kernel panic with most newer kernels. \nAll my (growing) pains with the C1 came to an end when the START1 instances came out.\nThis instances work like any other virtual machine and boot the local kernel without\nscaleway initrd hokus pokus. Ok, its not bare metal and is not ARM anymore, but its\nfaster and costs nearly the same and I don't have to kexec my way out of hell.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuffo%2Fscaleway-archkernel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstuffo%2Fscaleway-archkernel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuffo%2Fscaleway-archkernel/lists"}