diff --git a/.github/workflows/bors.yml b/.github/workflows/bors.yml
index 50d0fac8b0122436519d5c2421de840457c81129..abcc01765e9e7cc6777545129b0a0e28df4827a1 100644
--- a/.github/workflows/bors.yml
+++ b/.github/workflows/bors.yml
@@ -131,6 +131,9 @@ jobs:
           x86_64-linux-android,
           x86_64-unknown-linux-gnux32,
           x86_64-unknown-linux-musl,
+          # FIXME: It seems some items in `src/unix/mod.rs`
+          # aren't defined on redox actually.
+          # x86_64-unknown-redox,
         ]
     steps:
       - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
diff --git a/ci/build.sh b/ci/build.sh
index 9decfb75cfb5d341a129102946730ebdf3c40b47..ba186f3af5586a96e98b1ed0a34eba5cfc65cc52 100644
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -137,9 +137,6 @@ RUST_GT_1_24_LINUX_TARGETS="\
 i586-unknown-linux-musl \
 "
 
-# FIXME: temporarirly disable the redox target
-# https://github.com/rust-lang/libc/issues/1457
-# x86_64-unknown-redox
 RUST_NIGHTLY_LINUX_TARGETS="\
 aarch64-fuchsia \
 armv5te-unknown-linux-gnueabi \
@@ -151,6 +148,7 @@ x86_64-fortanix-unknown-sgx \
 x86_64-fuchsia \
 x86_64-pc-windows-gnu \
 x86_64-unknown-linux-gnux32 \
+x86_64-unknown-redox \
 "
 
 RUST_OSX_TARGETS="\
diff --git a/ci/docker/x86_64-unknown-redox/Dockerfile b/ci/docker/x86_64-unknown-redox/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..91b0cbabdc0b661da143da2cc0245f843013332b
--- /dev/null
+++ b/ci/docker/x86_64-unknown-redox/Dockerfile
@@ -0,0 +1,9 @@
+FROM redoxos/redoxer
+
+RUN mv /root/.redoxer /.redoxer
+
+ENV PATH=$PATH:/.redoxer/toolchain/bin:/rust/bin \
+    AR_x86_64_unknown_redox="x86_64-unknown-redox-ar" \
+    CC_x86_64_unknown_redox="x86_64-unknown-redox-gcc" \
+    CARGO_TARGET_X86_64_UNKNOWN_REDOX_LINKER="x86_64-unknown-redox-gcc" \
+    CARGO_TARGET_X86_64_UNKNOWN_REDOX_RUNNER="redoxer exec --folder ."
diff --git a/libc-test/build.rs b/libc-test/build.rs
index 65b049a9cce75e03a72011562ef43be14c5ef001..649e3699e5ae21d47249940a29172c2c659d197a 100755
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -8,7 +8,7 @@ use std::env;
 fn do_cc() {
     let target = env::var("TARGET").unwrap();
     if cfg!(unix) {
-        let exclude = ["wasi"];
+        let exclude = ["redox", "wasi"];
         if !exclude.iter().any(|x| target.contains(x)) {
             let mut cmsg = cc::Build::new();
 
@@ -537,54 +537,37 @@ fn test_redox(target: &str) {
         "dirent.h",
         "dlfcn.h",
         "errno.h",
-        "execinfo.h",
         "fcntl.h",
-        "glob.h",
         "grp.h",
-        "ifaddrs.h",
-        "langinfo.h",
         "limits.h",
         "locale.h",
-        "net/if.h",
-        "net/if_arp.h",
-        "net/route.h",
         "netdb.h",
         "netinet/in.h",
         "netinet/ip.h",
         "netinet/tcp.h",
-        "netinet/udp.h",
         "poll.h",
-        "pthread.h",
         "pwd.h",
-        "resolv.h",
-        "sched.h",
         "semaphore.h",
         "string.h",
         "strings.h",
         "sys/file.h",
         "sys/ioctl.h",
         "sys/mman.h",
-        "sys/mount.h",
         "sys/ptrace.h",
-        "sys/quota.h",
         "sys/resource.h",
         "sys/socket.h",
         "sys/stat.h",
         "sys/statvfs.h",
-        "sys/sysctl.h",
         "sys/time.h",
-        "sys/times.h",
         "sys/types.h",
         "sys/uio.h",
         "sys/un.h",
         "sys/utsname.h",
         "sys/wait.h",
-        "syslog.h",
         "termios.h",
         "time.h",
         "unistd.h",
         "utime.h",
-        "utmpx.h",
         "wchar.h",
     }