1 porting gnu/linux to xbox milosch meriac - 19c3@meriac · 2019-10-13 · the linux porting...
TRANSCRIPT
![Page 2: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/2.jpg)
2
Who am I
• Milosch Meriac, freelancer
• focused on embedded systems
• reverse engineering
• linux and windows kernel drivers
• lowlevel programming / realtime
![Page 3: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/3.jpg)
3
Which operating system for Xbox ?
• Open/Free/Net-BSD
• GNU/HURD
• GNU/Linux
• Proprietary OS
• Windows 9x/SE/ME
• Windows NT/2000/XP
![Page 4: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/4.jpg)
4
Why not MS-Windows - Battle Royale ?
• It’s nothing personal
![Page 5: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/5.jpg)
4
Why not MS-Windows - Battle Royale ?
• It’s nothing personal
• High license fees
![Page 6: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/6.jpg)
4
Why not MS-Windows - Battle Royale ?
• It’s nothing personal
• High license fees
• Not allowed to patch binaries (EULA)
![Page 7: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/7.jpg)
4
Why not MS-Windows - Battle Royale ?
• It’s nothing personal
• High license fees
• Not allowed to patch binaries (EULA)
• Mostly close source
![Page 8: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/8.jpg)
4
Why not MS-Windows - Battle Royale ?
• It’s nothing personal
• High license fees
• Not allowed to patch binaries (EULA)
• Mostly close source
• Lack of Open Source Windows Drivers, Applications
and Frameworks.
![Page 9: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/9.jpg)
5
Why Linux or: How I Learned To StopWorrying And Love The Bomb
• Open Source - we need to tweak a lot
• liberal GNU GPL license model
![Page 10: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/10.jpg)
5
Why Linux or: How I Learned To StopWorrying And Love The Bomb
• Open Source - we need to tweak a lot
• liberal GNU GPL license model
• allows closed source kernel modules
![Page 11: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/11.jpg)
5
Why Linux or: How I Learned To StopWorrying And Love The Bomb
• Open Source - we need to tweak a lot
• liberal GNU GPL license model
• allows closed source kernel modules
• well-known and user-friendly (KDE3/Gnome)
• wide range of applications
• sophisticated development tools
![Page 12: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/12.jpg)
5
Why Linux or: How I Learned To StopWorrying And Love The Bomb
• Open Source - we need to tweak a lot
• liberal GNU GPL license model
• allows closed source kernel modules
• well-known and user-friendly (KDE3/Gnome)
• wide range of applications
• sophisticated development tools
![Page 13: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/13.jpg)
6
• we simply like it most, so we started using linux
• boost the spread of linux
![Page 14: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/14.jpg)
7
The Linux Porting Process - They WhoStep On Tiger’s Tail
• In the beginning there was darkness...
![Page 15: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/15.jpg)
8
![Page 16: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/16.jpg)
9
then Michael Steil spoke in the darkness:”Let there be light”
![Page 17: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/17.jpg)
10
![Page 18: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/18.jpg)
11
And right away there was light, scatteringthe darkness and showing the infinitespace. ”That’s good!” said Michael
• We can now run unsigned code
• Built Xbox Executable Binary from scratch (no XDK
needed) which copied the Tux-Logo into initialized video
RAM area
• replacing whole copyrighted microsoft code within Xbox
flash was not satisfying, because of no video output
![Page 19: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/19.jpg)
12
The Linux Porting Process - A SpaceOdyssey
• created a bootloader like GNU/GRUB or LILO
![Page 20: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/20.jpg)
12
The Linux Porting Process - A SpaceOdyssey
• created a bootloader like GNU/GRUB or LILO
• minimzed side effects of the Xbox Kernel using a clean
ROM-Replacement
• perfectly legal solution
![Page 21: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/21.jpg)
12
The Linux Porting Process - A SpaceOdyssey
• created a bootloader like GNU/GRUB or LILO
• minimzed side effects of the Xbox Kernel using a clean
ROM-Replacement
• perfectly legal solution
• to prevent 16-Bit fiddeling we skipped realmode initial-
ization of kernel
![Page 22: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/22.jpg)
13
Our first replacement ROM - Dark Star
• we see ...
![Page 23: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/23.jpg)
14
![Page 24: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/24.jpg)
15
Nothing to see - The Emperor’s NewClothes
• Linux boots, but we see nothing
• no video output at all, because there were neither BIOS
routines for screen setup, nor a VGA BIOS
![Page 25: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/25.jpg)
16
Our second step
• used Andy Greens filtror device as a simple kernel debug
console
• a bidirectional memory buffer allowed us to exhange
data with the Xbox
• device is being polled by the linux kernel and the client
computer
• device allowed us to see the kernel messages on a
terminal
![Page 26: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/26.jpg)
17
• a dirty hooking-the-kernel-kprintf-routines-hack shows
us the first ”hello world”-lifesigns of the kernel
![Page 27: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/27.jpg)
17
• a dirty hooking-the-kernel-kprintf-routines-hack shows
us the first ”hello world”-lifesigns of the kernel
• was really dirty, unstable and passive
![Page 28: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/28.jpg)
17
• a dirty hooking-the-kernel-kprintf-routines-hack shows
us the first ”hello world”-lifesigns of the kernel
• was really dirty, unstable and passive
• wrote a console kernel driver especially for the filtror
device
• the new driver allowed us to see the all boot messages
![Page 29: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/29.jpg)
17
• a dirty hooking-the-kernel-kprintf-routines-hack shows
us the first ”hello world”-lifesigns of the kernel
• was really dirty, unstable and passive
• wrote a console kernel driver especially for the filtror
device
• the new driver allowed us to see the all boot messages
• after fixing some nVidia PCI Chipset bugs and mainly
minor Xbox-specific problems - Linux is booting cleanly!
![Page 30: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/30.jpg)
18
Things started to roll - Odyssey two
• we created a Linux distribution from scratch
![Page 31: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/31.jpg)
18
Things started to roll - Odyssey two
• we created a Linux distribution from scratch
• used busybox the Swiss Army Knife of Embedded Linux
![Page 32: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/32.jpg)
18
Things started to roll - Odyssey two
• we created a Linux distribution from scratch
• used busybox the Swiss Army Knife of Embedded Linux
• busybox running on top of uClib, a C library for embed-
ded systems
• powerful embedded linux system
• bzip2’ed kernel and the gzip’ed initial ramdisk fits per-
fectly into one megabyte Xbox-Flash
![Page 33: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/33.jpg)
18
Things started to roll - Odyssey two
• we created a Linux distribution from scratch
• used busybox the Swiss Army Knife of Embedded Linux
• busybox running on top of uClib, a C library for embed-
ded systems
• powerful embedded linux system
• bzip2’ed kernel and the gzip’ed initial ramdisk fits per-
fectly into one megabyte Xbox-Flash
![Page 34: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/34.jpg)
19
• filtror console driver gave us access to linux console on
Xbox
• everything is working fine
• managed to get the closed source nVidia network drivers
working inside the Xbox Linux environment
![Page 35: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/35.jpg)
20
Our first Release
• Linux boots into a network-enabled state
• running a web server and telnet daemon
• although there is no audio or video output and input
device connectivity yet, users have full control on the
Xbox through the network
• Xbox based internet servers appear on the internet
![Page 36: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/36.jpg)
21
• developers worldwide are now able to add more features
• ability to mount NFS shares
• includes large number of linux command line tools
• soundcard enabled - mp3players appeared
• the embedded webserver provides detailed information
about the Xbox
![Page 37: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/37.jpg)
22
Figure 1: The Embedded Webserver
![Page 38: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/38.jpg)
23
Figure 2: System information provided by CGI script
![Page 39: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/39.jpg)
24
Figure 3: Xbox Team Information
![Page 40: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/40.jpg)
25
Within few days the count of developersgrew enormously
The next steps of the team included:
• added USB interface for mouse and keyboard support
• added FatX-Filesystem support
• added added support for Xbox-Controller
• created a ROM-Image which can be operated by USB-
Keyboard on Xbox
![Page 41: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/41.jpg)
26
ROM image was becoming too tight
• we created a Xbox Executable Bootloader for booting
Linux from CD-RW or DVD
• this enables us to access initialized video RAM
![Page 42: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/42.jpg)
26
ROM image was becoming too tight
• we created a Xbox Executable Bootloader for booting
Linux from CD-RW or DVD
• this enables us to access initialized video RAM
• enabled the framebuffer console driver by adding a Xbox
framebuffer interface description to the kernel.
![Page 43: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/43.jpg)
27
Figure 4: Xbox Linux v0.2 TV screenshot
![Page 44: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/44.jpg)
28
XWindows up and running !
• XServer 4.x is running
• Xbox can be used used as XTerminal
• The first DivX films with sound are running smooth on
Xbox Linux
![Page 45: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/45.jpg)
29
Interesting Links
• http://Xbox-linux.sourceforge.net/
The Xbox Linux Project
• http://www.busybox.net/
The Swiss Army Knife of Embedded Linux
• http://tinylogin.busybox.net/
The worlds smallest login/passwd/getty/etc
• http://www.uclibc.org/
![Page 46: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/46.jpg)
30
uClibc - a C library for embedded systems
• http://www.linuxfromscratch.org/
Linux From Scratch
• http://www.boa.org/
Boa Web Server
• http://www.acme.com/software/thttpd/
thttpd - tiny/turbo/throttling HTTP server
• http://www.pengutronix.de/software/utelnetd en.html
A small Telnet daemon
![Page 47: 1 PORTING GNU/LINUX TO Xbox Milosch Meriac - 19C3@meriac · 2019-10-13 · The Linux Porting Process - A Space Odyssey ... • running a web server and telnet daemon • although](https://reader036.vdocuments.us/reader036/viewer/2022062915/5ea894fcd0aabf0b756ad449/html5/thumbnails/47.jpg)
31
Figure 5: The porting of major distributions like Debian,
SuSE and Mandrake has begun