<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/running-chromium-with-ozone-gbm-on-a-gnu-linux-desktop-cb6eowake" -->

---
title: Running Chromium with Ozone-GBM on a GNU/Linux desktop
description: A step-by-step guide to running Chromium with the Ozone-GBM (DRM/GBM) backend on a standard GNU/Linux desktop. Covers building Chromium with Ozone and ChromeOS...
canonical: https://daily.dev/posts/running-chromium-with-ozone-gbm-on-a-gnu-linux-desktop-cb6eowake
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Running Chromium with Ozone-GBM on a GNU/Linux desktop | daily.dev
og:description: A step-by-step guide to running Chromium with the Ozone-GBM (DRM/GBM) backend on a standard GNU/Linux desktop. Covers building Chromium with Ozone and ChromeOS...
og:url: https://daily.dev/posts/running-chromium-with-ozone-gbm-on-a-gnu-linux-desktop-cb6eowake
og:image: https://api.daily.dev/og/posts/CB6EoWake.png
og:image:alt: Running Chromium with Ozone-GBM on a GNU/Linux desktop
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Running Chromium with Ozone-GBM on a GNU/Linux desktop

**[Collabora Blog](https://daily.dev/sources/collabora)** · 5 min read · 0 upvotes · 0 comments

## Summary

A step-by-step guide to running Chromium with the Ozone-GBM (DRM/GBM) backend on a standard GNU/Linux desktop. Covers building Chromium with Ozone and ChromeOS target flags, building the minigbm library independently with the correct GPU driver flags (Intel i915, Radeon, or AMDGPU), handling the special amdgpu dependency on the amdgpuaddr library from Mesa, and resolving the EGL initialization failure by setting EGL_PLATFORM=surfaceless. Provides the final command to launch Chromium with all required environment variables and flags.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.collabora.com/news-and-blog/blog/2017/11/27/running-chromium-with-ozone-gbm-on-gnu-linux>

## Questions this post answers

### Why does Chromium with Ozone-GBM fail with 'EGL initialization failed' on Linux desktop?

The failure occurs because Ozone-GBM creates an EGLDisplay using EGL_DEFAULT_DISPLAY as the native display argument, expecting the EGL implementation to treat it as a surfaceless platform request. Mesa does not recognize this hint automatically. The fix is to explicitly set the environment variable EGL_PLATFORM=surfaceless before launching Chromium.

_Developers debugging Ozone-GBM EGL issues on Linux track solutions like this on daily.dev._

### How do I build minigbm with amdgpu support for Chromium Ozone-GBM on Linux?

The amdgpu minigbm driver requires the amdgpuaddr library, which is part of Mesa but not distributed in any package. You must build Mesa from source using the distro's build method (e.g., apt build-dep mesa && apt source mesa), then copy libamdgpu_addrlib.a and the addrlib headers into the minigbm directory before building with CPPFLAGS="-DDRV_AMDGPU" DRV_AMDGPU=1 LDFLAGS="-L.".

_Linux graphics developers working with minigbm driver builds share findings like this on daily.dev._

### What GN build args do I need to build Chromium with Ozone-GBM support?

To build Chromium with Ozone-GBM, set use_ozone=true and target_os="chromeos" in your GN args. The build commands are: gn gen out/OzoneChromeOS, then gn args --args='use_ozone=true target_os="chromeos"' out/OzoneChromeOS, followed by ninja -C out/OzoneChromeOS chrome. Ozone-GBM uses minigbm rather than Mesa's GBM implementation, so minigbm must be provided separately at runtime via LD_LIBRARY_PATH.

_Chromium contributors building Ozone variants keep up with platform changes on daily.dev._

## Similar posts on daily.dev

- [Replacing My Linux Desktop With Google Chrome](https://daily.dev/posts/replacing-my-linux-desktop-with-google-chrome-qivq1xvrb) · Hacker News · 0 upvotes · 0 comments
- [Google Chrome is now available for Arm Linux. We tested it on a Raspberry Pi 5](https://daily.dev/posts/google-chrome-is-now-available-for-arm-linux-we-tested-it-on-a-raspberry-pi-5-zzgudyop1) · CNX Software · 0 upvotes · 0 comments
- [This free, open-source browser made me ditch Perplexity Comet, Dia, and Opera Neon](https://daily.dev/posts/this-free-open-source-browser-made-me-ditch-perplexity-comet-dia-and-opera-neon-jvcjhfchr) · XDA Developers · 1 upvotes · 0 comments
- [Google's ANGLE Merges Wayland Support, Unblocking Chromium Embedded Framework On Wayland](https://daily.dev/posts/google-s-angle-merges-wayland-support-unblocking-chromium-embedded-framework-on-wayland-rm0micmux) · Phoronix · 0 upvotes · 0 comments
- [Download Google Chrome for Arm64 Linux now](https://daily.dev/posts/download-google-chrome-for-arm64-linux-now-e3xjoiiwp) · omg\! ubuntu\! · 1 upvotes · 0 comments

---

Tags: [#linux](https://daily.dev/tags/linux), [#chromium](https://daily.dev/tags/chromium)

[View this post on daily.dev](https://daily.dev/posts/running-chromium-with-ozone-gbm-on-a-gnu-linux-desktop-cb6eowake)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Running Chromium with Ozone-GBM on a GNU/Linux desktop","url":"https://daily.dev/posts/running-chromium-with-ozone-gbm-on-a-gnu-linux-desktop-cb6eowake","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/running-chromium-with-ozone-gbm-on-a-gnu-linux-desktop-cb6eowake"},"datePublished":"2026-08-11T08:53:52.719Z","dateModified":"2026-08-11T09:15:34.229Z","description":"A step-by-step guide to running Chromium with the Ozone-GBM (DRM/GBM) backend on a standard GNU/Linux desktop. Covers building Chromium with Ozone and ChromeOS...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d09392704fda7e44edc142fc4c5a1ebc?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d09392704fda7e44edc142fc4c5a1ebc?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collabora Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collabora Blog","logo":"https://media.daily.dev/image/upload/s--ZGZ0FjqS--/f_auto,q_auto/v1786438306/logos/collabora?_a=BAMAMicg0","url":"https://daily.dev/sources/collabora"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/running-chromium-with-ozone-gbm-on-a-gnu-linux-desktop-cb6eowake","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"linux,chromium","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collabora Blog","item":"https://daily.dev/sources/collabora"},{"@type":"ListItem","position":3,"name":"Running Chromium with Ozone-GBM on a GNU/Linux desktop"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/running-chromium-with-ozone-gbm-on-a-gnu-linux-desktop-cb6eowake#faq","mainEntity":[{"@type":"Question","name":"Why does Chromium with Ozone-GBM fail with 'EGL initialization failed' on Linux desktop?","acceptedAnswer":{"@type":"Answer","text":"The failure occurs because Ozone-GBM creates an EGLDisplay using EGL_DEFAULT_DISPLAY as the native display argument, expecting the EGL implementation to treat it as a surfaceless platform request. Mesa does not recognize this hint automatically. The fix is to explicitly set the environment variable EGL_PLATFORM=surfaceless before launching Chromium. Developers debugging Ozone-GBM EGL issues on Linux track solutions like this on daily.dev."}},{"@type":"Question","name":"How do I build minigbm with amdgpu support for Chromium Ozone-GBM on Linux?","acceptedAnswer":{"@type":"Answer","text":"The amdgpu minigbm driver requires the amdgpuaddr library, which is part of Mesa but not distributed in any package. You must build Mesa from source using the distro's build method (e.g., apt build-dep mesa && apt source mesa), then copy libamdgpu_addrlib.a and the addrlib headers into the minigbm directory before building with CPPFLAGS=\"-DDRV_AMDGPU\" DRV_AMDGPU=1 LDFLAGS=\"-L.\". Linux graphics developers working with minigbm driver builds share findings like this on daily.dev."}},{"@type":"Question","name":"What GN build args do I need to build Chromium with Ozone-GBM support?","acceptedAnswer":{"@type":"Answer","text":"To build Chromium with Ozone-GBM, set use_ozone=true and target_os=\"chromeos\" in your GN args. The build commands are: gn gen out/OzoneChromeOS, then gn args --args='use_ozone=true target_os=\"chromeos\"' out/OzoneChromeOS, followed by ninja -C out/OzoneChromeOS chrome. Ozone-GBM uses minigbm rather than Mesa's GBM implementation, so minigbm must be provided separately at runtime via LD_LIBRARY_PATH. Chromium contributors building Ozone variants keep up with platform changes on daily.dev."}}]}
```

