当前位置:首页 » 编程软件 » linux内核重新编译

linux内核重新编译

发布时间: 2023-04-01 11:34:06

A. 重新编译linux内核

不放以前的系统里放什么地方?另一台计算机里?之后你这个机器启动时自己跑到那台计算机上要数据启动完后,在自己跑回来?
initrd 是内核启动的一个虚拟的磁盘。作用是在 Linux 内核启动时,不直接进入硬盘上的 root 分区,而是进入内存里面的虚拟的 root 分区。
这个用意是当内核不能直接读取硬盘时(比如用了内核没有自带的驱动的硬盘、分区。或者 root 分区在网络上)。那么就可以用 initrd 里面的驱动来过渡进入正确的 root ,或者干脆就停在 initrd 模拟的内存盘里面。

PS:我编译内核都是 make xconfig ; make ; make moles_install ; make install
前3个不解释,最好一个其实就是吧编译好的内核复制到 /boot 里面。并且根据这个目录里面的某些特点。进行一些操作。

B. 怎么重新编译linux服务器内核

make
config首先配置内核,生成内核配置文件,如果是服务器上的,建议使用编辑好的内核配置文件,自己在服务器上配置比较麻烦;
make再根据生成的配置文件进行编译;
找到新的内核就可以使用

C. linux为什么要重新编译内核

.config 是配置编译内核的最初步骤,你要编译驱动程序,就必须要了解这个,多上网查下资料
然后重新编译
Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。
新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核。
通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
(1)自己定制编译的内核运行更快(具有更少的代码)
(2)系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
(3)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
(4) 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些
编译内核时三个重要文件

D. 如何编译Linux内核

