xv6�˥ͥåȥ����ǽ���������
�����̳�˰ܹԤ��Ƥ���1����Ⱦ�ۤɷвᤷ�ޤ������̶ФȤ�����ǰ�����Ǥ����������Ǹ����椫���ư�Ǥ���褦�ˤʤä� @pandax381 �Ǥ���
����
�ե륹����å��Ǽ���� TCP/IP �ץ��ȥ��륹���å��� xv6 ���Ȥ߹��ߡ����̤�ε�ǽ��ư���褦�ˤʤ�ޤ�����
I publish the implementation of TCP/IP network stack on xv6. I ported my user-mode TCP/IP stack, which was originally developed for learning, and added the e1000 driver and socket system calls. Some parts are still not enough, but they are working.https://t.co/nht9JDMVbl
— YAMAMOTO Masaya (@pandax381) March 11, 2020
�а�
���줳��7��8ǯ���餤�ФĤ�Ǥ����ɡ��饤�ե���Ȥ��Ƥ��ٶ��Ѥ�TCP/IP�ץ��ȥ��륹���å��γ�ȯ��ۤ��ܤ���³���Ƥ��ޤ���
����Ū�ˡ��ץ��ȥ��륹���å���OS�ε�ǽ�ΰ����Ȥ��ƥ����ͥ�������¸�ߤ��Ƥ���ΤǤ��������μ���ץ��ȥ��륹���å��ϡ����䤹����Ż뤷���Թ�ǥ桼�����֤Υ��ץꥱ��������ѤΥ饤�֥��Ȥ��Ƽ������Ƥ��ޤ���

�Dz��ؤ˰��֤����󥯥�٥�������Ϥ� PF_PACKET / BPF / TAP �����Ѥ��뤪��ڻ��ͤǡ����˥ѥ��åȽ�������ǰ�Ǥ���褦�ˤʤäƤ��ޤ���

