�ŏI��ł́A�O��g�p����Android���ڃ{�[�h�ɃI���W�i���̃t�@�C���V�X�e���utarfs�v��g�ݍ��ޕ��@���Љ��I
�@�����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
�@�������̂Ƃ���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
��2�̍�Ƃ��K�v�ƂȂ�܂��B
�@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
�@�}1�Ŏ������悤�ɁALinux��VFS�w�����Ă�����C���^�[�t�F�C�X�̎�ނɂ͈ȉ��̂��̂�����܂��B�����̃C���^�[�t�F�C�X����������A�t�@�C���V�X�e���Ƃ��ċ@�\���Ă���܂��B
�@�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
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
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
4�Dsuper_block�̃I�y���[�V����
�@super_block�I�y���[�V�����ł́A�t�@�C���V�X�e�����쏈����o�^���܂��i�\4�j�B
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
�@�����܂ł���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
�@���Ȃ݂ɁAtarfs�̃��W���[�����폜����ꍇ�́A�uunregister_filesystem()�v�̈�����tarfs��file_system_type��n���܂��i�}3�j�i��5�j�B
�@�Ō�Ɂ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
�@�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
�@��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
�@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
Copyright © ITmedia, Inc. All Rights Reserved.