当前位置: 首页 > news >正文

在新西兰做兼职的网站数据网站排名

在新西兰做兼职的网站,数据网站排名,wordpress设置手机主题,网站快速建站首先下载树莓派linux内核源码#xff1a; 下载网址#xff1a;https://github.com/raspberrypi/linux在树莓派使用指令#xff1a;uname -r查看当前树莓派的版本号#xff0c;然后选择对应的linux内核版本号进行下载。 将linux内核源码从共享文件夹拷贝到SYSTEM文件夹 下载网址https://github.com/raspberrypi/linux在树莓派使用指令uname -r查看当前树莓派的版本号然后选择对应的linux内核版本号进行下载。 将linux内核源码从共享文件夹拷贝到SYSTEM文件夹cp linux-rpi-4.19.y.zip /home/fhn/SYSTEM/然后使用指令对该压缩文件进行解压unzip linux-rpi-4.19.y.zip 树莓派等芯片带操作系统的启动过程 之前学习的51和32裸机是直接使用C语言操控底层寄存器实现相关业务这是业务流程型就是设备有什么功能要实现什么功能裸机代码而linux的BootLoader是超级裸机BootLoader的主要作用是引导操作系统启动BootLoader 刚开始一阶段学习就是让CPU和内存、FLASH、串口、IIC、IIS、数据段打交道就是驱动这些设备主要用到汇编和C二阶段就是对于引导linux内核启动纯C。X86架构比如Intel跑的是windows操作系统上电启动的时候 首先是启动BIOS然后是启动windows内核然后就是加载C、D等盘最后是启动应用程序。对于其他的嵌入式产品比如树莓派、mini24440、mini6410、nanopi、海思、RK瑞芯微这些产品上电后启动过程是首先启动BootLoader相当于windows的BIOS吧但这里叫做BootLoader然后引导linux内核linux内核启动完成后就是加载文件系统和C、D盘不太一样在linux下是根据功能性来组织文件夹带访问权限这就是linux文件系统就是根目录下的那些东西可以使用指令cd / 进入文件系统起来以后才能跑应用程序比如KTV点歌机界面等。BootLoader、linux内核、文件系统构成操作系统就像之前所说的在目的平台还没有建立的时候需要通过交叉编译让这些东西可以使用。 安卓的启动过程 有很多嵌入式设备都开始运行安卓操作系统首先硬件上电后启动fastboot也叫BootLoader意思和BootLoader一样然后引导linux内核linux内核起来以后加载文件系统因为底层还是linux文件系统起来以后开始跑一个运行java代码的虚拟机虚拟机起来以后开始运行home应用程序就相当于手机的界面点击home界面的某图标就可以打开相应的app。 简单介绍根目录下一些文件夹存放的东西在嵌入式体统中为了精简系统。/bin/dev/etc/lib/proc/var/usr 对于根文件系统来说是必须具有的其他目录都是可选的。首先使用指令cd /进入到根目录然后可以看到下面的一些文件夹。这篇博文更详细 dev 该目录下存放的是设备文件设备文件是Linux中特有的文件类型。在Linux系统下以文件的方式访问各种设备即通过读写某个设备文件操作某个具体硬件。譬如通过dev/ttySAC0文件可以操作串口0。在linux下一切皆文件就像之前树莓派的串口就是存放在dev下面 lib 该目录下存放共享库和可加载驱动程序模块。共享库用于启动系统、支持可执行程序的运行。 etc 该目录下存放着各种配置文件对于PC上的Linux系统/etc目录下的文件和目录非常多这些目录文件是可选的它们依赖于系统中所拥有的应用程序是否需要配置文件。在嵌入式系统中这些内容可以大为精减。 root 根用户的目录与此对应普通用户的目录是/home下的某个子目录。 usr 该目录存放的是共享、只读的程序和数据/usr目录下的内容可以在多个主机间共享。 var 与/usr目录相反/var目录中存放可变的数据比如spool目录mail,newslog文件临时文件。 proc 该是一个空目录常作为proc文件系统的挂载点proc文件系统是个虚拟的文件系统它没有实际的存储设备里面的文件都是由内核临时生成的用来表示系统的运行状态也可以操作其中的文件控制系统。 mnt 用于临时挂载某个文件系统的挂接点通常是空目录也可以在里面创建子目录来临时挂载光盘、硬盘譬如/mnt/cdram /mnt/hda1 。 home 用户目录它是可选的对于每个普通用户在/home目录下都有一个以用户名命名的子目录里面存放用户相关的配置文件 opt 存放的是和内核底层有些关系的东西 bin 该目录下存放所有用户都可以使用的、基本的命令譬如cdlscp等。这些命令在挂载其它文件系统之前就可以使用所以/bin目录必须和根文件系统在同一个分区中比如which ls可以查找ls指令的路径 sbin 该目录下存放的是基本的系统命令它们用于启动系统修复系统等与/bin目录相似在挂接其他文件系统之前就可以使用/sbin所以/sbin目录必须和根文件系统在同一个分区中 boot 存放的是启动时候的一些数据包括启动的时候加载的内容、一些命令和命令行的配置等等。 tmp 用于存放临时文件通常是空目录一些需要生成临时文件的程序用到的/tmp目录下所以/tmp目录必须存在并可以访问。 linux内核源码树其实就是目录的组织形式 找到之前下载的linux内核源码 使用tree指令在以后做第三方工具安装的时候会去检查包里面的内容是否完整或者是有一个文件夹目录下文件比较多的时候使用tree指令方便查看然后如果出现识别不了表示没有下载然后使用指令sudo apt install tree进行下载。 linux内核大约有1.3w个c文件1100w行代码是因为linux是一个开源的支持多架构多平台代码可移植性非常高。但是linux内核编译出来一般就若干M因为支持多平台多架构所以编译之前要配置配置成适合目标平台来用。代码编译出来是给一个平台一个架构来用的很多代码是不参与编译的。例如ARM架构海思、RK、树莓派、nanoPi、X86架构、powerpc、mips等等架构 Linux内核源代码目录树结构 arch包含和硬件体系结构相关的代码每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下其中比较重要的包括kernel内核核心部分、mm内存管理、math-emu浮点单元仿真、lib硬件相关工具函数、boot引导程序、pciPCI总线和powerCPU相关状态。进入arm这个文件夹这个里面存放的是arm架构相关的设备。mach表示架构相关的mach-exynos 是三星公司的架构 mach-hisi 是海思公司的架构就单单arm架构下就有很多公司的架构。 block部分块设备跟存储设备相关的像内存、flash等驱动程序。 crypto常用加密和散列算法如AES、SHA等还有一些压缩和CRC校验算法。 Documentation关于内核各部分的通用解释和注释。 drivers设备驱动程序每个不同的驱动占用一个子目录。 fs各种支持的文件系统如ext、fat、ntfs等。 include头文件。其中和系统相关的头文件被放置在linux子目录下。 init内核初始化代码注意不是系统引导代码。 ipc进程间通信的代码之前学习的进程间通信管道、消息队列、共享内存在调用的时候都会触发一个异常系统调用然后进入到内核态。那些API就是支配内核干活。 kernel内核的最核心部分包括进程调度、定时器等和平台相关的一部分代码放在arch/*/kernel目录下根目录下的kernel一般都放一些通用的内核的最核心部分包括进程调度、定时器的代码。 lib库文件代码。 mm内存管理代码和平台相关的一部分代码放在arch/*/mm目录下。 net网络相关代码实现了各种常见的网络协议。 scripts用于配置内核文件的脚本文件。 security主要是一个SELinux的模块。 sound常用音频设备的驱动程序等。 usr实现了一个cpiocpio就是复制入和复制出的意思。cpio可以向一个归档文件或单个文件复制文件、列表还可以从中提取文件。 在i386体系下系统引导将从arch/i386/kernel/head.s开始执行并进而转移到init/main.c中的main()函数初始化内核。 配置Linux内核适合树莓派相关操作 以后可能涉及驱动代码的编写驱动代码的编译需要一个提前编译好的内核编译内核就需要对内核进行配置。配置的最终目标是生成.config文件该文件指导Makefile去把有用的东西组织成内核。配置的方式有以下几种方式 第一种方式厂家会配Linux内核源码比如说买了树莓派厂家会提供Linux内核源码然后这样就可以将厂家的.config文件里面的代码拷贝到要生成的.config文件即可。进入到Linux内核文件夹下然后使用指令find . -name *defconfig查找以defconfig结尾的文件。比如树莓派的2和3就是使用的下图的bcm2709_defconfig然后只需要将它拷贝到要生成的.config文件。第二种方式使用make menuconfig(menuconfig、defconfig都是用来配置内核的)一项项配置通常是基于厂家的config来配置。第三种方式完全自己来。 树莓派内核编译 首先配置好ubuntu交叉编译的环境环境的搭建在另一篇文章有配置过程。 然后开始配置configlinux源码中有很多工程树莓派1的工程是bcmrpi_defconfig树莓派2、3的工程是bcm2709_defconfig。配置过程如下 使用源码里面自带的configARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make bcm2709_defconfig此命令功能是获取bcm2709_defconfig的配置到 .config里。这行命令的意思是指定arch架构是arm架构的-------ARCHarm 指定编译器是系统里面arm-linux-gnueabihf-这个编译器这就是之前配好的交叉编译器--------CROSS_COMPILEarm-linux-gnueabihf- 指定树莓派的kernel树莓派里面特别指定的---------KERNELkernel7用的config是bcm2709_defconfig所以是-------make bcm2709_defconfig,这就相当于直接拷贝厂家的config到.config。 如果使用指令ARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make bcm2709_defconfig出现下图报错则表示该错误的原因是缺少某些需要的库需要安装一下需要的库就行了sudo apt-get install bisonsudo apt-get install flex如果在安装上面库时提示找不到安装库就需要更新一下source addrsudo apt-get update #更新sudo apt-get upgrade #升级需要用update更新完才能upgrade更详细的请 $man apt-get记录更新源的文件/etc/apt/sources.list默认sources.list中的更新源为官方的下载速度慢从而需要寻找符合自己需要的更新源。 出现下图表示复制成功configuration written to .config 如果想要添加某些驱动进来就要ARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make menuconfig如果没什么改的就不用执行这一步。这时候它就会读取现有.config给menuconfig做一些基本的项的填充。出现下图错误表示没有ncurses 库要进行安装sudo apt-get install libncurses5-dev libncursesw5-devsudo apt-get install libc6-i386 lib32stdc6 lib32gcc1 lib32ncurses5编译的时候还会用到一些其他的必要的库需要进行安装sudo apt-get install bcsudo apt-get install zlib1g:i386 执行完执行menuconfig会出现以下Ncurses界面一般就是在Device Drivers进行设备驱动的配置用方向键操作用enter表示确定选择 Pressin Y includes表示要将前面带 Y 的编译进了内核 M modularizes features意思都是模块化特性表示驱动以模块的方式生成驱动文件。 N 表示不需要的略过的就是下图的 。驱动两种加载方式① * 编译进内核 zImage包含了驱动 ②M 驱动以模块方式生成驱动文件xxx.ko系统启动后通过命令inmosd xxx.ko加载下图的 * 就是 Y 。在这个Ncurses界面可以使用空格切换 中的选项。 我们可以直接用工程里的配置但这样的话可能会丢失原来使用的树莓派的配置这里提供一个方法可以获取当前正在使用的树莓派的config。获取当前树莓派的config已经开机的树莓派上会有这个节点/proc/config.gz从这个节点可以获取本树莓派的config。如果没有这个节点的话则需要先加载模块sudo modprobe configs把 config.gz 内容复制到要编译的电脑上scp pi[ip]:/proc/config.gz .解压保存为.confg文件。zcat config.gz .config注必须在linux环境下解压在mac下会乱码。把此config文件复制到linux源码的根目录这种方法我没尝试过。 已经生成.config文件了然后就可以该文件指导Makefile去把有用的东西组织成内核 使用指令ARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make -j4 zImage modules dtbs 21 | tee build.log其中21 | tee build.log是错误处理可以不关心不要。make -j4 zImage modules dtbs这段指令中的-j4是指定电脑虚拟机用多少的资源来编译4表示4线程。zImage表示要生成zImage内核镜像modules表示要生成驱动模块dtbs表示要生成配置文件等等。我编译的过程出现以下错误原因是都是没有安装libssl-devlibssl-dev包含libraries, header files and manpages他是openssl的一部分而openssl对ssl进行了实现。解决方案使用sudo apt-get install libssl-dev来安装libssl-dev即可这个编译过程大概持续20分钟。 在编译过程中没有报错并且在linux源码树目录下生成vmlinxvmlinux是没有压缩的linux而真正生成的linux内核是在arch/arm/boot下面的zImage 编译完成后就需要将编译后linux内核放到树莓派去运行首先将zImage文件打包直接用linux源码包要在linux源码包下执行里的工具./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img在本目录生成一个kernel_new.img文件这个文件就是要放到sd卡中的文件。scripts文件夹下面存放的是一些脚本文件这里的mkknlimg会将zImage打包成kernel_new.img。注网上很多地方说的用tools/mkimage/imagetool-uncompressd.py 的方法不行 dmesg是查看底层的硬件信息。当有设备接入的时候内核会打印设备驱动的一些东西。可使用该指令查看U盘是否接入到ubuntu并且可以看到SD的两个分区sdb1boot和sdb2根目录相关文件。 挂载树莓派sd卡并安装编译出的DIRECTLY 到sd卡 把树莓派的sd卡插入ubuntu系统电脑树莓派的sd卡有两个分区一个fat分区是boot相关的内容kernel的img文件就放在这个分区里一个是ext4分区也就是系统的根目录分区。我们生成的文件涉及到这两个分区的内容一般插入ubuntu后会自动挂载fat分区可以不用root权限操作ext4分区需要root权限操作。两个分区具体挂载在什么地方可以自己决定以下用[fat]表示boot挂载的路径[ext4]表示ext4挂载的路径。自己创建两个文件夹fat和ext4 挂载U盘 sudo mount /dev/sdb1 fat将内存卡中的sdb1挂载到fat文件夹夹这样fat里面就有sdb1boot相关的内容了sudo mount /dev/sdb2 ext4将内存卡中的sdb2根目录分区挂载到fat文件夹夹这样fat里面就有sdb1的内容了 挂载分区后安装modulessudo ARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make INSTALL_MOD_PATH[ext4] modules_install 执行指令需要进入到源码下的那个文件夹。操作ext4分区需要root权限因为是安装到根目录分区。自己创建的文件夹名称不同就将对应的[ext4]换成自己挂载根目录分区的文件夹路径即可。在这过程中会生成好多xxx.ko文件HDMI、usb、wifi、io等的驱动如果少了这步操作那些设备可能不会正常工作。下图表示安装成功 更新 kernel.img 文件 在更新之前可以选择先备份镜像注意镜像的名字是kernel7.img使用指令cp kernel7.img kernel7oled.img下面对于更新有两种方式①前面已经用mkknlimg 工具打包了kernel_new.img文件了把它复制到boot分区并配置使用即可cp kernel_new.img [fat]/,编辑 [fat]/config.txt 文件在最后加入一行kernelkernel_new.img在配置文件里面指定内核镜像是kernel_new.img。②因为前面已经备份了kernel7.img所以可以直接将 kernel_new.img的内容复制到kernel7.img将原有的东西覆盖掉cp kernel_new.img /home/fhn/fat/kernel7.img。拷贝完成后可以使用指令du kernel7.img -h查看文件大小然后可以使用指令md5sum kernel_new.img查看原镜像的MD5值每个文件都有它唯一的编码号就是md5的值然后再查看拷贝后的镜像的MD5值进行比较若拷贝过程中文件没有损坏则md5的值相同否则可能在拷贝过程中文件损坏。 复制其他相关文件配置文件是为了加载驱动和其他配置文件 cp arch/arm/boot/dts/.*dtb* [fat]/将[fat]换成自己内存卡boot分区挂载的对应的路径cp arch/arm/boot/dts/overlays/.*dtb* [fat]/overlays/、cp arch/arm/boot/dts/overlays/README [fat]/overlays/这两个指令同上也需要将[fat]换成自己内存卡boot分区挂载的对应的路径。 以上内容配置完成后然后修改config.txt和cmdline.txt文件里面的内容通过串口观察系统的启动过程。 更新完成后插回树莓派即可开机开机后可以用 uname -a 命令查看kernel信息已经改变。和从官网下载的内核版本相同。 树莓派内核编译部分参考博文
http://www.pierceye.com/news/228360/