1、大概步骤:
1、安装开发包组
2、下载源码文件
3、.config:准备文本配置文件
4、make menuconfig:配置内核选项
5、make [-j #]
6、make moles_install:安装模块
7、make install :安装内核相关文件
安装bzImage为/boot/vmlinuz-VERSION-RELEASE (去boot目录下查看)
生成initramfs文件
8、编辑grub的配置文件
2、编译配置选项
配置内核选项
支持“更新”模式进行配置: make help
(a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项
(b) make menuconfig:基于curses的文本窗口界面
(c) make gconfig:基于GTK (GNOME)环境窗口界面
(d) make xconfig:基于QT(KDE)环境的窗口界面
支持“全新配置”模式进行配置
(a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置
(b) make allyesconfig: 所有选项均回答为“yes“
(c) make allnoconfig: 所有选项均回答为"no“
3、编译
全编译:make [-j #]
编译内核的一部分功能:
a) 只编译某子目录中的相关代码:
# cd /usr/src/linux
# make dir/
(b) 只编译一个特定的模块:
# cd /usr/src/linux
# make dir/file.ko
例如:只为e1000编译驱动:
#make drivers/net/ethernet/intel/e1000/e1000.ko
4、编译内核
如何交叉编译内核:
编译的目标平台与当前平台不相同;
# make ARCH=arch_name
要获取特定目标平台的使用帮助
# make ARCH=arch_name help
# make ARCH=arm help
5、清理删除
在已经执行过编译操作的内核源码树做重新编译:
需要事先清理操作:
# make clean:清理大多数编译生成的文件,但会保留config文件等
# make mrproper: 清理所有编译生成的文件、 config及某些备份文件
# make distclean: mrproper、 patches以及编辑器备份文件
卸载内核
删除/lib/moles/目录下不需要的内核库文件
删除/usr/src/linux/目录下不需要的内核源码
删除/boot目录下启动的内核和内核映像文件
更改grub的配置文件,删除不需要的内核启动列表
需要解决更多linux问题,详情请看 http://www.linuxprobe.com/chapter-00.html
望采纳

E. Linux内核编译

内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux作为一个自由软件,
在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定
制一个更高效,更稳定的内核,就需要重新编译内核。本文将以RedHat Linux 6.0(kernel
2.2.5)为操作系统平台,介绍在Linux上进行内核编译的方法。

一、 下载新内核的源代码

目前,在Internet上提供Linux源代码的站点有很多,读者可以选择一个速度较快的站点下载。笔者是从站点www.kernelnotes.org上下载了Linux的最新开发版内核2.3.14的源代码,全部代码被压缩到一个名叫Linux-2.3.14.tar.gz的文件中。

二、 释放内核源代码

由于源代码放在一个压缩文件中,因此在配置内核之前,要先将源代码释放到指定的目录下。首先以root帐号登录,然后进入/usr/src子目录。如果用户在安装Linux时,安装了内核的源代码,则会发现一个linux-2.2.5的子目录。该目录下存放着内核2.2.5的源代码。此外,还会发现一个指向该目录的链接linux。删除该连接,然后将新内核的源文件拷贝到/usr/src目录中。

(一)、用tar命令释放内核源代码

# cd /usr/src

# tar zxvf Linux-2.3.14.tar.gz

文件释放成功后,在/usr/src目录下会生成一个linux子目录。其中包含了内核2.3.14的全部源代码。

(二)、将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。

# cd /usr/include

# rm -Rf asm linux

# ln -s /usr/src/linux/include/asm-i386 asm

# ln -s /usr/src/linux/include/linux linux

# ln -s /usr/src/linux/include/scsi scsi

(三)、删除源代码目录中残留的.o文件和其它从属文件。

# cd /usr/src/linux

# make mrproper

三、 配置内核

(一)、启动内核配置程序。

# cd /usr/src/linux

# make config

除了上面的命令,用户还可以使用make menuconfig命令启动一个菜单模式的配置界面。如果用户安装了X window系统,还可以执行make xconfig命令启动X window下的内核配置程序。

(二)、配置内核

Linux的
内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内
核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序
的支持。由于内核的配置选项非常多,本文只介绍一些比较重要的选项。

1、Code maturity level options(代码成熟度选项)

Prompt for development and/or incomplete code/drivers
(CONFIG_EXPERIMENTAL) [N/y/?]
如果用户想要使用还处于测试阶段的代码或驱动,可以选择“y”。如果想编译出一个稳定的内核,则要选择“n”。

1、 Processor type and features(处理器类型和特色)

(1)、Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) [PPro/6x86MX] 选择处理器类型,缺省为Ppro/6x86MX。

(2)、Maximum Physical Memory (1GB, 2GB) [1GB] 内核支持的最大内存数,缺省为1G。

(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/?] 选择“y”,内核将支持对称多处理器。

2、 Loadable mole support(可加载模块支持)

(1)、Enable loadable mole support (CONFIG_MODULES) [Y/n/?] 选择“y”,内核将支持加载模块。

(2)、Kernel mole loader (CONFIG_KMOD) [N/y/?] 选择“y”,内核将自动加载那些可加载模块,否则需要用户手工加载。

3、 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/?] 选择“y”,内核将支持平行口。

4、 Plug and Play configuration(即插即用设备支持)

(1)、Plug and Play support (CONFIG_PNP) [Y/m/n/?] 选择“y”,内核将自动配置即插即用设备。

(2)、ISA Plug and Play support (CONFIG_ISAPNP) [Y/m/n/?] 选择“y”,内核将自动配置基于ISA总线的即插即用设备。

5、 Block devices(块设备)

(1)、Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/m/n/?] 选择“y”,内核将提供对软盘的支持。

(2)、Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) [Y/m/n/?] 选择“y”,内核将提供对增强IDE硬盘、CDROM和磁带机的支持。

6、 Networking options(网络选项)

(1)、Packet socket (CONFIG_PACKET) [Y/m/n/?] 选择“y”,一些应用程序将使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。

(2)、Network firewalls (CONFIG_FIREWALL) [N/y/?] 选择“y”,内核将支持防火墙。

(3)、TCP/IP networking (CONFIG_INET) [Y/n/?] 选择“y”,内核将支持TCP/IP协议。

(4)The IPX protocol (CONFIG_IPX) [N/y/m/?] 选择“y”,内核将支持IPX协议。

(5)、Appletalk DDP (CONFIG_ATALK) [N/y/m/?] 选择“y”,内核将支持Appletalk DDP协议。

8、SCSI support(SCSI支持)

如果用户要使用SCSI设备,可配置相应选项。

9、Network device support(网络设备支持)

Network device support (CONFIG_NETDEVICES) [Y/n/?] 选择“y”,内核将提供对网络驱动程序的支持。

