���f�B�A

tar�t�@�C���V�X�e����Android�ɑg�ݍ���!!�F���Ȃ��痝������t�@�C���V�X�e���̎d�g�݁i11�j�i1/2 �y�[�W�j

�ŏI��ł́A�O��g�p����Android���ڃ{�[�h�ɃI���W�i���̃t�@�C���V�X�e���utarfs�v��g�ݍ��ޕ��@���Љ��I

» 2011�N03��10�� 14��28�� ���J
[�X ���A�{�� ���M�A��c ���i�A�쑺 �����i������� �i�a�V�X�e���}�l�W�����g�j�C��IT MONOist]

�@�����A�uAndroid�v���͂��߂Ƃ���X�}�[�g�t�H���Ȃǂ̑g�ݍ��݋@��ł́A������O�̂悤���t�@�C���V�X�e�������݂��܂��B

�@�A�ڑ�1��u�Ȃ��ƍ���t�@�C���V�X�e���̂��肪�����v�ł����������Ƃ���A���l�����郆�[�U�[�j�[�Y�ɉ����邽�߂ɁA�g�ݍ��݋@��Ŏ�舵���f�[�^�ʂ͔N�X�����X���ɂ���A�t�@�C���V�X�e�����̗p���郁���b�g�������Ȃ��Ă��Ă��܂��B

�@�ŏI��ƂȂ鍡��́AAndroid�i�O���̑g�ݍ��݃{�[�h�u�}���`�E���f�B�A ARM11�{�[�h Idea6410�{LCD4.3�v�j�ɃI���W�i���̃t�@�C���V�X�e���ł���utar�t�@�C���V�X�e���itarfs�j�v��g�ݍ��ޕ��@���Љ�܂��B�����āA�Ō�ɓ���m�F�i�f���j�Ƃ��āA�g�ݍ��݃{�[�h��œ���t�@�C���i��1�j�̓�����tar�t�@�C�����}�E���g���A���̓���t�@�C�����Đ����Ă݂܂��B

����1�F����́A�M�҂��ߋ���YouTube�ɓ��e����Android�ڐA�̓���t�@�C���i�ȉ�2�j��tar�A�[�J�C�u�ɂ��܂��B


Android�Ƀt�@�C���V�X�e����g�ݍ��ނɂ́H

�@�������̂Ƃ���AAndroid�̃x�[�X�ƂȂ�J�[�l����Linux�ł��B�]���āA�I���W�i���̃t�@�C���V�X�e���̑g�ݍ��ݕ���Linux�ł̂����Ɠ��l�ł��B

�@Linux�ł́A�t�@�C���V�X�e���̏������u���z�t�@�C���V�X�e���v�Ƃ����\���ŋ��ʉ����Ă���܂��̂ŁA�I���W�i���̃t�@�C���V�X�e����lj�����̂͂���قǓ���͂���܂���B�܂��ALinux���p�ӂ��Ă���ėp�֐���ϋɓI�ɗ��p���邱�ƂŁA�R�[�h�ʂ��팸�ł��邾���Ȃ��A���̌�̃J�[�l���x�[�X�̔Ő��A�b�v�ɂ��ǐ����₷���Ȃ�܂��B

�@�}1�́ALinux�̃t�@�C���V�X�e���X�^�b�N�\���ł��BLinux�ɃI���W�i���t�@�C���V�X�e����g�ݍ��ނ��߂ɂ́A

  1. Linux��VFS�w���񋟂��Ă���֐��C���^�[�t�F�C�X�i�}1�̗΂̏��������j�̎���
  2. �o���オ�������W���[�����t�@�C���V�X�e���Ƃ��ēo�^

��2�‚̍�Ƃ��K�v�ƂȂ�܂��B

t@CVXeX^bN\ �}1�@�t�@�C���V�X�e���X�^�b�N�\��

�@tarfs�̎����ɓ�����A���ʏ����Ƃ��āu�_���ϊ������v�Ɓu�f�B�X�NI/O�����v������܂��B�����̓t�@�C���V�X�e���ɂƂ��ďd�v�ȏ����ł͂���܂����A���e���������G�ł���A���̗��������œ��ɖ����”\��������܂��̂ŁA�{�y�[�W�����ɕ⑫���i�⑫1�j�i�⑫2�j�Ƃ��Čf�ڂ��܂����i�������̂�����͂�����������Ă������������j�B

�֐��C���^�[�t�F�C�X�̓o�^

�@�}1�Ŏ������悤�ɁALinux��VFS�w���񋟂��Ă���֐��C���^�[�t�F�C�X�̎�ނɂ͈ȉ��̂��̂�����܂��B�����̃C���^�[�t�F�C�X����������΁A�t�@�C���V�X�e���Ƃ��ċ@�\���Ă���܂��B

  1. inode�I�y���[�V����
  2. file�I�y���[�V����
  3. address_space�I�y���[�V����
  4. super_block�I�y���[�V����
  5. file_system_type�I�y���[�V����

�@�t�@�C���V�X�e���̓o�^�Ώۊ֐��͑�������܂����A����ȃt�@�C���V�X�e���łȂ���΁A�A�ڑ�9��u����E�ʐ^�Ȃǂ̃f�[�^�����z������d�g�݂Ƃ́H�v�Ő��������Ƃ���ALinux���f�t�H���g�ŗp�ӂ��Ă���֐����g�p���邱�Ƃ��ł��܂��B

�@����쐬����tafrs�́A��ʓI�ȓǂݍ��ݐ�p�̃t�@�C���V�X�e���Ɠ����@�\��񋟂�����̂ł���A����ȋ@�\�͂���܂���B���̂��߁A�唼�̊֐���Linux�̔ėp�֐��𗘗p���邱�Ƃ��ł��A�I���W�i���֐��̓o�^�͔��ɏ��Ȃ��čς݂܂��B

�@����ł́A���ۂ̓o�^�󋵂����ԂɌ��Ă����܂��傤�B

1�Dinode�I�y���[�V����
�@inode�I�y���[�V�����ł́A�ʏ�t�@�C���̏ꍇ�A�t�@�C���̃T�C�Y��p�[�~�b�V��������Ȃǂ�o�^���܂��B�f�B���N�g���̏ꍇ�́A�t�@�C���̍쐬�E�폜�E�����Ȃǂ�o�^���܂��B�V���{���b�N�����N�̏ꍇ�́A�����N��p�X���̑���֐���o�^���܂��B

�@�ȉ��̕\1�ł́Ainode�֐��e�[�u���̃G���g���ƁAtarfs�Ŏ��ۂɓo�^�����֐��������Ă��܂��B�������A�ʏ�t�@�C���ɂ‚��ẮAtarfs���ǂݍ��ݐ�p�t�@�C���V�X�e���Ƃ������R����1�‚��o�^����K�v������܂���ł����B�f�B���N�g���ɂ‚��ẮA�t�@�C�������p�̊֐��itarfs_lookup�j1�‚����ł��i��2�j�B�V���{���b�N�����N�́A�����N��p�X�����3�‚̊֐���o�^���܂������A���̂���1�‚̊֐��igeneric_readlink�j�́ALinux�ŗp�ӂ���Ă�����̂𗘗p���Ă��܂��B

inode ֐e[u �\1�@inode �֐��e�[�u���i��3�j
����2�F�t�@�C�������̓��e�ɂ‚��ẮA�A�ڑ�8��u�t�@�C�������Ǘ�����L���b�V��dentry�v���������������B


����3�FLinux�ėp�֐��𗘗p���Ă���ꍇ�́A���̑����A�Ǝ������͐Ԃ̑����ŕ\�L���Ă���i�ȍ~�̕\�����l�j�B


2�Dfile�̃I�y���[�V����
�@file�I�y���[�V�����ł́A�ʏ�t�@�C���̏ꍇ�̓t�@�C���̓ǂݏ�������A�f�B���N�g���̏ꍇ�̓f�B���N�g���G���g�������o�^����K�v������܂��B�Ȃ��A�V���{���b�N�����N�t�@�C���ɂ‚��ẮA��������������͍s���܂���̂œo�^�͕s�v�ł��B�\2�Ɏ����Ƃ���A�ʏ�t�@�C���ɂ‚��ẮALinux�ŗp�ӂ���Ă�����̂�o�^���邾���ōς݂܂����B�f�B���N�g���ɂ‚��ẮA�I���W�i���̂��̂́utarfs_readdir�v�����ł��B

file֐e[u �\2�@file�֐��e�[�u��

3�Daddress_space
�@address_space�I�y���[�V�����ł́Apage���g�����t�@�C���f�[�^�̓ǂݏ��������o�^����K�v������܂��B�f�B���N�g���A�V���{���b�N�����N�t�@�C���ɂ‚��ẮA��������������͍s���܂���̂œo�^�͕s�v�ł��B�\3�Ɏ����Ƃ���Atarfs���ǂݍ��ݐ�p�̃t�@�C���V�X�e���ł��邱�Ƃ���A�utarfs_readpage�v�����̓o�^�ŏI���ł��B

address_space֐e[u �\3�@address_space�֐��e�[�u��

4�Dsuper_block�̃I�y���[�V����
�@super_block�I�y���[�V�����ł́A�t�@�C���V�X�e�����쏈����o�^���܂��i�\4�j�B

super_operations̊֐e[u �\4�@super_operations�̊֐��e�[�u��

5�Dfile_system_type �̃I�y���[�V����
�@file_system_type�I�y���[�V�����ł́A�t�@�C���V�X�e���̃}�E���g�ƃA���}�E���g�����֐���o�^���܂��i�\5�j�B

file_system_type̊֐e[u �\5�@file_system_type�̊֐��e�[�u��

�t�@�C���V�X�e���̓o�^

�@�����܂ł���΁A���tarfs�̃��W���[�����t�@�C���V�X�e���Ƃ��ēo�^����΂��������ł��I ��̓I�ɂ́ALinux���p�ӂ��Ă���o�^�֐��uregister_filesystem()�v�̈�����tarfs��file_system_type�I�u�W�F�N�g�itar_fs_type�j��n�������ł��i��4�j�B�ȉ��ɁA���ۂɍ쐬�����R�[�h�������܂��i�}2�j�B

t@CVXeo^̎ �}2�@�t�@�C���V�X�e���o�^�̎�����
����4�F�uinit_tarfs()�v��__init�Ő錾���Ă��܂����A����̓t�@�C���V�X�e���o�^������Ƀ��������������邱�Ƃ��Ӗ����Ă��܂��B


�@���Ȃ݂ɁAtarfs�̃��W���[�����폜����ꍇ�́A�uunregister_filesystem()�v�̈�����tarfs��file_system_type��n���܂��i�}3�j�i��5�j�B

t@CVXeo^̉ �}3�@�t�@�C���V�X�e���o�^�̉�����

�@�Ō�ɁA�����̊֐������W���[���Ƃ��ēo�^�E�������s����悤�ɁA�ȉ��́g���܂��Ȃ��h�����܂��B

�@�umodule_init()�v�̈����Ɏw�肷��֐��́A���W���[�����[�h���Ɏ��s����鏉�����֐��iinit_tarfs�j�ł��B����A�umodule_exit()�v�̈����Ɏw�肷��֐��́A���W���[���A�����[�h���Ɏ��s�����I���֐��iexit_tarfs�j�ƂȂ�܂��B�Ȃ��Atarfs��GPL���C�Z���X�Ƃ��Ă��܂��̂ŁAMODULE_LISENSE()�}�N���̈����ɂ́gGPL�h���w�肵�Ă��܂��B

����5�F�uexit_tarfs()�v�́A__exit�Ő錾���Ă��܂����A����̓t�@�C���V�X�e���o�^�����̂Ƃ������������Ƀ��[�h����邱�Ƃ��Ӗ����Ă��܂��B




�⑫1�F�_���ϊ������̎���

�@�t�@�C���V�X�e���̏d�v�Ȗ�����1�‚Ƃ��āA���[�U�[�̃f�[�^�z�u�󋵂����^�f�[�^�Ƃ��ĊǗ�����Ƃ�������������܂��i��6�j�B�����āA�t�@�C���V�X�e���́u���[�U�[���ӎ�����t�@�C���̃I�t�Z�b�g�i�_���I�t�Z�b�g�j�v�Ɓu���ۂɃf�[�^���z�u����Ă���I�t�Z�b�g�i�����I�t�Z�b�g�j�v���Ǘ�����K�v������܂��B

�@���[�U�[�̃t�@�C���V�X�e���ɑ΂���v���́u�_���I�t�Z�b�g�v�Ƃ����`�ł��܂�����A�t�@�C���V�X�e���Ƃ��Ă͂�����u�����I�t�Z�b�g�v�ɕϊ����āA�f�B�X�N��̂ǂ��ɑΏۂƂȂ�f�[�^������̂���T���K�v������킯�ł��i��7�j�B���̂悤�ȕϊ����u�_���ϊ������v�ƌĂт܂��B

�@�����ŁA���̕ϊ������Ƀo�O������ƁA�܂������֌W�̂Ȃ��f�[�^��ǂݍ���ł��܂��f�[�^�������������Ȃ��Ƃ�����肪�N���Ă��܂�����A�������j��������N�����A�V�X�e����~���������Ă��܂����肵�܂��̂ŁA�T�d�ɐ݌v�E������i�߂Ȃ���΂Ȃ�܂���B

�@tarfs�ɂ́A�_���ϊ��ΏۂƂȂ�_���f�[�^��3�i�ȉ��j����܂����A�o�O�̍�荞�݂��Ⴍ�Ȃ�悤�ɁA�����‚��H�v���{���Ă��܂��B

  1. �t�@�C���I�t�Z�b�g
  2. �f�B���N�g���I�t�Z�b�g
  3. inode�ԍ�

�@��L3�‚̘_���f�[�^���Ǘ����Ă���tarfs�̃��^�f�[�^�͕\6�Ɏ����Ƃ���A���ׂāu�f�B�X�Ninode�v�Ƃ��Ă��܂��B

�_���f�[�^ �_���ϊ��Ǘ��f�[�^
�t�@�C���I�t�Z�b�g �Ώۃt�@�C���́u�f�B�X�Ninode�v�i��8�j
�f�B���N�g���I�t�Z�b�g �Ώۃt�@�C���́u�f�B�X�Ninode�v
inode�ԍ� �f�B�X�Ninode�Ǘ��p����u�f�B�X�Ninode�v
�\6�@tarfs�̘_���ϊ��Ώۃf�[�^

�@�‚܂�A�_���ϊ��̑Ώہi�t�@�C���I�t�Z�b�g�A�f�B���N�g���I�t�Z�b�g�Ainode�ԍ��j�͂��ꂼ��Ⴂ�܂����Atarfs�ł̓f�B�X�Ninode�Ƃ������ʃf�[�^���Ǘ����Ă��܂��̂ŁA�_���ϊ��p�̏����͓��ꂷ�邱�Ƃ��ł��A�����ʂ����Ȃ��ł���킯�ł��B�����āA�_���ϊ��������̂�Linux�J�[�l���ˑ��͂Ȃ��A���W�b�N���؂̓��[�U�[��ԂŎ�y�ɍs�����Ƃł���̂ŁA�o�O�����荞�ޗ]�n�̓O�b�ƒႭ�Ȃ�܂��B

����6�F�A�ڑ�2��u�f���炵���t�@�C���V�X�e���̃f�[�^�Ǘ��v���������������B


����7�F�A�ڑ�4��utar�t�@�C���ɖ��@�������Ă݂悤�I ����1�v���������������B


����8�FLinux�J�[�l����inode�Ƌ�ʂ��邽�߁A���^�f�[�^��inode�́u�f�B�X�Ninode�v�ƌĂԂ��Ƃɂ��܂��B


�⑫2�F�f�B�X�NI/O����

�@tarfs�̃f�[�^�͕����f�B�X�N��ɂ���̂ŁALinux�̎d�g�݂Ƃ��āg�t�@�C���V�X�e���̃f�[�^���ǂ�����ēǂݍ��ނ̂��h�𒲂ׂȂ���΂Ȃ�܂���B

�@���R�Ȃ���ALinux�ɂ̓f�B�X�NI/O�����s����ėp���������낢��Ɨp�ӂ���Ă��܂����A�g���₷�����Ȃ��̂�I�肷��K�v������܂��B�����͂����Ă��A��݂����ɒ��ׂ�̂���ςȂ킯�ł��c�c�B���������Ƃ��́A���ł������ł����A���ׂ��񂪂ǂ�����Ă��邩��q������̂���Ԃ̋ߓ��ł��B

�@����Ȃ킯�ŁALinux�W���̃t�@�C���V�X�e���ł���uext3�v��������Ƃ̂����Ă݂�Ɓifs/ext3/super.c�́uext3_fill_super()�v�j�A�X�[�p�[�u���b�N�f�[�^�̃f�B�X�N�ǂݍ��ݏ����ł́usb_bread()�v���g���Ă���悤�ł��B���̊֐��̎d�l�͈ȉ��̂Ƃ���ł��B

struct buffer_head * sb_bread(struct super_block *sb, sector_t block)
sb �Ώۃt�@�C���V�X�e����super_block�\����
block �ǂݍ��݃I�t�Z�b�g�ʒu�i�t�@�C���V�X�e���̃u���b�N�T�C�Y�P�ʁj
�߂�l �Ώۃt�@�C���V�X�e�����g�p���镨���f�B�X�N����f�[�^��ǂݍ��݁A���̌��ʂ�buffer_head�\���̂Ƃ��ĕԂ����

�@����Ȃ�g���₷�����ł����Aext3��ق��̃t�@�C���V�X�e���ł��g�p����Ă���̂ŁAtarfs�ł����̊֐����g�p���邱�Ƃɂ��܂����B



�@�@�@�@�@�@ 1|2 ���̃y�[�W��

Copyright © ITmedia, Inc. All Rights Reserved.

'; } else { return false; } recoBox.innerHTML = html; return recoBox; }; // �֘A�L�����擾���č�����g������i�����L���j var setRecomend = function(type) { // �L�[���[�h�����Ƃ�html ���擾 var wp = setRecomendItem(); if(!wp){ cx_count(test_id + '_default_imp','impression'); console.log(test_id + '_default_imp','impression'); return false; } // ���X�g��n����html���쐬 var recoBox = wplistHtml(wp,type); // target ���擾 var target; if(d.getElementById('endlinkConnection')){ console.log('�֘A�L��'); target = d.getElementsByClassName('endlink')[0]; } else { console.log('indexlink'); target = d.getElementById('colBoxIndexlink'); } // target �Ƀ��R�����h������ target.parentNode.insertBefore(recoBox, target); cx_count(test_id + '_' + wp.group + '_imp','impression'); console.log(test_id + '_' + wp.group + '_imp','impression'); // a �^�O���擾���� var atags = recoBox.getElementsByTagName('a'); for (var j=0; j 0) { var box_list = d.getElementsByClassName('cmsBodyBox'); for (var i=0; i
' }, { 'src':'' }, {}] }; setForumCornerLink(cornerlink); })();