Help us understand the problem. What is going on with this article?

西暦3000年、地球外生命体はlinux kernelをコンパイルできるのか?

この問いかけにまじめに考えてみる。

TL;DR(要約)

  • RISC-VだったらCPUから作れそう。エミュレータのコード見て自作もできそう。
  • RISC-Vだったら、多分linux動かすところまで行けるよ!
  • x86とかだったら、動かそうとするけどライブラリ古くて苦しむよ!
  • Linux Kernelだけ見ても、GitHub上にすべての依存する「最新の」コードは存在していない。若干古かったりするので、そこらへんは地球外生命体の人に頑張ってもらうしかない。

前提条件

西暦2500年、地球人類は滅亡した(唐突)。北極には、かつてGitHubが残したオープンソースコードが深い眠りについていた……。

西暦2900年、地球外生命体は地球人類が滅んだあとの地球に降り立った。だが、かろうじて石碑などに残された文字から基本的な構文は読み取れたものの、本や電子データの多くは失われた。

西暦3000年、偶然、北極海に眠るGitHubのスナップショットを見つけた!!地球外生命体は、このスナップショットを偶然解読することに成功した!

https://japan.zdnet.com/article/35145444/

さて、このGitHubのスナップショット"だけ"を使って、無事に2020年のアプリケーションを動かせるだろうか?

(ここでデータがあっても破損しているとかあったらもうどうしようもないので…)

まずCPUがないと話にならない

と、その前にCPU!地球外生命体がx86 CPUを持っているとは限らない。現在であっても、Z80やV30といった1980年代のCPUは存在し続けている。とはいえ、人類滅亡後500年経過したら、現行CPUは動いていないだろう……。

QEmu

まず、最初の可能性はQemuでのエミュレーションコードからの解析である。

https://github.com/qemu/qemu

例えば、下記ファイルなどを丁寧に読むことで、システムコールというものがあったのか、などが分かるかもしれない。

https://github.com/qemu/qemu/blob/master/linux-user/x86_64/syscall_64.tbl

RISC-V

また、RISC-VのレポジトリにはISAそのものの仕様書もある。となれば、こちらを基に、地球外生命体がRISC-Vもどきを作り上げることができる可能性は高いとみてよいだろう!

https://github.com/riscv

え?英語が解析できるかって?多分できるという前提で…

※というか、必要になるライブラリ全部ほぼほぼここにそろってる……

https://github.com/riscv/riscv-gnu-toolchain

binutils/dejagnu/gcc/gdb/glibc/newlib ....

気を取り直そう……

Linux Kernelをコンパイルしてみよう

カーネル本体(ある)

よし、Linux Kernelそのものは、githubにある!

https://github.com/torvalds/linux

では、これをコンパイルするのに何が必要なのか?

https://www.kernel.org/doc/html/latest/process/changes.html

GCC(ある)

https://github.com/gcc-mirror/gcc

Gnu Make(ある)

https://github.com/mirror/make

あ、Makeのドキュメントもあった。なるほどなるほど・・・。

https://github.com/jr4qpv/GNU_Make_3rd_jp

Binutils (ない)

https://www.gnu.org/software/binutils/

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git

pkg-config(ない)

https://www.freedesktop.org/wiki/Software/pkg-config/

個人forkならばあったが…

Flex(ある)

https://github.com/westes/flex

bison(ある)

https://www.gnu.org/software/bison/

https://git.savannah.gnu.org/cgit/bison.git

MaintainerのAkim Demailleさんのレポジトリがあるから、安心ですね!

https://github.com/akimd/bison

Perl(ある)

https://github.com/Perl/perl5

BC(ない)

https://www.gnu.org/software/bc/

OpenSSL(ある)

https://github.com/openssl/openssl

ただし……

じゃあこのライブラリを使っているライブラリはどうなの?と検討し始めると、多分終わらない……

あとは、個人がforkしたレポジトリがあればそれが保存されている可能性もある…

まとめた感想

  • 一部プロジェクトは、github上にないので、せっかくのチャレンジの効果が十全ではない。
  • Linux Kernelだけ見ても、GitHub上にすべての依存する「最新の」コードは存在していない。若干古かったりするので、そこらへんは地球外生命体の人に頑張ってもらうしかない。

そのあとは?

Linuxが動き始めたら、あとはSelf Compilieでライブラリ作れるようになるはず。

「未知なる地球外生命体のコンピュータ上で動く、地球人類のコンピュータのためのクロスコンパイラ」づくりが大変かなあ…

なにせ我々とは違うので、もしかすると「レジスタ?何それ美味しいの?」というぐらいアーキテクチャ違うかもしれない。

まとめ

  • RISC-Vだったら、多分linux動かすところまで行けるよ!
  • x86とかだったら、動かそうとするけどライブラリ古くて苦しむよ!
  • Linux Kernelだけ見ても、GitHub上にすべての依存する「最新の」コードは存在していない。若干古かったりするので、そこらへんは地球外生命体の人に頑張ってもらうしかない。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした