致谢 | 第5-6页 |
摘要 | 第6-11页 |
Abstract | 第11-12页 |
1 Introduction | 第21-24页 |
1.1 Problem Statement | 第21-22页 |
1.2 Linux Kernel Module and Device Driver | 第22页 |
1.3 Verification of Linux kernel Device Drivers | 第22-23页 |
1.4 Fault Injection Technique | 第23-24页 |
2 Related Works for Fault Injection | 第24-33页 |
2.1 Fault Injection | 第24-26页 |
2.2 Major Categories | 第26-32页 |
2.2.1 Hardware Based Fault Injection | 第26-27页 |
2.2.1.1 Advantages | 第26-27页 |
2.2.1.2 Disadvantages | 第27页 |
2.2.1.3 Examples of Tools | 第27页 |
2.2.2 Software Based Fault Injection | 第27-29页 |
2.2.2.1 Advantages | 第28页 |
2.2.2.2 Disadvantages | 第28页 |
2.2.2.3 Examples of Tools | 第28-29页 |
2.2.3 Simulation Based Fault Injection | 第29-30页 |
2.2.3.1 Advantages | 第29-30页 |
2.2.3.2 Disadvantages | 第30页 |
2.2.3.3 Examples of Tools | 第30页 |
2.2.4 Emulation Based Fault Injection | 第30-31页 |
2.2.5 Hybrid Fault Injection | 第31-32页 |
2.3 Summary | 第32-33页 |
3 Various Tools and Techniques for Linux Fault Injection | 第33-45页 |
3.1 Introduction | 第33页 |
3.2 Overview of Various Tools | 第33-34页 |
3.3 Types of Fault Injection Frameworks | 第34-44页 |
3.3.1 Linux Fault-Injection Framework | 第34-35页 |
3.3.2 SCSI Fault Injector Framework | 第35-37页 |
3.3.2.1 Testing Error Handler Using SCSI Fault Injection | 第35页 |
3.3.2.2 Specifying the Type of SCSI Fault | 第35-36页 |
3.3.2.3 SCSI Fault Injector | 第36页 |
3.3.2.4 Working on SCSI fault injection framework | 第36-37页 |
3.3.2.5 SCSI Fault Injection Method | 第37页 |
3.3.2.6 Example of Linux Software RAID Evaluation | 第37页 |
3.3.2.7 Testing Procedure | 第37页 |
3.3.2.8 Advantages | 第37页 |
3.3.3 KITO | 第37-39页 |
3.3.3.1 Criteria for choosing data structures for analysis | 第38页 |
3.3.3.2 KITO Framework for Data Structure | 第38-39页 |
3.3.3.3 Advantages and Disadvantages | 第39页 |
3.3.4 KEDR | 第39-41页 |
3.3.4.1 General fault simulation method for KEDR | 第40页 |
3.3.4.2 Advantages and disadvantages | 第40-41页 |
3.3.5 QEMU-Based Fault Injection Framework | 第41-42页 |
3.3.5.1 QEMU as a fault injection Tool | 第41-42页 |
3.3.5.2 Framework architecture of QEMU Fault Injection | 第42页 |
3.3.5.3 Advantages and Disadvantages | 第42页 |
3.3.6 ADFI | 第42-44页 |
3.3.6.1 Working of ADFI | 第43页 |
3.3.6.2 Runtime fault injection framework for ADFI | 第43页 |
3.3.6.3 Advantages and Drawbacks | 第43-44页 |
3.4 Summary | 第44-45页 |
4 Implementation of Fault Injection for Linux Device Driver Testing | 第45-88页 |
4.1 Introduction | 第45-46页 |
4.1.1 Linux fault simulation | 第45-46页 |
4.1.1.1 Failure Simulation with Targeted Development | 第46页 |
4.1.1.2 Randomized Failure Simulation | 第46页 |
4.1.1.3 Systematic Failure Simulation | 第46页 |
4.2 General Architecture | 第46-47页 |
4.3 General Work Flow | 第47-49页 |
4.4 Experiments for Linux Fault Injection Testing Based on Various Tools | 第49-86页 |
4.4.1 Experiments for Linux Kernel Fault Injection Framework | 第49-58页 |
4.4.1.1 Platform and tools to Operate Experiment for LFI | 第49页 |
4.4.1.2 General Problem Statement for LFI | 第49页 |
4.4.1.3 Available Fault Injection Capabilities and Configuration ofCapabilities Behavior | 第49-51页 |
4.4.1.4 Compilation of custom kernel | 第51-56页 |
4.4.1.5 Selection of fault type and parameters | 第56页 |
4.4.1.6 Injection of fault on Module and Tests | 第56-58页 |
4.4.2 Experiments for Linux Test Project | 第58-66页 |
4.4.2.1 Platform and tools to operate experiment for LFP | 第58页 |
4.4.2.2 General problem statement for LTP | 第58页 |
4.4.2.3 Compiling a custom kernel for LTP | 第58-60页 |
4.4.2.4 Installation of LTP by Quick Start | 第60-61页 |
4.4.2.5 LTP supports to LFI | 第61页 |
4.4.2.6 Test cases in LTP | 第61-62页 |
4.4.2.7 Runltp Test-cases for fault injection: | 第62页 |
4.4.2.8 Injection of faults on default Test | 第62-63页 |
4.4.2.9 Shell script and parameters to inject Fault | 第63-64页 |
4.4.2.10 Injection of faults over selected tests | 第64-66页 |
4.4.3 Fault Injection Testing for Device Drivers Based on KEDR | 第66-76页 |
4.4.3.1 General problem statement for KEDR | 第67页 |
4.4.3.2 Platform and tools to operate experiments on KEDR | 第67页 |
4.4.3.3 Basic requirement for KEDR building | 第67-68页 |
4.4.3.4 Installation of KEDR | 第68页 |
4.4.3.5 Analyzing the Sample Module | 第68-70页 |
4.4.3.6 Fault Simulation on KEDR | 第70页 |
4.4.3.7 Fault Simulation parameters | 第70页 |
4.4.3.8 Fault Simulation for kmalloc on KEDR built in example sample-target | 第70-72页 |
4.4.3.9 Fault Simulation for copy_from_user and copy_to_user on characterdevices using KEDR | 第72-73页 |
4.4.3.10 Fault simulation for custom kernel module | 第73页 |
4.4.3.11 Fault simulation for kmalloc over custom module | 第73页 |
4.4.3.12 Fault Simulation for device driver over custom kernel module | 第73-74页 |
4.4.3.13 Detecting Memory Leaks for custom kernel module | 第74-76页 |
4.4.4 RAID Fault Injection Testing Based on SCSI Fault Injector | 第76-86页 |
4.4.4.1 General problem statement for SCSI | 第76-77页 |
4.4.4.2 Platform and tools to operate SCSI | 第77页 |
4.4.4.3 General necessities of SCSI | 第77-82页 |
4.4.4.4 Installation of SCSI fault injector source and mdadm | 第82页 |
4.4.4.5 Creation of and raidl array | 第82-84页 |
4.4.4.6 Injection of Fault on RAID1 /dev/md0 | 第84-85页 |
4.4.4.7 Installation of system tap | 第85-86页 |
4.4.4.8 Selection and Injection of a Fault type on stap | 第86页 |
4.4.4.9 Waiting for SystemTap to start | 第86页 |
4.5 Summary | 第86-88页 |
5 Test Results | 第88-94页 |
5.1 Test Results for Linux Test Project | 第88-90页 |
5.2 KEDR Test Results | 第90-91页 |
5.3 Test Results for SCSI Fault Injector | 第91-93页 |
5.4 Summary | 第93-94页 |
6 Conclusions and Future Work | 第94-99页 |
6.1 Comparison of kedr-sample-target over Different Conditions | 第94-95页 |
6.2 Comparing Space Requirements for All Tools | 第95页 |
6.3 Comparison Made on Time Requirement for Each Tool | 第95-96页 |
6.4 Fault Support Comparison | 第96页 |
6.5 Comparison Made on Number of Test Pass and Fail | 第96-97页 |
6.6 Future Work | 第97-99页 |
参考文献 | 第99-105页 |
作者简历及攻读硕士学位期间取得的研究成果 | 第105-107页 |
学位论文数据集 | 第107-108页 |