����꤬�Ƥ���ʬ�⤢��ޤ�����Ethernet�ե졼�������������TCP�������ȤΤ����ޤ����Ƥ����ǽ������Ƥ��ޤ����֥ץ��ȥ��륹���å��äƤɤ�ʺ��ˤʤäƤ����������פȶ�̣����ä��ͤ������Ф���ʷ�ϵ����Ϥ�Τ����٤������餤�Υܥ�塼��ˤʤäƤ���󤸤�ʤ����Ȼפ��ޤ���
��ʪ���ǥХ������������󥿥ե���������ݲ��Ȥ�����ʤ�˺�����Ǥ���Τǡ���̣�����ä��饳���ɸ��Ƥ���������
��ǯ�����󥿡��󥷥åפ��˾����������������Ƥ��ơ����δ�ĥ��ˤ�ä� DHCP���饤����ȵ�ǽ��ѥ��å�ž����ǽ�����ˤ�DPDK���ݡ��ȤȤ��ä����ɤ��ä���줤�ޤ������������1��2���֤Ȥ���û�����֤����̤�Ф��Ƥ���ޤ�����
����ή��ǡ���Ƥˤ� KLab Expert Camp �Ȥ�����ɥ��٥�Ȥ򳫺Ť��ޤ�����
KLab Expert Camp ���ŷ��ꡪ��1��ơ��ޤϡ�TCP/IP�ץ��ȥ��륹���å����ȯ�פǡ��ֻդ��ͤ�ô�����ޤ��������� 8/26��29 ��4���֤Ǥγ��š������񡦽���������� KLab ����ô���ޤ����ץ��ȥ��륹���å�����˶�̣�Τ�������Τߤʤ��󡢰��˳ڤ����Ƥ�ᤴ���ޤ��礦��https://t.co/SVyMOzaeq8
— YAMAMOTO Masaya (@pandax381) April 26, 2019
4���֡��Ҥ�����ץ��ȥ��륹���å���ȯ����Ȥ����ޥ˥��å��ʹ�ɥ��٥�Ȥˤ⤫����餺�����񤫤餿������γ��������ä��Ƥ��졢����������̤��ƴ���Ū�ʻ��Ȥߤ�ؤ���ꡢ�̸���ؤΰܿ��䵡ǽ�ɲä˼���Ȥ�Ǥ���ޤ�����
���üԤ���Υե����ɥХå����������ɤ��ƺ�������Ū�˳��Ť������ʤȻפ���ǡ��Ƕ��ư���򸫤Ƥ���ȡּ���CPU��ư�����Ƥ��뼫���ѥ���ǥӥ�ɤ�������OS�˼���ץ��ȥ��륹���å����Ȥ߹��ߤ����פȤ�����Х��ͤ��и������ǽ���⽽ʬ���ꤽ���ʵ������Ƥ��ޤ���
���ʤ��Ȥ⡢�桼�����֤Ǥ�ư�������Ȥ��Ƥ��饤�֥��ξ��֤���OS�Υ����ͥ���Ȥ߹��⤦�Ȥ����ݤˤɤ��櫤�����Ǥ��뤫���İ����Ƥ����ʤ����Ȥˤϡ���ʬ�˥��ݡ��Ȥ��Ƥ������ʤ����Ȥ��ܤ˸����Ƥ��ޤ�������ʤ櫓�ǡ֤ޤ��ϼ�ʬ�Ǥ�äƤߤ뤫�פȤ����Τ������μ���ȤߤΤ��⤽���ư���Ǥ���
�꺢��OS������
�Ѥ������ʤ��顢�ͤ�OS������Ϥ�Ǥ��餺�ּ�ʬ��OS�פ��Í���Ƥ��ޤ���30��OS�����ܤ�֤��Ĥ��ɤ⤦�פ��Ѥ�Ǥ�������ʤΤǡ�OS�����Ϥ���Ƥ���Ȼ��֤��ݤ��ꤹ���Ƥ��ޤ��ޤ���������ȸ��ä� Linux �� BSD ���ȡ��١����ˤ���ˤϵ��Ϥ��ç¤ï¿½ï¿½ï¿½ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½
�������ä����Ӥˤϡ�����ѥ��Ȥ� xv6 �������Ƥ������ʵ������ޤ���
CPU�����Ϣ������Ǥ����ˤ��о줷�Ƥ��ޤ��������ޤ�����������ޤǤ�ʤ��Ȼפ��ޤ�����xv6 �� Version 6 UNIX (V6) �� x86�ʥޥ���ץ����å��Ķ��˸����˺Ƽ���������ΤǤ���MIT�����ڥ졼�ƥ��󥰥����ƥ�ιֵ��Ѥ˳�ȯ����MIT�ʳ��ˤ��¿���ζ��鵡�ؤ�����Ȥ��ƺ��Ѥ��Ƥ��ޤ���
�������̤�10,000�����٤ǡ�OS�μ����ˤ��ۤɾܤ����ʤ��Ƥ����Τ��Ϥ����Ȥ��Ǥ���ܥ�塼��Ǥ������¤����ɥ�����Ȥ���ͤ������������Ƥ���Ƥ������Ë�٤ˤ���Τ⿴�����Ǥ���
�Ƕ�� RISC-V �����μ����˰ܹԤ����褦�ǡ�MIT�ιֵ�������ǿ��Τ�Τ� RISC-V �Ǥ��١����ˤʤäƤ��ޤ���x86 �Ǥ� 2018 ǯ�ٰ����Υ��������֤򻲾Ȥ��ޤ��礦��
�ɤ�����Ϥ���뤫
xv6 �ˤϥͥåȥ����ǽ�����ڴޤޤ�Ƥ��ʤ����ᡢNIC�Υɥ饤�Ф����ɬ�פ�����ޤ�������ץ��ȥ��륹���å��Ǥϥ�󥯥���������OS�ε�ǽ��PF_PACKET �� BPF�ˤ����Ѥ��Ƥ��ƥɥ饤�ФˤϥΡ����å����ä��Τǡ��⤦���ʲ��������عߤ�뤳�Ȥˤʤ�ޤ���
xv6 �� QEMU ���ư����ʤ��鳫ȯ��ʤ�뤳�Ȥˤʤ�Τǡ�NIC �� QEMU �ǻȤ��ƾ����Ë�٤����� e1000 (Intel 8254x) �ò¥¿¡ï¿½ï¿½ï¿½ï¿½Ã¥È¤Ë¤ï¿½ï¿½ï¿½Î¤ï¿½ï¿½É¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ç¤ï¿½ï¿½ï¿½
�ޤ��ϡ��ɥ饤�ФΥ���ȥ�ݥ���ȤΥ��ߡ����Ѱդ��� Hello, World! �Ǥ���Ϥ���褦�ʥ����ɤ�ñ¤¡ï¿½PCI �ǥХ����Υɥ饤�ФΥꥹ�Ȥ��ɲä��Ƥ�����Ȥ�������Ϥ��᤿���ɤ����� ...�Ȼפä��ΤǤ����� õ���Ƥ⤽��äݤ������ɤ�������������ޤ���
�Ϥ���xv6 �� PCI �򥵥ݡ��Ȥ��Ƥ��ʤ��ΤǤ�����
�������ä� xv6 �� NIC �򰷤�����ˤ�
- PCI�Х��򥹥����
- ��³����Ƥ���ǥХ����򸡽�
- �б�����ɥ饤�Ф�ƤӽФ�
�Ȥ�����Ϣ�ν������������ɬ�פ����ꡢ���ˤ⤦���ʲ��������عߤ�뤳�Ȥˤʤ�櫓�Ǥ����������Ⱦ徺��٤��������ʤꤽ���Ǥ��͡�
PCI������
PCI�Х��Υ������ �Ȥ������Ȥʤ�����������񤷤�����ʹ�����ޤ�����I/O�ݡ��Ȥ�á���ƾ�����ɤࡢ�Ȥ��������η����֤��Ǥ��������ơ������դ�OS������Τߤʤ��������餷�������������Ƥ���Ƥ��ޤ���
����ե����졼������ΰ�äƤʤ󤾡��Ȥ������֤Ǥ����� uchan���� �λ������ɤ�� PCI ���������򤷤ޤ����ʤ��Ƥޤ���ˡ�
�ʲ��� Linux Kernel ����⤷���ɥ�����Ȥ⻲�ͤˤʤ�ޤ�����
�����β�����ɤߤʤ��龯���ŤĿʤ�Ƥ����� PCI �Х��򥹥���󤷤ƥǥХ����򸡽Ф��륳���ɤ��񤯤ΤϤ��ۤ��񤷤��ʤ��Ȼפ��ޤ����ʤ���xv6-net �Ǥ� PCI �κǽ�Ū�ʥ����ɤ� JOS �Ȥ����̤� OS �����Ҽڤ��뤳�Ȥˤ��ޤ�����
- https://pdos.csail.mit.edu/6.828/2018/jos.git
JOS �ϡ�xv6 ��Ʊ�ͤ� MIT �����ڥ졼�ƥ��󥰥����ƥ�ιֵ��ǻȤ�����˳�ȯ���Ƥ��� OS �Ǥ���JOS �ϰ������տ�Ū�˺���Ƥ���̤������OS�Ǥ��ꡢxv6 �β����ʹ�������Ȥˡ�JOS �μ�����ʤ�ƴ���������Ȥ��������Τ褦�Ǥ����ޤ���xv6 ����Υꥷ�å��ʥ����ͥ�Ǥ���Τ��Ф��� JOS �ϥޥ����������ͥ�Ȥ����㤤�⤢��褦�Ǥ���
�ɤ���٤Ƥߤ�� JOS ������������������Ƥ��ƥ��쥤�˽񤫤�Ƥ��뵤�������ΤΡ����Τ�ʷ�ϵ��Ϥ��ʤ���Ƥ��ޤ��������ơ�JOS �ˤ� PCI ����Υ����ɤ� e1000 �ɥ饤�ФΥ�����ȥ�ʤۤܤʤˤ�񤫤�Ƥ��ʤ����äݤΥե�����ˤ��Ѱդ���Ƥ��뤿�ᡢ�����Ȥ碌�Ƥ�餦���Ȥˤ��ޤ�����
�åµï¿½ï¿½ pci.c �� JOS �Υ����ɤ��Τ�ΤǤ���xv6 �˼��Ф��ͤϹ��Ψ�� JOS �Υ����ɤ��ɤ�Ǥ���Ϥ��ǡ�����Ǥ�����ͤ��ñ¤»ï¿½ï¿½é¤«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½É¤ï¿½ï¿½ï¿½ JOS �Υ����ɤ�Ȥ碌�Ƥ��ä��ۤ����ɤ�ͤ����ò¤·¤ä¤¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½È¹Í¤ï¿½ï¿½ï¿½ï¿½ï¿½Ì¤Ç¤ï¿½ï¿½Ê¥ï¿½ï¿½ï¿½ï¿½É¤ò¤½¤Î¤Þ¤ï¿½ï¿½È¤ß¹ï¿½ï¿½à¤¿ï¿½á¡¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¤»ï¿½Ë¾ï¿½ï¿½ï¿½ï¿½ï¿½Ö¤ï¿½Ý¤ï¿½ï¿½Æ¤ï¿½ï¿½ï¿½ï¿½ê¤·ï¿½Þ¤ï¿½ï¿½Ë¡ï¿½
pciinit() �� main() ���椫��Ƥ�Ǥ�����ȡ���ư���� PCI �Х��򥹥���󤷤���³����Ƥ���ǥХ��������Ф���ޤ���
PCI: 0:0.0: 8086:1237: class: 6.0 (Bridge device) irq: 0 PCI: 0:1.0: 8086:7000: class: 6.1 (Bridge device) irq: 0 PCI: 0:1.1: 8086:7010: class: 1.1 (Storage controller) irq: 0 PCI: 0:1.3: 8086:7113: class: 6.80 (Bridge device) irq: 9 PCI: 0:2.0: 1234:1111: class: 3.0 (Display controller) irq: 0 PCI: 0:3.0: 8086:100e: class: 2.0 (Network controller) irq: 11
�٥��ID�ȥǥХ���ID�ò¥¡ï¿½ï¿½Ë¥É¥é¥¤ï¿½Ð¤Î¥ï¿½ï¿½ï¿½È¥ï¿½Ý¥ï¿½ï¿½ï¿½È¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Æ¤ï¿½ï¿½ï¿½ï¿½È¡ï¿½ï¿½Ç¥Ð¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ð»ï¿½ï¿½Ë¤ï¿½ï¿½ï¿½ï¿½Ã¡ï¿½ï¿½ï¿½Æ¤ï¿½ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½
struct pci_driver pci_attach_vendor[] = { { 0x8086, 0x100e, &e1000_init }, { 0, 0, 0 }, };
NIC�Υɥ饤��
PCI �ΥǥХ����ò¸¡½Ð¤Ç¤ï¿½ï¿½ï¿½è¤¦ï¿½Ë¤Ê¤Ã¤ï¿½ï¿½é¡¢ï¿½ï¿½ï¿½ï¿½ NIC �Υɥ饤�Ф�ñ¤¤Þ¤ï¿½ï¿½ï¿½
JOS �Υ������ˤ� kernel/e1000.c �� kernel/e1000.h ���ޤޤ�Ƥ��ޤ������ɤ������äݤǡ�Intel �Υɥ�����Ȥ�������ɤ�Ȥ�����������äƤ��ޤ���
���ͤˤʤꤽ���ʥ����ɤ��ʤ���õ���Ƥߤ�ȡ�xv6 �� RISC-V �ǤΥ�ݥ��ȥ�ˤ� NIC �ν���������ޤǽ񤫤줿�ɥ饤�Фο���������ޤ���������������򻲹ͤˤ��Ĥġ��إå��ե�����Ϥ��Τޤ����Ѥ����Ƥ�餤�ޤ�����
- https://github.com/mit-pdos/xv6-riscv-fall19/blob/net/kernel/e1000.c
- https://github.com/mit-pdos/xv6-riscv-fall19/blob/net/kernel/e1000_dev.h
�ޤ���������� ����������Ƥ����ܤ�����㤯����狼��䤹���ƽ�����ޤ�����PCI�ξ����ܤ����񤫤�Ƥ��ơ�����ʾ���򥿥����ɤޤ��Ƥ��ä��ɤ��Τ�...�ȴ�ư���ʤ��� e1000 ���������򤷤ޤ����ʤ��Ƥޤ���ˡ�EPUB�ǤǤ����㤤�ޤ���
OSDev.org �ǾҲ𤵤�Ƥ���ʲ��Υ����ɤ⻲�ͤˤ��ޤ�����
¾�ˤ⡢������ˤ� xv6 ������ e1000 �ɥ饤�Ф�񤤤Ƥ���ͤ���������Τǡ�github ��Ǥ⤤���Ĥ��ץ��������Ȥ򸫤Ĥ��뤳�Ȥ��Ǥ��ޤ������������ɤ��ݡ���󥰤�������ǡ������ߤ�������ư�����֤Τ�Τϸ��Ĥ����ޤ���Ǥ�����
��Ϣ�κ�Ȥ���ǰ��ֶ��路���Τ����ѥ��åȼ������˳����ߤ�ȯ�������뤳�Ȥǡ�1���֤��餤�ϥޤäƤ��ޤ����������Ƚ񤤤��Ĥ��Ǥ�ʤ��ʤ������ߤ�ȯ�����ʤ������ޤ줽���ˤʤäƤ����Τǡ�ư�����Ȥ��Ϥ���㤯����򤷤��ä��Ǥ���
�ʤ��֤��������ǻȤ�DMA�ѤΥХåե����꤬���ޤ��Ǥ��Ƥ��ʤ���ư���Ƥ��ʤ��ä��󤸤�ʤ����ȻפäƤ��ޤ���
xv6 �Ѥ� e1000 �ɥ饤�Ф�ư��������������������Ǽ���ץ��ȥ��륹���å��� xv6 �غܤ��뤿��ν��������ä�💪https://t.co/nht9JDMVbl pic.twitter.com/TJYkWVAKAV
— YAMAMOTO Masaya (@pandax381) February 29, 2020
�����դξܤ������Ȥϡ��ޤ��̤ε����������ܤǤ�񤳤����ʤȻפäƤ��ޤ���
�ץ��ȥ��륹���å����Τΰܿ�
NIC �Υɥ饤�Ф�ư�����Τǡ����褤������Υץ��ȥ��륹���å����Τΰܿ��˼��ݤ���ΤǤ��������ޤ��������Ȥʤ����ä���ܿ��Ǥ��Ƥ��ޤ��ޤä��Τǡ����ޤ�񤯤��Ȥ��ʤ��ä��ꤷ�ޤ���
pthread ��ȤäƤ����Τ� mutex �� spinlock ���֤��������ꡢcond �򥿥����� sleep/wakeup ���֤��������ꤷ�����餤�Ǥ������ȡ������ޡ����Ȥ��Ƥ��ʤ��Τǡ�TCP�κ����Ȥ������ޡ��˰�¸���������Ϥޤ�ư�����Ƥ��ޤ���
�ޤ���ARP �˱����Ǥ���褦�ˤʤä�
ARP�˱����Ǥ���褦�ˤʤä���#�ץ��ȥ��륹���å�����#xv6 pic.twitter.com/zjBszDkK6t
— YAMAMOTO Masaya (@pandax381) March 2, 2020
ICMP �˱����Ǥ���褦�ˤʤä�
��Ĵ�˿ʤ�� ping �˱����Ǥ���褦�ˤʤä���#�ץ��ȥ��륹���å�����#xv6 https://t.co/I7BGOz4jVw pic.twitter.com/0xBivGA9LZ
— YAMAMOTO Masaya (@pandax381) March 3, 2020
UDP ���̿��Ǥ���褦�ˤʤ�
����ץ��ȥ��륹���å� on xv6 �ο�Ľ�������餷���� UDP �̿�����������🎉🎉🎉�ʻ��˼������������å����Υ����ƥॳ������̤��ƥ桼�����֤Υ��ץꥱ������󤬥����ͥ���Υץ��ȥ��륹���å������Ѥ����̿����Ƥ�� pic.twitter.com/VUbbeWr0TO
— YAMAMOTO Masaya (@pandax381) March 6, 2020
�ǽ�Ū�� TCP ��ư���褦�ˤʤ�ޤ���
��������������TCP ��ư��������������Ȥ�ȥ桼�����֤�ư��������Ǥ����館������ץ��ȥ��륹���å��� xv6 �Υ����ͥ���֤Ǵ�����ư��Ƥ롪���� https://t.co/juL0ntccyY pic.twitter.com/5tDU1T0B8K
— YAMAMOTO Masaya (@pandax381) March 6, 2020
�����å�
�����ͥ���ǥץ��ȥ��륹���å���ư���褦�ˤʤäƤ⥽���åȤ��ʤ���Х桼�����֤��̿����ץꥱ��������񤯤��Ȥ��Ǥ��ޤ���
����ץ��ȥ��륹���å��ˤϥ����å�����API�⤢��ΤǤ����������ñ�ʤ�饤�֥��ؿ��ʤΤǥץ��ȥ��륹���å��򥫡��ͥ���Ȥ߹�������֤Ǥϥ桼�����֤Υ��ץꥱ������󤫤�ƤӤ����ޤ���
����ʤ櫓�ǡ������å��� �ǤϤʤ������Υ����åȡʴ�Ϣ�Υ����ƥॳ����ˤ�������ޤ�����
�����ƥॳ������ɲäˤ����äƤϡ�xv6 �δ�¸�Υ����ƥॳ������椫������褦�ʥץ��ȥ����פΤ�Τ�õ����Ʊ���褦�˼������Ƥ��ޤ���
socket() �Ǻ����ǥ�������ץ��ϡ���Ȥ��¸�ߤ��Ƥ���ե�����ǥ�������ץ��ȸߴ�������Ĥ褦�˺�äƤ���Τǡ������åȤΥǥ�������ץ��� close() ���Ĥ����ꡢrecv() / senc() ������� read() / write() ��Ȥ����Ȥ�����ޤ���
ñ��ʥ����å��̿��Υץ������Ǥ���С�Linux �Ѥ˽񤤤������ɤ����Τޤ�ư�����٤ˤϤ����Ⱥ�äƤ��ޤ���
����ץ��ȥ��륹���å� on xv6 �����������˻ž夬�ä��������åȴ�Ϣ�Υ����ƥॳ��������ܤ˼��������ΤǤ褯���뤳��ʥ����ɤ����Τޤ�ư���褦�ˤʤä��������ȥե�����ǥ�������ץ���ɳ�Ť��Ƥ���Τ� read/write ��ȤäƤ�ư���� fork ���Ƥ�����ס�https://t.co/nht9JDMVbl pic.twitter.com/LQNvWwOpj9
— YAMAMOTO Masaya (@pandax381) March 10, 2020
ifconfig ���ޥ��
�����뤫�饤�󥿥ե������ξ��֤��ǧ������IP���ɥ쥹�����ꤹ�뤿��ˡ������Ŭ���ʥ��ޥ�ɡ�ifget / ifset / ifup / ifdown�ˤ��б����륷���ƥॳ������äơ����ξ�򤷤Τ��Ǥ��ޤ�����
���ʥ����ƥॳ�����������ƥ��ޥ�ɤǥͥåȥ�����󥿥ե�����������Ǥ���褦�ˤʤä�💪#xv6#�ץ��ȥ��륹���å����� pic.twitter.com/T6LZNEtwOK
— YAMAMOTO Masaya (@pandax381) March 5, 2020
������������Ȥ���äȥ������Τǡ��ǽ�Ū�� ifconfig ���ޥ�ɤ���ޤ�����ip ���ޥ�ɤ���ʤ��Τ� NETLINK �μ����Ϥ������˸���������Ȥ�����ͳ�Ǥ���
�����ֻ������� ifconfig ��ä�ư���褦�ˤʤä��ʤ��֤������˽�ľ���Ȼפ����ɤȤꤢ���� push ������#xv6#networking https://t.co/TEbKeGWe3m pic.twitter.com/2mh5tVGiuy
— YAMAMOTO Masaya (@pandax381) March 30, 2020
ifconfig �� ioctl() ���̤��ƥ��󥿥ե������ξ�������/���ꤷ�Ƥ���Τǡ�ioctl �Υ����ƥॳ������ɲä���SIOCGXXX �� SIOCSXXX ��Ҥ����������Ǥ��ޤ���
������
����⤳���Ⱥ�����Ǥ�����ּ���ץ��ȥ��륹���å��� xv6 �˰ܿ������פȤ������ϡ�xv6 �˥ͥåȥ����ǽ����������פȤ����������ˤʤä��Τǡ����Τ褦�ʥ����ȥ�ˤʤ�ޤ�����
���ȡ�����;�ä� reddit �ǥӥ塼�⤷�ޤ�����
reddit �ǥ����Ȥ��줿���μ���OS�����ä������Ƥ��ƴ�ư�����ΤǾҲ𤷤Ƥ����ޤ���
�ޤ����ͽ���Ω�Ƥ�Τ��񤷤��Ǥ��������٥�Ȥ����ŤǤ���褦�ʾ����ˤʤä��顢�ޤ� KLab Expert Camp �ǥץ��ȥ��륹���å�����ι�ɤ��ꤿ���ȻפäƤ��ޤ������κݤϼ���OS�ؤ��Ȥ߹��ߤ⥵�ݡ��ȤǤ���褦�˽������Ƥ����ޤ��Τdzڤ��ߤˤ��Ƥ��Ƥ���������
@pandax381