{"id":19526685,"url":"https://github.com/wimpysworld/ubuntu-pi-image","last_synced_at":"2025-04-26T10:31:29.910Z","repository":{"id":102994689,"uuid":"278920045","full_name":"wimpysworld/ubuntu-pi-image","owner":"wimpysworld","description":"Raspberry Pi 🥧 image creator for Ubuntu MATE 🧉","archived":false,"fork":false,"pushed_at":"2022-07-03T13:25:38.000Z","size":236,"stargazers_count":9,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T11:47:00.870Z","etag":null,"topics":["hacktoberfest","linux","raspberry-pi","rpi","ubuntu","ubuntu-mate"],"latest_commit_sha":null,"homepage":"https://ubuntu-mate.org/raspberry-pi/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wimpysworld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-07-11T18:30:45.000Z","updated_at":"2025-03-23T12:26:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"452345d1-429e-4891-b72b-0e08f898a8de","html_url":"https://github.com/wimpysworld/ubuntu-pi-image","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimpysworld%2Fubuntu-pi-image","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimpysworld%2Fubuntu-pi-image/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimpysworld%2Fubuntu-pi-image/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimpysworld%2Fubuntu-pi-image/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wimpysworld","download_url":"https://codeload.github.com/wimpysworld/ubuntu-pi-image/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250972862,"owners_count":21516433,"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":["hacktoberfest","linux","raspberry-pi","rpi","ubuntu","ubuntu-mate"],"created_at":"2024-11-11T01:11:42.073Z","updated_at":"2025-04-26T10:31:29.902Z","avatar_url":"https://github.com/wimpysworld.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ubuntu-pi-image\n\n**If you just want to download Ubuntu MATE images for the Raspberry Pi the go to the Ubuntu MATE website:**\n\n  * **https://ubuntu-mate.org/raspberry-pi/**\n\nThese \"docs\" are not comprehensive, but should be enough to get you started with\nbuilding your own Ubuntu based images for the Raspberry Pi.\n\n\n## Building Images\n\n  * Clone the Retro Home project\n    * `git clone https://github.com/wimpysworld/ubuntu-pi-image.git`\n\nIt is best to run the `ubuntu-pi-image` on an Ubuntu 22.04 x86 64-bit\nworkstation, ideally running in a VM via [Quickemu](https://github.com/quickemu-project/quickemu).\nIf using a fresh [Quickemu](https://github.com/quickemu-project/quickemu) VM\nyou'll need to set the `disk_size` parameter large enough to complete the build.\nThis can be achieved by adding `disk_size=\"64G\"` to `ubuntu-mate-jammy.conf`\nbefore running `quickemu` to create the VM. Alternatively you could mount\nexternal storage into the container for the build area. You'll also need at\nleast to `sudo apt install git`.\n\n## apt-cacher-ng\n\nIf you `apt-get install apt-cache-ng` the `ubuntu-pi-image` script will\nautomatically use the apt-cache-ng proxy to accelerate build performance.\n\n## Build configuration\n\nYou can tweak some variables towards the bottom of the `ubuntu-pi-image` script.\n\n```bash\nFLAVOUR=\"ubuntu-mate\"\nIMG_QUALITY=\"-beta1\"\nIMG_VER=\"22.04\"\nIMG_RELEASE=\"jammy\"\nIMG_ARCH=\"arm64\"\n```\n\n### Usage\n\nThe following incantation will build a Ubuntu MATE 22.04 arm64 image for\nRaspberry Pi.\n\n```bash\nsudo ./ubuntu-pi-image\n```\n\nThe script will create `~/Build` in your home directory that will include the\ncaches for each stages and the image for putting on your Raspberry Pi SD card,\nUSB stick or SSD.\n\n## Other Desktop\n\nModify the `stage_02_desktop` and `stage_03_snap` accordingly to adapt the script\nfor other Ubuntu flavours/desktops.\n\n## Bootloaders\n\nThis is the bootloader configuration from Ubuntu 22.04.\n\n### cloud-init\n\nRemove these files:\n\n  * `meta-data`\n  * `network-config`\n  * `user-data`\n### README\n\n```\nAn overview of the files on the /boot/firmware partition (the 1st partition\non the SD card) used by the Ubuntu boot process (roughly in order) is as\nfollows:\n\n* bootcode.bin   - this is the second stage bootloader loaded by all pis with\n                   the exception of the pi4 (where this is replaced by flash\n                   memory)\n* config.txt     - the configuration file read by the boot process\n* start*.elf     - the third stage bootloader, which handles device-tree\n                   modification and which loads...\n* vmlinuz        - the Linux kernel\n* cmdline.txt    - the Linux kernel command line\n* initrd.img     - the initramfs\n* meta-data      - meta-data for cloud-init; usually just contains the\n                   instance id\n* network-config - network configuration for cloud-init; edit this to set up\n                   wifi access points and other networking settings\n* user-data      - user-data for cloud-init; edit this to configure initial\n                   users, SSH keys, packages, etc.\n```\n### 32bit server\n\nFrom the armhf server image.\n#### cmdline.txt\n```\nconsole=serial0,115200 dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 rootwait fixrtc quiet splash\n```\n\n#### config.txt\n```\n[all]\nkernel=vmlinuz\ncmdline=cmdline.txt\ninitramfs initrd.img followkernel\n\n[pi4]\nmax_framebuffers=2\narm_boost=1\n\n[all]\n# Enable the audio output, I2C and SPI interfaces on the GPIO header. As these\n# parameters related to the base device-tree they must appear *before* any\n# other dtoverlay= specification\ndtparam=audio=on\ndtparam=i2c_arm=on\ndtparam=spi=on\n\n# Comment out the following line if the edges of the desktop appear outside\n# the edges of your display\ndisable_overscan=1\n\n# If you have issues with audio, you may try uncommenting the following line\n# which forces the HDMI output into HDMI mode instead of DVI (which doesn't\n# support audio output)\n#hdmi_drive=2\n\n# Enable the serial pins\nenable_uart=1\n\n# Autoload overlays for any recognized cameras or displays that are attached\n# to the CSI/DSI ports. Please note this is for libcamera support, *not* for\n# the legacy camera stack\ncamera_auto_detect=1\ndisplay_auto_detect=1\n\n\n[cm4]\n# Enable the USB2 outputs on the IO board (assuming your CM4 is plugged into\n# such a board)\ndtoverlay=dwc2,dr_mode=host\n\n[all]\n```\n\n### 64bit server\n\nFrom the arm64 server image.\n#### cmdline.txt\n```\nconsole=serial0,115200 dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 rootwait fixrtc quiet splash\n```\n\n#### config.txt\n```\n[all]\nkernel=vmlinuz\ncmdline=cmdline.txt\ninitramfs initrd.img followkernel\n\n[pi4]\nmax_framebuffers=2\narm_boost=1\n\n[all]\n# Enable the audio output, I2C and SPI interfaces on the GPIO header. As these\n# parameters related to the base device-tree they must appear *before* any\n# other dtoverlay= specification\ndtparam=audio=on\ndtparam=i2c_arm=on\ndtparam=spi=on\n\n# Comment out the following line if the edges of the desktop appear outside\n# the edges of your display\ndisable_overscan=1\n\n# If you have issues with audio, you may try uncommenting the following line\n# which forces the HDMI output into HDMI mode instead of DVI (which doesn't\n# support audio output)\n#hdmi_drive=2\n\n# Enable the serial pins\nenable_uart=1\n\n# Autoload overlays for any recognized cameras or displays that are attached\n# to the CSI/DSI ports. Please note this is for libcamera support, *not* for\n# the legacy camera stack\ncamera_auto_detect=1\ndisplay_auto_detect=1\n\n# Config settings specific to arm64\narm_64bit=1\ndtoverlay=dwc2\n\n[cm4]\n# Enable the USB2 outputs on the IO board (assuming your CM4 is plugged into\n# such a board)\ndtoverlay=dwc2,dr_mode=host\n\n[all]\n```\n\n### Desktop\n\nFrom Ubuntu proper desktop image.\n\n#### cmdline.txt\n```\nzswap.enabled=1 zswap.zpool=z3fold zswap.compressor=zstd dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 rootwait fixrtc quiet splash\n```\n### config.txt\n```\n[all]\nkernel=vmlinuz\ncmdline=cmdline.txt\ninitramfs initrd.img followkernel\n\n[pi4]\nmax_framebuffers=2\narm_boost=1\n\n[all]\n# Enable the audio output, I2C and SPI interfaces on the GPIO header. As these\n# parameters related to the base device-tree they must appear *before* any\n# other dtoverlay= specification\ndtparam=audio=on\ndtparam=i2c_arm=on\ndtparam=spi=on\n\n# Comment out the following line if the edges of the desktop appear outside\n# the edges of your display\ndisable_overscan=1\n\n# If you have issues with audio, you may try uncommenting the following line\n# which forces the HDMI output into HDMI mode instead of DVI (which doesn't\n# support audio output)\n#hdmi_drive=2\n\n[cm4]\n# Enable the USB2 outputs on the IO board (assuming your CM4 is plugged into\n# such a board)\ndtoverlay=dwc2,dr_mode=host\n\n[all]\n\n# Enable the KMS (\"full\" KMS) graphics overlay, leaving GPU memory as the\n# default (the kernel is in control of graphics memory with full KMS)\ndtoverlay=vc4-kms-v3d\n\n# Autoload overlays for any recognized cameras or displays that are attached\n# to the CSI/DSI ports. Please note this is for libcamera support, *not* for\n# the legacy camera stack\ncamera_auto_detect=1\ndisplay_auto_detect=1\n\n# Config settings specific to arm64\narm_64bit=1\ndtoverlay=dwc2\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwimpysworld%2Fubuntu-pi-image","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwimpysworld%2Fubuntu-pi-image","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwimpysworld%2Fubuntu-pi-image/lists"}