10、Ethernet (10 or 100Mbit)(10M或100M以太网)

在该项设置中,系统提供了许多网卡驱动程序,用户只要选择自己的网卡驱动就可以了。此外,用户还可以根据需要,在内核中加入对FDDI、PPP、SLIP和无线LAN(Wireless LAN)的支持。

11、Character devices(字符设备)

(1)、Virtual terminal (CONFIG_VT) [Y/n/?] 选择“y”,内核将支持虚拟终端。

(2)、Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?]

选择“y”,内核可将一个虚拟终端用作系统控制台。

(3)、Standard/generic (mb) serial support (CONFIG_SERIAL) [Y/m/n/?]

选择“y”,内核将支持串行口。

(4)、Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?]

选择“y”,内核可将一个串行口用作系统控制台。

12、Mice(鼠标)

PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?] 如果用户使用的是PS/2鼠标,则该选项应该选择“y”。

13、Filesystems(文件系统)

(1)、Quota support (CONFIG_QUOTA) [N/y/?] 选择“y”,内核将支持磁盘限额。

(2)、Kernel automounter support (CONFIG_AUTOFS_FS) [Y/m/n/?] 选择“y”,内核将提供对automounter的支持,使系统在启动时自动 mount远程文件系统。

(3)、DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?] 选择“y”,内核将支持DOS FAT文件系统。

(4)、ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) [Y/m/n/?]

选择“y”,内核将支持ISO 9660 CDROM文件系统。

(5)、NTFS filesystem support (read only) (CONFIG_NTFS_FS) [N/y/m/?]

选择“y”,用户就可以以只读方式访问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”。

14、Network File Systems(网络文件系统)

(1)、NFS filesystem support (CONFIG_NFS_FS) [Y/m/n/?] 选择“y”,内核将支持NFS文件系统。

(2)、SMB filesystem support (to mount WfW shares etc.) (CONFIG_SMB_FS)

选择“y”,内核将支持SMB文件系统。

(3)、NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS)

选择“y”,内核将支持NCP文件系统。

15、Partition Types(分区类型)

该选项支持一些不太常用的分区类型,用户如果需要,在相应的选项上选择“y”即可。

16、Console drivers(控制台驱动)

VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?] 选择“y”,用户就可以在标准的VGA显示方式下使用Linux了。

17、Sound(声音)

Sound card support (CONFIG_SOUND) [N/y/m/?] 选择“y”,内核就可提供对声卡的支持。

18、Kernel hacking(内核监视)

Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] 选择“y”,用户就可以对系统进行部分控制。一般情况下选择“n”。

四、 编译内核

(一)、建立编译时所需的从属文件

# cd /usr/src/linux

# make dep

(二)、清除内核编译的目标文件

# make clean

(三)、编译内核

# make zImage

内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件zImage。如果编译的内核很大的话,系统会提示你使用make bzImage命令来编译。这时,编译程序就会生成一个名叫bzImage的内核映像文件。

(四)、编译可加载模块

如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。

# make moles

# make modelus_install

编译成功后,系统会在/lib/moles目录下生成一个2.3.14子目录,里面存放着新内核的所有可加载模块。

五、 启动新内核

(一)、将新内核和System.map文件拷贝到/boot目录下

# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.3.14

# cp /usr/src/linux/System.map /boot/System.map-2.3.14

# cd /boot

# rm -f System.map

# ln -s System.map-2.3.14 System.map

(二)、配置/etc/lilo.conf文件。在该文件中加入下面几行:

default=linux-2.3.14

image=/boot/vmlinuz-2.3.14

label=linux-2.3.14

root=/dev/hda1

read-only

(三)、使新配置生效

# /sbin/lilo

(四)、重新启动系统

# /sbin/reboot

新内核如果不能正常启动,用户可以在LILO:提示符下启动旧内核。然后查出故障原因,重新编译新内核即可。

了解更多开源相关,去LUPA社区看看吧。
希望对你能有所帮助。

F. 关于重新编译Linux内核的问题

问题1,下载最新内核只需要有网络,能上网就行。你在哪个系统下载都可以。但是编译需要在Linux里面编译,这样方便。

问题2,编译的过程很简单,配置,然后就是make,再然后就是安装。
但是,我想说的是,计算机的各种外网设备的驱动也是需要配置安装的。更换内核后所有其他的东西都需要相应的更新。工程量浩大。

G. 如何重新编译linux内核

  1. 因为一般电脑安装的系统都是Windows,而整个编译过程都需要在Linux环境下实现,所以最好是在虚拟机里安装Linux系统来完成这一过程。我使用的虚拟机是VMware-workstation-full-v7.1.4。

  2. 然后,我们需要下载一个较高版本的Linux系统的镜像文件,安装在虚拟机上,作为编译环境。我使用的是ubuntu-11.04-desktop-i386。之所以选择较高版本,是因为它的界面比较方便用户操作。

  3. 然后下载一个Linux内核源代码文件,将它保存到虚拟机上新安装的系统中去。并解压到/usr/src目录。我使用的是linux-2.6.36,下载低版本的原因是,小巧轻便,易于编译。

    解压命令如下:

    bzip2 -d linux-2.6.36.tar.bz2

    tar -xvf linux-2.6.36.ta

  4. 修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一个系统调用函数。自行编写一个简单的程序即可,只为测试用。

  5. 修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,为新添加的程序配置系统调用号。

  6. 在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系统调用表。

  7. 下面就是最重要的内核编译与安装:

    首先配置编译信息,使其生成适合当前机器的Makefile,输入make oldconf ig。

    接着还要输入make menuconfig,在字符界面下进行必要的细微的修改。

    然后要经过四步编译过程(直接输入命令即可):

    (1)make bzImage

    将内核编译为压缩映像,存储在源码根目录下的“System.map”文件中。

    (2)make moles

    编译各个模块。

    (3)sudo make moles_install

    安装模块

    (4)sudo make install

    安装内核

    第(2)(3)步等待时间较长,可能需要数个小时,请耐心等待。

    无报错的话重启进入GRUB界面,就可以看到新编译的内核了。

  8. 按回车键进入我们编译的目标内核中,用关键词搜索查看新增加的系统调用“my call”是否已在内核中:

  9. 编写测试程序,调用新添加的系统调用:

  10. 测试成功,说明系统调用添加成功,进而说明内核编译成功!

    以上的办法你可以试一下,希望对你有所帮助。

H. linux编译内核步骤

一、准备工作
a) 首先,你要有一台PC(这不废话么^_^),装好了Linux。
b) 安装好GCC(这个指的是host gcc,用于编译生成运行于pc机程序的)、make、ncurses等工具。
c) 下载一份纯净的Linux内核源码包,并解压好。

注意,如果你是为当前PC机编译内核,最好使用相应的Linux发行版的源码包。

不过这应该也不是必须的,因为我在我的Fedora 13上(其自带的内核版本是2.6.33.3),就下载了一个标准的内核linux-2.6.32.65.tar.xz,并且顺利的编译安装成功了,上电重启都OK的。不过,我使用的.config配置文件,是Fedora 13自带内核的配置文件,即/lib/moles/`uname -r`/build/.config

d) 如果你是移植Linux到嵌入式系统,则还要再下载安装交叉编译工具链。

例如,你的目标单板CPU可能是arm或mips等cpu,则安装相应的交叉编译工具链。安装后,需要将工具链路径添加到PATH环境变量中。例如,你安装的是arm工具链,那么你在shell中执行类似如下的命令,假如有类似的输出,就说明安装好了。
[root@localhost linux-2.6.33.i686]# arm-linux-gcc --version
arm-linux-gcc (Buildroot 2010.11) 4.3.5
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for ing conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
注:arm的工具链,可以从这里下载:回复“ARM”即可查看。

二、设置编译目标

在配置或编译内核之前,首先要确定目标CPU架构,以及编译时采用什么工具链。这是最最基础的信息,首先要确定的。
如果你是为当前使用的PC机编译内核,则无须设置。
否则的话,就要明确设置。
这里以arm为例,来说明。
有两种设置方法():

a) 修改Makefile
打开内核源码根目录下的Makefile,修改如下两个Makefile变量并保存。
ARCH := arm
CROSS_COMPILE := arm-linux-