相关文章:

  • 新浪博客发布到wordpress网站seo快速优化技巧
  • php网站换服务器最超值的手机网站建设
  • seo整站优化技术培训wordpress博客编辑器
  • 一家专做灯的网站招聘wordpress 欲思
  • 山西省建设主管部门网站app备案号查询平台官网
  • 百度网站收录链接提交做购物网站的开题报告
  • 迷你主机做网站服务器南京龙媒网络科技有限公司
  • 网站重构给一个网站如何做推广
  • 温州网站推广价钱左侧导航栏网站模板
  • 网站建设朝阳南昌房地产网站建设
  • 大连网络建站公司分析wordpress漫画主题推荐
  • 纪检监察网站建设 讲话制作书签的感受心得
  • 宁波网站建设公司优选亿企邦上海网站快速备案
  • 贵阳有做网站的公司吗微信营销软件免费版
  • 打开网站乱码怎么做河南平台网站建设
  • 物流网站源代码安平县网站建设
  • 自助服务器网站建设修改wordpress的库名
  • 惠州做网站乐云seo网站建设如何插音乐
  • 自媒体图片素材网站东莞网站建设推广技巧
  • 新浪网站是什么程序做的六安网站关键词排名优化地址
  • 手机网站大全123456镇江手机网站建设
  • 企业网站模板下载哪家公司强服装设计就业前景如何
  • 婚纱网站源代码网站制作专业的公司
  • 公司经营范围 网站开发网络工程好就业吗
  • 企业网站建设与管理试题wordpress设置页面访问权限
  • 中国顺德手机网站设计安居客做网站
  • 网站运营的含义百度地图轨迹导航
  • 网站开发时创业中文网站模板
  • 男人最爱的做网站网站建设合作合同范文
  • 我和你99谁做的网站做润滑油网站图片