Difference between revisions of "Create Debian sysroots"

From Aram's Wiki
Jump to: navigation, search
(Fix symlinks)
Line 10: Line 10:
 
[[Debian Linux Post Install Steps| Debian]] or [[Ubuntu Linux Post Install Steps | Ubuntu]] or any system that can run [https://wiki.debian.org/Debootstrap debootstrap].
 
[[Debian Linux Post Install Steps| Debian]] or [[Ubuntu Linux Post Install Steps | Ubuntu]] or any system that can run [https://wiki.debian.org/Debootstrap debootstrap].
  
Everything below runs as root:
+
Everything below runs on the '''debootstrap machine''' as root:
  
 
  sudo -i
 
  sudo -i
  
== Install debootstrap ==
+
=== Install debootstrap ===
  
 
  apt install -y debootstrap
 
  apt install -y debootstrap
  
== Run debootstrap ==
+
=== Run debootstrap ===
  
 
  <nowiki>mkdir -p /tmp/sysroots
 
  <nowiki>mkdir -p /tmp/sysroots
Line 25: Line 25:
 
for arch in $arches; do IFS=","; set $arch; debootstrap --arch $1 --variant=buildd stable $2 http://deb.debian.org/debian; unset IFS; done</nowiki>
 
for arch in $arches; do IFS=","; set $arch; debootstrap --arch $1 --variant=buildd stable $2 http://deb.debian.org/debian; unset IFS; done</nowiki>
  
== Fix symlinks ==
+
=== Fix symlinks ===
  
 
Debootstrap will create absolute symlinks, fix absolute symlinks to refer to the sysroot dir by changing them into relative symlinks.
 
Debootstrap will create absolute symlinks, fix absolute symlinks to refer to the sysroot dir by changing them into relative symlinks.
Line 31: Line 31:
 
  for arch in $arches; do IFS=","; set $arch; find "$2" -type l -lname '/*' -exec sh -c 'file="$0"; dir=$(dirname "$file"); target=$(readlink "$0"); prefix=$(dirname "$dir" | sed 's@[^/]*@\.\.@g'); newtarget="$prefix$target"; ln -snf $newtarget $file' {} \; ; unset IFS; done
 
  for arch in $arches; do IFS=","; set $arch; find "$2" -type l -lname '/*' -exec sh -c 'file="$0"; dir=$(dirname "$file"); target=$(readlink "$0"); prefix=$(dirname "$dir" | sed 's@[^/]*@\.\.@g'); newtarget="$prefix$target"; ln -snf $newtarget $file' {} \; ; unset IFS; done
  
== See also ==
+
=== See also ===
  
 
* [https://wiki.debian.org/Debootstrap debootstrap]
 
* [https://wiki.debian.org/Debootstrap debootstrap]

Revision as of 14:08, 24 November 2019


Introduction

We'll create Debian sysroots suitable for a GCC cross compiler.

Prerequisites

Debian or Ubuntu or any system that can run debootstrap.

Everything below runs on the debootstrap machine as root:

sudo -i

Install debootstrap

apt install -y debootstrap

Run debootstrap

mkdir -p /tmp/sysroots
cd /tmp/sysroots
arches="amd64,x86_64-linux-gnu arm64,aarch64-linux-gnu mips,mips-linux-gnu mips64el,mips64el-linux-gnuabi64 ppc64el,powerpc64le-linux-gnu"
for arch in $arches; do IFS=","; set $arch; debootstrap --arch $1 --variant=buildd stable $2 http://deb.debian.org/debian; unset IFS; done

Fix symlinks

Debootstrap will create absolute symlinks, fix absolute symlinks to refer to the sysroot dir by changing them into relative symlinks.

for arch in $arches; do IFS=","; set $arch; find "$2" -type l -lname '/*' -exec sh -c 'file="$0"; dir=$(dirname "$file"); target=$(readlink "$0"); prefix=$(dirname "$dir" | sed 's@[^/]*@\.\.@g'); newtarget="$prefix$target"; ln -snf $newtarget $file' {} \; ; unset IFS; done

See also