




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京邮电大学课程设计报告目 录实验一 Linux启动优化4一 实验目的4二 实验内容与步骤41内核态启动优化42 用户态启动优化43 测试系统总的启动时间4三 实验原理4四 实验结果及分析41 内核态启动优化42开机画面81) 开机画面字符隐藏技术82) 开机画面调出83)内核态开机画面更改94)开机用户态界面更改11五 实验总结11实验二Linux系统内核/系统配置小型化12一 实验目的12二 实验内容12三 实验设计原理12四 实验步骤12Code maturity level options(代码成熟度选项)13Processor type and features(处理器类型和特色)14Loadable module support(可加载模块支持) (1)、Enable loadable module support (CONFIG_MODULES) Y/n/? 选择内核是否支持加载模块。15General setup(一般设置)16Plug and Play configuration(即插即用设备支持)17Block devices(块设备)18Networking options(网络选项)18SCSI support(SCSI支持)19Network device support(网络设备支持)19Character devices(字符设备)20Filesystems(文件系统)21Console drivers(控制台驱动)22ATA/IDE/MFM/RLL support23Sound(声音)23五实验结果及分析23六 实验总结25实验三 ARM/ucLinux-SkyEye的安装、配置与集成26一 实验目的26二 实验环境26三 实验内容与步骤261 将下载的4个数据包安装并进入目录home/buptlynn/env262 安装skyeye283 安装arm-elf-tools 交叉编译器 (用于编译ucLinuxSkyEye)324.安装uclinux325.配置386.运行397测试418运行五条常用指令42四 实验总结43实验四ARM/ucLinux-SkyEye下BusyBox集成Shell小型化44一 实验目的44二 实验环境44三 实验内容与步骤44四 实验总结48实验五 Linux 环境下的Ramdisk技术及其实验49一 实验目的49二 实验环境49三 实验内容与步骤49四 实验总结55五 问题和解决方法55六 附录55实验六 Linux 环境下嵌入式数据库mSQL的集成57一 实验目的57二 实验环境57三 实验内容与步骤57四 实验总结62五 问题和解决方法62六 附录63实验一 Linux启动优化一 实验目的Linux 系统从启动到登录 shell 界面需要花费较长时间,在普通微机上的启动过程需要十几秒或更长。如果要启动 X 界面,那花费的时间就更多了。启动时间过长对嵌入式系统而言,如信息家电产品(机顶盒),是无法接受的。Linux 系统的启动由内核态下的启动和用户态下的启动组成。利用本实验中采取的多种方法,可以简化 Linux 系统启动过程,提高 Linux 系统启动速度,适应嵌入式系统快速启动和实时应用的需要。二 实验内容与步骤实验系统:Red Hat Enterprise Linux 9(VMware 9.0 模拟/Linux 内核为 2.4.20-8)1内核态启动优化1) 测量几个较大代码模块的启动时间2) 更改 MAX_HWIFS ,减小检测IDE过程的启动时间2 用户态启动优化1) 开机画面字符隐藏技术2) 开机画面隐藏/调出3) 开机画面更换3 测试系统总的启动时间三 实验原理根据 Linux 源代码,从根本上分析 Linux 启动原理四 实验结果及分析1 内核态启动优化在 Redhat 9 中, 安装内核开发包, 能得到 Linux 源代码。 位于/usr/src/linux-2.4目录下。修改linux/init/main.c,在所有的需要检测的代码段添加条件编译TIME_TEST常量。测试的代码段包括console_init(), vfs_caches_init,和pci_init()等。改动完成之后,编译内核1, 清除源码树:make mrproper2, 生成现有.config文件:make oldconfig3, 配置内核:make menuconfig4, 生成依赖关系:make dep5, 编译内核:make bzImage6, 编译模块:make modules7, 安装模块:make modules_install8, 安装内核:make install9, 重起:init 6重启系统之后,选择做好的系统,应为上面2.4.20-8custom那个。启动结束之后,用dmesg| grep “second”得到所有设定的打印位置的记录5处较长代码模块的时间打印如下:通过时间检测,我们发现了最耗时间的是_initcall_ide_init这个函数,如下图所示。花很多时间在ide接口检测上,代码如下,既然知道检测时间比较长,所以,改变后的ide数量 为3时间改变尺度对比2开机画面1) 开机画面字符隐藏技术在/etc/grub.conf 中,在 kernel 一行后添加 console=/dev/tty2 CONSOLE=/dev/ty2 后,重启即能隐藏内核态的输出信息。通过ALT+F2就可以调出内核态的输出信息。隐藏之后的开机界面Alt+F2(切换到tty2终端)可以调出打印信息2) 开机画面调出默认情况下,开机画面是系统内核态打印输出(如上图),调出小企鹅通过在系统的启动参数后面加vga=0x301可以吧小企鹅调出来.3)内核态开机画面更改改变/drivers/video/fbcon.c中宏定义的logo大小最终内核态开机界面为4)开机用户态界面更改五 实验总结通过学习内核源码,充分体验了内核的代码量, 分析了内核的代码,很受震撼,同时也学到了不少东西.实验二Linux系统内核/系统配置小型化一 实验目的1个Linux系统发行版本可多达上百兆,功能众多,支持众多硬件设施。但在一个实际Linux应用系统中,并非用到Linux系统发行版本所提供的全部功能。所以,可以针对实际计算机系统的硬件配置及其应用需求,对Linux系统内核/系统进行合理的选择和裁减,得到一个更接近实际需要的、无冗余、启动和运行更为高效的Linux系统。 例如,嵌入式系统存储容量有限、支持的硬件外设类型也有限,因此可通过内核/系统配置与裁减,选择嵌入式应用系统所必需的一些内核/系统功能(如设备驱动程序)进行配置。由此得到一个满足系统功能、体积更小的、可放入嵌入式系统的容量较小Flash中的Linux系统内核。 本实验要求学生针对PC机上的Linux系统发行版本,利用make menuconfig方法,在对硬件深入了解的基础上,选择相应的设备驱动程序和与主机CPU相关的Linux部分,进行Linux系统内核/系统配置,掌握Linux系统内核/系统的配置方法。二 实验内容利用makemenuconfig方法,将不必要的内核功能去掉,只留下最基本的一些功能模块,如CPU为i586、IDE 设备驱动、TCP/IP协议栈、ne2000网卡驱动、Minix文件系统等,完成内核配置工作。比较配置前后Linux内核/系统的体积大小、功能差异,指明配置过程中各配置选项的作用三 实验设计原理根据make menuconfig中的菜单项配置Linux内核四 实验步骤开始时使用make bzImage命令查看内核大小使用make menuconfig配置内核,为了最小化内核,我们将一些不必要的功能都去掉。各功能简介:Code maturity level options(代码成熟度选项)Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) N/y/? 如果用户想要使用还处于测试阶段的代码或驱动,可以选择“y”。如果想编译出一个稳定的内核,则要选择“n”。这里我们选择n,使用稳定成熟的代码。 Processor type and features(处理器类型和特色)(1)、Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) PPro/6x86MX 选择处理器类型,缺省为Ppro/6x86MX。这里我们选择386。(2)、Maximum Physical Memory (4GB, 16GB)内核支持的最大内存数,缺省为4G。(3)、Math emulation (CONFIG_MATH_EMULATION) N/y/? 协处理器仿真,缺省为不仿真。不选。(4)、MTRR (Memory Type Range Register) support (CONFIG_MTRR) N/y/?选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。不选。(5)、Symmetric multi-processing support (CONFIG_SMP) Y/n/? 选择内核将支持对称多处理器。最小化系统中,使用的是 的处理器,最大内存 。只选择(1)(2)两厢,其他高级特性不选择。Loadable module support(可加载模块支持)(1)、Enable loadable module support (CONFIG_MODULES) Y/n/? 选择内核是否支持加载模块。(2)、Kernel module loader (CONFIG_KMOD) N/y/? 内核将自动加载那些可加载模块,否则需要用户手工加载。为了简化系统,在这个实验里不选择可加载内核模块的支持,选择N.General setup(一般设置)(1)、Networking support (CONFIG_NET) Y/n/? 该选项设置是否在内核中提供网络支持。(2)、PCI support (CONFIG_PCI) Y/n/? 该选项设置是否在内核中提供PCI支持。(3)、PCI access mode (BIOS, Direct, Any) Any 该选项设置Linux探测PCI设备的方式。选择“BIOS”,Linux将使用BIOS;选择“Direct”,Linux将不通过BIOS;选择“Any”,Linux将直接探测PCI设备,如果失败,再使用BIOS。(4)Parallel port support (CONFIG_PARPORT) N/y/m/?是否支持平行口。Plug and Play configuration(即插即用设备支持)(1)、Plug and Play support (CONFIG_PNP) Y/m/n/?内核将自动配置即插即用设备。(2)、ISA Plug and Play support (CONFIG_ISAPNP) Y/m/n/?内核将自动配置基于ISA总线的即插即用设备。我们不需要配置,全不选。Block devices(块设备)(1)、Normal PC floppy disk support (CONFIG_BLK_DEV_FD) Y/m/n/?内核是否提供对软盘的支持。(2)Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) Y/m/n/?选择内核是否提供对增强IDE硬盘、CDROM和磁带机的支持。Networking options(网络选项)(1)、Packet socket (CONFIG_PACKET) Y/m/n/? 选择是否使一些应用程序使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。(2)、Network firewalls (CONFIG_FIREWALL) N/y/? 选择内核是否将支持防火墙。(3)、TCP/IP networking (CONFIG_INET) Y/n/? 内核是否支持TCP/IP协议。(4)The IPX protocol (CONFIG_IPX) N/y/m/? 选择内核是否支持IPX协议。(5)、Appletalk DDP (CONFIG_ATALK) N/y/m/? 选择内核是否支持Appletalk DDP协议。SCSI support(SCSI支持)如果用户要使用SCSI设备,可配置相应选项。这里我们不需要。Network device support(网络设备支持)Network device support (CONFIG_NETDEVICES) Y/n/? 选择内核是否提供对网络驱动程序的支持。在Ethernet (10 or 100Mbit)(10M或100M以太网)设置中,系统提供了许多网卡驱动程序,我们只要选择自己的网卡驱动就可以了。Character devices(字符设备)(1)、Virtual terminal (CONFIG_VT) Y/n/? 选择内核是否支持虚拟终端。(2)、Support for console on virtual terminal (CONFIG_VT_CONSOLE) Y/n/?选择内核是否将一个虚拟终端用作系统控制台。(3)、Standard/generic (dumb) serial support (CONFIG_SERIAL) Y/m/n/?选择内核是否支持串行口。(4)、Support for console on serial port (CONFIG_SERIAL_CONSOLE) N/y/?选择内核是否将一个串行口用作系统控制台。这里我们需要选择(1)和(2)。Filesystems(文件系统)(1)、Quota support (CONFIG_QUOTA) N/y/? 选择内核是否支持磁盘限额。(2)、Kernel automounter support (CONFIG_AUTOFS_FS) Y/m/n/? 选择内核是否提供对automounter的支持,使系统在启动时自动 mount远程文件系统。(3)、DOS FAT fs support (CONFIG_FAT_FS) N/y/m/? 选择内核是否支持DOS FAT文件系统。(4)、ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) Y/m/n/?选择内核是否支持ISO 9660 CDROM文件系统。(5)、NTFS filesystem support (read only) (CONFIG_NTFS_FS) N/y/m/?选择用户是否以只读方式访问NTFS文件系统。(6)、/proc filesystem support (CONFIG_PROC_FS) Y/n/? /proc是存放Linux系统运行状态的虚拟文件系统,该项必须选择“y”。(7)、Second extended fs support (CONFIG_EXT2_FS) Y/m/n/? EXT2是Linux的标准文件系统,该项也必须选择“y”。Console drivers(控制台驱动)VGA text console (CONFIG_VGA_CONSOLE) Y/n/? 选择用户是否在标准的VGA显示方式下使用Linux了。ATA/IDE/MFM/RLL support 这个需要选上,IDE设备驱动还是要有的,除非你不接硬盘,把ATA/IDE/MFM/RLL support选上后,IDE,ATA and ATAP1 Block devices就可以进入了.。Sound(声音)Sound card support (CONFIG_SOUND) N/y/m/? 选择内核是否提供对声卡的支持。我们不需要选择。还有Memory Technology Device Support,Parallel port support,Multiple device support,Telephy support,Fusion MPT device support,IEEE 1394(FireWire) support,I2O dexice support ,Amateur Radio support业余无线电支持、IrDA(infrafed) support红外线支持、ISDN subsystem 电话支持、Old CD-ROM drivers老的CD-ROM设备支持、Input core support,USB support、Bluetooth support、kernel hacking都不必要。五实验结果及分析查看文件中的配置参数:CONFIG_M386=yCONFIG_X86_LI_CACHE_SHIFT=4CONFIG_RWSEM_GENERIC_SPINLOCK=yCONFIG_X86_PPRO_FENCE=yCONFIG_3GB=yCONFIG_NET=yCONFIG_PCI=yCONFIG_KCORE_ELF=yCONFIG_BINFMT_ELF=yCONFIG_BLK_DEV_LOOP=yCONFIG_BLK_DEV_RAM=yCONFIG_BLK_DEV_RAM_SIZE=4096CONFIG_BLK_DEV_INITRD=yCONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_INET=yCONFIG_IDE=yCONFIG_BLK_DEV_IDE=yCONFIG_BLK_DEV_IDECD=yCONFIG_NETDEVICES=yCONFIG_NET_ETHERNET=yCONFIG_NET_PCI=yCONFIG_NE2K_PCI=yCONFIG_VT=yCONFIG_VT_CONSOLE=yCONFIG_PROC_FS=yCONSOLE_EXT2_FS=yCONFIG_VGA_CONSOLE=y使用命令:make dep 生成依赖关系;make bzImage 生成系统镜像。查看内核:发现内核明显减小了。实验三 ARM/ucLinux-SkyEye的安装、配置与集成一 实验目的安装SkyEye嵌入式硬件模拟器,配置嵌入式操作系统ucLinux,建立基于SkyEye 的ARM/ucLinux嵌入式系统平台。二 实验环境硬件:Intel i586 PC机 软件:Red Hat Linux7.1 (Linux内核版本为2.4.2) 或更高版本,SkyEye,ucLinux 或:Windows操作系统,Cygwin,SkyEye,ucLinux 注: SkyEye和ucLinux可从“光盘-源码开放的嵌入式系统软件分析与实践基于SkyEye和ARM开发平台”中获取。 windows下的Linux模拟软件Cygwin可以从其网站http:/上下载并安装最新版本。 三 实验内容与步骤1 将下载的4个数据包安装并进入目录home/buptlynn/env 首先,Red Hat 中如果不下软件不能进行主机和虚拟机之间的文件共享和拖动,所以我们就secureCRT软件进行文件传输2 安装skyeye2.1 解压skyeye:tar -jxvf skyeye-0.8.6.tar.bz2 解压的过程中由于文件过多过快,所以只展现最终的解压效果:2.2 进入skyeye: cd skyeye 2.3 预处理: ./configure -target=arm-elf -prefix=/usr/local 2.4 编译安装: make;make install 3 安装arm-elf-tools 交叉编译器 (用于编译ucLinuxSkyEye) 3.1 如果arm-elf-tools-20030314.sh没有执行权限,则增加执行权限;3.2 安装: /arm-elf-tools-20030314.sh 4.安装uclinux4.1 解压: tar -zxvf uClinux-dist-20030522.tar.gz 解压后的结果:Skyeye和uClinux-dist两个文件就都解压好了。4.2进入解压出的目录: cd uClinux-dist 4.3 执行:make menuconfig 4.4 选择模拟平台: Target Platform Selection-Vendor/Product-GDB/ARMulator,需要选择Customize Kernel Settings; 4.5 退出,保存; 4.6 继续配置uclinux以支持网络: Network device support-Ethernet (10 or 100Mbit): SkyEye ne2k ethernet support(for ARMUlator); 4.7 退出,保存; 4.8 编译生成:make dep;make 编译成功。5.配置5.1 在工作目录(/ivy/uClinux-dist)下建立专门用于基于AT91X40开发板的SkyEye硬件配置文件skyeye.conf: 5.2 建立文件系统的链接,需要在目录/ivy/uClinux-dist目录下执行如下命令: #ln -s images/romfs.img boot.rom 6.运行 6.1 在/ivy/uClinux-dist目录下:/usr/local/bin/skyeye linux-2.4.x/linux 6.2 在skyeye环境下: tar sim load run 经过上面的操作,即可完成7测试在skyeye内ping 在skyeye外ping测试成功。8运行五条常用指令ls cd:pwd:date:cat :实验四ARM/ucLinux-SkyEye下BusyBox集成Shell小型化一 实验目的理解Linux根文件系统组织结构,将应用程序BusyBox放入Linux文件系统,在嵌入式ARM/ucLinux-SkyEye环境下,集成小型化shell BusyBox。二 实验环境硬件:Intel i586 PC机 软件:Red Hat Linux7.1 (Linux内核版本为2.4.2) 或更高版本,SkyEye,ucLinux 或:Windows操作系统,Cygwin,SkyEye,ucLinux 三 实验内容与步骤参照按照参考文献2“6.3.3嵌入式应用软件BusyBox”、参考文献1“6.4.3小型化shell”的内容,用BusyBox替换原有的shell。1内核归位Make mrproper2使用make menuconfig设置内核2.1选择自定义Vendor的设置2.2配置shell2.3选择其他的shell,返回上一级2.4配置busybox选择一些常见的命令选择要用的shell退出,make dep;make再次进入skyeye环境在skyeye环境下进行加载运行,就进入了BusyBox。在新的shell下运行各类shell命令,验证替换过程的正确性执行一系列测试命令发现命令都可用,实验成功实验五 Linux 环境下的Ramdisk技术及其实验一 实验目的 ramdisk技术利用内存模拟硬盘空间,将一个内存块作为1个盘分区使用,可以提高访问速度。多某些特定的访问频率高的文件,将其存储于ramdisk上,可以提高访问性能。 在嵌入式系统中,利用ramdisk技术,可以实现应用程序预加载,即初始化完成后立即加载,而不是等到需要使用时才从硬盘读取,从而提高系统速度:将一些系统启动后经常使用的程序,如浏览器、Xwindows,利用ramdisk将整个应用程序的可执行文件及其库复制到内存,然后修改可执行程序加载的搜索路径,用ramdisk所在的目录代替原来的可执行文件的目录路径。 本实验通过Linux环境下ramdisk的配置使用,了解ramdisk的原理和实现机制,验证其对改善系统运行速度的有效性。二 实验环境 硬件:Intel PC机 软件:Red Hat Linux 9 三 实验内容与步骤按照参考文献1“6.3 ramdisk技术”相关内容,1.察看内核选项CONFIG_BLK_DEV_RAM,确认Linux内核支持ramdisk选项 从Red Hat 6.0开始,默认安装本身就有对ramdisk的支持。因此,ramdisk使用非常简单,所要做的就是格式化一个ramdisk设备,然后安装(mount)到相应目录结构下即可。通过命令ls -al /dev/ram可以查看系统可利用的ramdisk设备的数目。在设置以后,这些ramdisk才发挥作用。 查看可用ramdisk设备2. 创建/格式化1个ramdisk 设备,并安装到文件系统的相应目录结构下创建一个ramdisk的过程为(1) 为ramdisk创建一个目录/挂载点,如mkdir /mnt/ramdisk0(2) 格式化/创建一个文件系统, 如mke2fs /dev/ram0(3) 将这个ramdisk安装(mount)到/mnt/ramdisk0目录下 然后就可以将该目录作为一个分区使用。格式化ramdisk安装到RamDisk0上3 运行命令“df k /dev/ram0”,查看可使用的ramdisk空间大小 默认的ramdisk的大小为4MB=4096K bytes。在创建ramdisk文件系统时可以得到ramdisk大小的信息. 安装完ramdisk分区之后, 运行命令 df k /dev/ram0 查看可以真正使用的ramdisk空间大小, 因为创建文件系统时会占用一些空间. 查看真正使用大小4 重新修改ramdisk空间大小/etc/grub.conf修改Ramdisk大小5.将Linux系统内常用的目录,如/tmp目录安装为ramdisk,通过打开一个大文件,并对文件进行读、写操作,观察验证系统运行速度是否加快。可以利用系统自身的时间测量函数。(截图为读取操作 写操作见源代码)要求: 文件100M测试文件大小:给tmp分配ramdisk将/tmp挂载ramdisk 读文件的脚本程序:打开文件速度 快于 不挂载ramdisk (写操作和读操作均为挂载ramdisk要更快)挂载ramdisk不挂载ramdisk 作为ramdisk的1个应用,可以将/temp目录安装为ramdisk, 若系统中有很多程序使用/temp目录的话,则可以很明显地加快系统速度, 但是每次系统重新启动时, 这些暂时数据都会丢失。写入ramdisk测试比较:文件大小100M写入磁盘一个文件,测试其时间共计时间1min46s写入ramdisk时测试时间共计时间1min16s6 编写一个文件访问程序,对比将此文件分别存储于外设硬盘、ramdisk分区时,程序的执行速度。要求:程序反复多次读、写文件,以便对比不同方式下的访问时间差异。(截图为读取操作进行比较 写操作见源代码)上:在ramdisk中 下:未使用ramdisk 将文件放在指定位置进行访问所花时间 由图可见在ramdisk中读取快(写操作也为在ramdisk中更快)源代码读操作#!/bin/sh Date /root/timeRecWhile read -r lineDo Echo $lineDone /root/timeRec-#!/bin/sh Date /root/timeRec2While read -r lineDo Echo $lineDone /root/timeRec2写操作#!/bin/sh Date /root/timeRecWhile read -r lineDo Echo $line /tmp/file.logDone /tmp/timeRec-#!/bin/sh Date /root/timeRec2While read -r lineDo Echo $line /tmp/file.logDone /tmp/timeRec2四 附录部分代码见上。挂载到/tmp上进行大文件读写代码。读操作#!/bin/sh Date /root/timeRecWhile read -r lineDo Echo $lineDone /tm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年销售岗位面试攻略及经典预测题解析
- 2025年初中化学特岗教师招聘考试高频考点梳理
- 2025年计算机等级考试四级网络工程师模拟题及答案解析
- 电力基础知识培训资料课件
- 2025年财务管理师考试模拟题及解析
- 2025年人工智能面试模拟题详解及答案
- 2025年市场推广专员招聘笔试模拟题及参考答案集萃
- 2025年国际商务谈判策略与沟通技巧题库
- 2025年煤气工程岗位面试技巧大揭秘模拟题集与答案
- 2025年银行柜员岗位招聘考试模拟卷及答案解析
- 2024年泰州市靖江市公安局招聘警务辅助人员真题
- 国际快递基本知识培训课件
- 塔吊拆除安全操作方案模板
- 巡检员质量培训
- 不锈钢棚施工方案
- 第2章 动车组检修工艺基础动车组维护与检修
- 筋针疗法牛君银培训课件
- 溺水伤亡事故应急预案演练方案
- 公路硬化报告范文
- 智慧羊肚菌种植示范基地解决方案
- 纳迪亚之宝全流程攻略 100%完结完整通关指南
评论
0/150
提交评论