注意,这里cross_compile的设置,是假定所用的交叉工具链的gcc程序名称为arm-linux-gcc。如果实际使用的gcc名称是some-thing-else-gcc,则这里照葫芦画瓢填some-thing-else-即可。总之,要省去名称中最后的gcc那3个字母。

b) 每次执行make命令时,都通过命令行参数传入这些信息。
这其实是通过make工具的命令行参数指定变量的值。
例如
配置内核时时,使用
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
编译内核时使用
make ARCH=arm CROSS_COMPILE=arm-linux-

注意,实际上,对于编译PC机内核的情况,虽然用户没有明确设置,但并不是这两项没有配置。因为如果用户没有设置这两项,内核源码顶层Makefile(位于源码根目录下)会通过如下方式生成这两个变量的值。
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
-e s/sh[234].*/sh/ )
ARCH?= $(SUBARCH)
CROSS_COMPILE ?=

经过上面的代码,ARCH变成了PC编译机的arch,即SUBARCH。因此,如果PC机上uname -m输出的是ix86,则ARCH的值就成了i386。

而CROSS_COMPILE的值,如果没配置,则为空字符串。这样一来所使用的工具链程序的名称,就不再有类似arm-linux-这样的前缀,就相当于使用了PC机上的gcc。

最后再多说两句,ARCH的值还需要再进一步做泛化。因为内核源码的arch目录下,不存在i386这个目录,也没有sparc64这样的目录。

因此顶层makefile中又构造了一个SRCARCH变量,通过如下代码,生成他的值。这样一来,SRCARCH变量,才最终匹配到内核源码arch目录中的某一个架构名。

SRCARCH := $(ARCH)

ifeq ($(ARCH),i386)
SRCARCH := x86
endif

ifeq ($(ARCH),x86_64)
SRCARCH := x86
endif

ifeq ($(ARCH),sparc64)
SRCARCH := sparc
endif

ifeq ($(ARCH),sh64)
SRCARCH := sh
endif

三、配置内核

内核的功能那么多,我们需要哪些部分,每个部分编译成什么形式(编进内核还是编成模块),每个部分的工作参数如何,这些都是可以配置的。因此,在开始编译之前,我们需要构建出一份配置清单,放到内核源码根目录下,命名为.config文件,然后根据此.config文件,编译出我们需要的内核。

但是,内核的配置项太多了,一个一个配,太麻烦了。而且,不同的CPU架构,所能配置的配置项集合,是不一样的。例如,某种CPU的某个功能特性要不要支持的配置项,就是与CPU架构有关的配置项。所以,内核提供了一种简单的配置方法。

以arm为例,具体做法如下。

a) 根据我们的目标CPU架构,从内核源码arch/arm/configs目录下,找一个与目标系统最接近的配置文件(例如s3c2410_defconfig),拷贝到内核源码根目录下,命名为.config。

注意,如果你是为当前PC机编译内核,最好拷贝如下文件到内核源码根目录下,做为初始配置文件。这个文件,是PC机当前运行的内核编译时使用的配置文件。
/lib/moles/`uname -r`/build/.config
这里顺便多说两句,PC机内核的配置文件,选择的功能真是多。不编不知道,一编才知道。Linux发行方这样做的目的,可能是想让所发行的Linux能够满足用户的各种需求吧。

b) 执行make menuconfig对此配置做一些需要的修改,退出时选择保存,就将新的配置更新到.config文件中了。

热点内容
真我手机如何解除手机密码 发布:2024-05-04 18:24:44 浏览:707
数据库嵌套 发布:2024-05-04 18:24:29 浏览:145
豌豆荚源码 发布:2024-05-04 18:10:54 浏览:116
苹果消息的声音安卓怎么弄 发布:2024-05-04 18:06:23 浏览:554
减配配置有哪些 发布:2024-05-04 18:04:58 浏览:962
查询密码单是什么 发布:2024-05-04 17:54:03 浏览:40
安卓系统不支持网络怎么办 发布:2024-05-04 17:49:31 浏览:128
oraclesqlserver 发布:2024-05-04 17:49:16 浏览:47
关爱脚本 发布:2024-05-04 17:43:47 浏览:422
linuxshellif 发布:2024-05-04 17:09:47 浏览:17