diff --git a/.github/workflows/bors.yml b/.github/workflows/bors.yml
index abcc01765e9e7cc6777545129b0a0e28df4827a1..8ce067a8c0fe36fab6fd6302fff35b3ca1d20bd8 100644
--- a/.github/workflows/bors.yml
+++ b/.github/workflows/bors.yml
@@ -9,7 +9,7 @@ on:
 jobs:
   docker_linux_tier1:
     name: Docker Linux Tier1
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     strategy:
       fail-fast: true
       matrix:
@@ -81,7 +81,7 @@ jobs:
 
   style_check:
     name: Style check
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     strategy:
       fail-fast: true
     steps:
@@ -97,7 +97,7 @@ jobs:
   docker_linux_tier2:
     name: Docker Linux Tier2
     needs: [docker_linux_tier1, style_check]
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     strategy:
       fail-fast: true
       max-parallel: 12
@@ -149,7 +149,7 @@ jobs:
   docker_switch:
     name: Docker Switch
     needs: [docker_linux_tier1, style_check]
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     strategy:
       fail-fast: true
     steps:
@@ -165,7 +165,7 @@ jobs:
   build_channels_linux:
     name: Build Channels Linux
     needs: docker_linux_tier2
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     env:
       OS: linux
     strategy:
@@ -225,7 +225,7 @@ jobs:
   semver_linux:
     name: Semver Linux
     needs: build_channels_linux
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     strategy:
       fail-fast: true
     steps:
@@ -258,7 +258,7 @@ jobs:
 
   docs:
     name: Generate documentation
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     needs: docker_linux_tier2
     strategy:
       fail-fast: true
@@ -281,7 +281,7 @@ jobs:
   end_success:
     name: bors build finished
     if: github.event.pusher.name == 'bors' && success()
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     needs: [
       docker_linux_tier1,
       docker_linux_tier2,
@@ -303,7 +303,7 @@ jobs:
   end_failure:
     name: bors build finished
     if: github.event.pusher.name == 'bors' && (failure() || cancelled())
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     needs: [
       docker_linux_tier1,
       docker_linux_tier2,
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 33580940a326052ebebace933851732b3dad8b3e..b75448397f9924a75fd28d7325473650dbe9978b 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -8,7 +8,7 @@ on:
 jobs:
   upload_docs:
     name: Upload documentation
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     if: github.repository == 'rust-lang/libc'
 
     steps:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 193abba1394122a6be2029e8825d61d7aa6b846d..6b5f5daf9769e405d6701adc71b67e1e35e5c77e 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -10,7 +10,7 @@ on:
 jobs:
   docker_linux_tier1:
     name: Docker Linux Tier1
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     strategy:
       fail-fast: true
       matrix:
@@ -73,7 +73,7 @@ jobs:
 
   style_check:
     name: Style check
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-20.04
     strategy:
       fail-fast: true
     steps: