由于定义了宏CONFIG_BOOTM_LINUX,最终会跳转到do_bootm ->do_bootm_linux() 代码如下所示: int do_bootm_linux(int flag, int...return 0; } 最终跳转到do_bootm ->do_bootm_linux-> boot_jump_linux() static void boot_jump_linux(bootm_headers_t...0x30000000 s = getenv("machid"); //判断环境变量machid是否设置,若设置则使用环境变量里的值...printf("Using machid 0x%lx from environment\n", machid); //使用环境变量的machid } ... ......设置机器ID uboot传递进来的机器ID可以通过环境变量machid来设置 所以任意设置一个ID,这样再次启动内核时,内核识别不出来,就会打印出所有设备对应的机器ID。
一、ramdisk的制作 out/host/linux-x86/bin/mkbootfs out/target/product//root | out/host/linux-x86/bin/minigzip...2.out/host/linux-x86/bin/minigzip 将生成的cpio文件压缩成一个gzip格式的文件“out/target/product/*/ramdisk.img“ 二、uboot...(0, machid, r2); } #endif } 3.通过dtb传入,通过fdt_initrd函数设置一个“linux,initrd-start”和“linux,initrd-end”的chose...,initrd-start"属性,内核通过解析dtb可以获知ramdisk的地址*/ err = fdt_setprop_uxx(fdt, nodeoffset, "linux,initrd-start..."可以获知dtb的size*/ err = fdt_setprop_uxx(fdt, nodeoffset, "linux,initrd-end", (uint64_t)initrd_end, is_u64
uboot与Linux内核之间的参数传递 我们知道,uboot启动后已经完成了基本的硬件初始化(如:内存、串口等),接下来它的主要任务就是加载Linux内核到开发板的内存,然后跳转到Linux内核所在的地址运行...boot_jump_linux(bootm_headers_t *images, int flag) { unsigned long machid = gd->bd->bi_arch_number...//判断环境变量里是否设置机器id strict_strtoul(s, 16, &machid); //如果设置则用环境变量里的机器id printf("Using...machid 0x%lx from environment\n", machid); } debug("## Transferring control to Linux (at address...fake) kernel_entry(0, machid, r2); } //进入内核 通过分析可以看出,最终进入内核的函数为 : kernel_entry(0, machid, r2) 到这里
最终将执行do_bootm函数,do_bootm调用同文件下的bootm_start函数,在bootm_start函数中将会通过boot_get_kernel获得uImage的头部并且录入images(...函数中继续执行bootm_load_os,在该函数中会执行重定位.在do_bootm中的boot_fn=boot_os[image.os.so]获取相应系统的启动函数,例如是linux则被赋值为do_bootm_linux...,而后执行boot_fn(0, argc, argv, &images);arch/unicore/lib/bootm.c下的函数do_bootm_linux中将images->ep强制转换成函数地址kernel_entry...= (void (*)(int, int, uint))images->ep;而后开始启动kernel_entry(0, machid, bd->bi_boot_params); 6200 的板子时...(0,0x9fc,0x40000100 0x9fc是板子硬件设计代号,40000100是传递参数的地址) uboot最终的配置会录入include/configs/SEP0611.h中 在该文件中又含有了
在上章-使内核支持烧写yaffs2,裁剪内核并制作补丁了 本章,便开始移植以前2.6内核的驱动到3.4新内核 ---- 1.介绍 首先内核更新,有可能会重新定义新的宏,去除以前的宏,以及更改函数名等 所以移植驱动的过程如下...: 1)编译 2)解决错误 ->2.1)头文件不对:去掉或改名 ->2.2)宏不对:改名使用新宏 ->2.3)有些函数没有了:改名使用新函数 2.移植内核自带的DM9000网卡驱动 machid=16a...而在machid= 7cf(mach-mini2440.c)的内核下输入ifconfig,却能支持DM9000,如下图所示: ?.../arm/mach-s3c24xx/mach-smdk2440.c) (使它也支持内核自带的DM9000网卡驱动) 1)添加头文件 #include 2)添加全局变量...set machid 16a bootm 30000000 启动内核后,便可以ping通,如下图所示: ?
初始化shell环境,我们可以在uboot里执行相关的命令,跟在linux上执行命令类似 cli_init(); run_preboot_environment_command();#if defined...找到boot_fn函数,就是do_bootm_linux执行完后,最终会回到do_bootz函数,再重新执行do_bootm_states,不一样的是,此时states传入的宏有**BOOTM_STATE_OS_PREP...\n");#endif return BOOTM_ERR_RESET;}这里调用boot_fn,执行do_bootm_linux,也是第二次执行了。每次执行的目的是不一样的,根据status选择。...\n"); return; } printf("Using machid 0x%lx from environment\n", machid); } debug("## Transferring...跳转到内核镜像的地址执行 **kernel_entry(0, machid, r2);** }#endif}到此uboot的正常启动流程就结束了。
我们经常使用uboot命令,虽然资料光盘->常见问题目录有U-boot常用命令汇总文档,但从大家的反馈来看,并没有很多人注意到这个文档,所以把它挪到这里。如此全的uboot命令汇总,建议收藏。...注意:不同版本的uboot,它的命令有所不同,这里使用u-boot 1.1.6。...params 0x00020000 0x00040000 2: kernel 0x00200000 0x00060000 3: root 0x0fba0000 0x00460000 二、设置机器ID set machid...16a // JZ2440,也可以用setenv machid 16a set machid 7CF // mini2440 三、设置环境变量 print // 打印环境变量 save // 保存环境变量...(filesize) // (filesieze) 是fs_mini.yaffs2 的大小
一.Linux中的用户 Linux中分为两种用户,分别为: 1.root 用户,也叫超级用户,它的权限非常高,不受其他权限的约束,也就是可以为所欲为; 2.普通用户:除了root用户外,都是普通用户...二.什么是权限 1.权限和人有关; Lniux中,这里的“人”指的是: a,所有者 b,所属组 c,其他 2.权限和事物的属性有关 Linux下一切皆文件,而文件具有可读...文件属性 这里的文件属性包括:可读(r),可写(w),可执行(x),- 表示无任何权限 这里的9个字符是3个为一组的,按照前后顺序表示:所有者,所属组,其他的权限,且每组内rwx的顺序是严格不变的,...所以就可以用二进制的0和1表示。 四.文件权限值的表示方法 字符表示法 8进制和2进制表示法 有了这些权限值的表示方法,我们就可以修改一个文件的权限了。 ...Linux中给出一个叫粘滞位的概念。 粘滞位 语法:chmod +t 文件 加了粘滞位的文件: 1、超级管理员删除 2、该文件的所有者删除 加上粘滞位后,原来的 x 会变成 t 。
# Linux 定制自己的Linux # 基本介绍 通过裁剪现有Linux系统(CentOS7.6),创建属于自己的min Linux小系统,可以加深我们对linux的理解。...# 基本原理 启动流程介绍: 制作Linux小系统之前,再了解一下Linux的启动流程: 首先Linux要通过自检,检查硬件设备有没有故障 如果有多块启动盘的话,需要在BIOS中选择启动磁盘 启动MBR...需要明确的是,现在加的这个硬盘在现有的Linux系统中是/dev/sdb,但是,当我们把东西全部设置好时,要把这个硬盘拔除,放在新系统上,此时,就是/dev/sda 在/dev/sdb硬盘上,将其打造成独立的...Linux系统,里面的所有文件是需要拷贝进去的 作为能独立运行的Linux系统,内核是-定不能少,要把内核文件和initramfs文件也- -起拷到/dev/sdb.上 以上步骤完成,我们的自制Linux...就完成,创建-一个新的linux虛拟机,将其硬盘指向我们创建的硬盘,启动即可 示意图 # 操作步骤 可以问我要操作文档
在Linux(还有Mac),你可以用一个”kill”命令强制终结它。本篇博文中,我们将展示给你多种方式使用”kill”命令终结应用。...-n 指的是 信号编号 [xgj@entel2 ~]$ kill -l ---> 查看Linux/Unix的信号变量 1) SIGHUP 2) SIGINT 3) SIGQUIT...程序不能忽略此信号,而未保存的进度将会丢失 ---- 使用”kill”的语法是: kill [信号或选项] PID(s) 默认信号(当没有指定的时候)是SIGTERM。...---- 如果你不知道应用的PID,仅需要运行这个命令: ps ux 它会显示所有正在运行的应用还有应用的PID。 ?...当你在终端键入”xkill”,你的光标将立刻变成一个”十字”。你只需要做的是在不正常的应用上点击一下,它就会立刻kill掉这个应用。
文章目 前言 Linux权限 文件访问者的分类(人) 文件类型和访问权限(事物属性) 文件类型 基本权限 目录的权限 粘滞位 权限的总结 前言 前面我们已经知道。...Linux下有两种用户:超级用户(root)、普通用户 以及相互之间的切换: 以及引入的权限的一些铺垫。 下面,我们对其进行补充说明。...如果暂时使用root,root的权限是最大的,可以随便切换到其他普通用户。也就不存在没有权限的问题了。 ---- Linux权限 简单理解权限:权限简单来说就是进行约束的。...而Linux的文件类型和后缀无关(后缀名可以作为提示,用户可以使用后缀区分文件类型),但是对linux来说区分文件和文件本身的后缀是无关的(但是gcc等工具对文件后缀可能有要求)。...y [hwc@VM-8-3-centos ~]$ 为了解决这个不科学的问题, Linux引入了粘滞位的概念 粘滞位 Linux系统中有很多人,我们需要在一个公共的目录下,进行临时文件的操作(增删查改
1.1 VMWare安装 1)VMware Workstation Pro安装向导 2)VMware Workstation安装的许可协议。...Win7系统 Win10系统 2)新建虚拟机 3)新建虚拟机向导 4)创建虚拟空白光盘 5)安装Linux系统对应的CentOS版 6)虚拟机命名和定位磁盘位置 7)处理器配置,...此外,在Ctrl+Alt可以实现Windows主机和VM之间窗口的切换 20)CentOS7欢迎页面 21)选择简体中文进行安装 22)选择语言键盘,日期和时间 23)软件选择 如果选择最小安装是纯命令行的界面...,ifconfig查询ip地址的命令没有,vim编辑器也没用, 需要执行以下命令安装: yum install -y net-tools yum install -y vim 24)选择自动分区、不启用
安装完linux后,默认的情况下ssh是开放的,容易造到黑客攻击,简单有效的操作之一就是修改默认端口号 步骤一:修改/etc/ssh/sshd_config配置文件 找到行:Port 22 注释掉...size of ephemeral version 1 server key KeyRegenerationInterval 3600 ServerKeyBits 768 # Logging 注意:这里的端口修改会影响...SCP、SSH等命令的使用,因为执行命令时使用的这里的端口 步骤二:重启服务 builder:/mnt/disk/pcap# service sshd restart
今天要分享的是Linux中的信号机制,信号是一种软件中断,是一种处理异步事件的方法,可以很好地在多个进程之间进行同步和简单的数据交换。...二、信号的注册和响应 前面讲了三种发送信号的方式,但是光发送信号还不够,对于接收方来说,还得对信号进行处理。 一般可以使用signal函数和sigaction函数来注册信号。...signal函数的第一个参数是信号类型,第二个参数是函数指针,也就是跳转到哪里去执行。也就是说,当收到第一个参数表示的信号之后,就会跳转到第二个参数指向的代码段去执行。...成员sa_sigaction 则是另一个信号处理函数,它有三个参数,可以获得关于信号的更详细的信息。...接下来写一个简单的代码,来应用一下上面的几个函数。实现的需求就是创建一个子进程,父进程每隔一秒钟向子进程发送一个信号,子进程收到信号之后往一个txt文档中写入一句话。
前言:在了解完冯诺依曼体系结构和操作系统之后,我们进入了Linux的下一篇章Linux进程,但在学习Linux进程之前,一定要阅读理解上一篇内容,理解“先描述,再组织”才能更好的理解进程的含义。...Linux进程学习基础 本篇主要内容: 进程的概念 通过系统调用获取进程标示符 1....进程的概念 在学习进程之前,大家对进程肯定初步的了解,那么今天我们来深入了解一下 基本概念: 课本概念:程序的一个执行实例,正在执行的程序等 内核观点:担当分配系统资源(CPU时间,内存)的实体。...课本上称之为PCB(process control block),Linux操作系统下的PCB是: task_struct 1.2 CPU对于进程列表的处理 在CPU对进程列表进行处理时,PCB中的数据有时不会被...:ps ajx | head -1 && ps ajx | grep 可执行程序 2.2 终止进程 在我们刚接触Linux时,通常按CTRL+c可以结束进程,现在在学习Linux进程时,还有一种方法可以杀死进程
gcc命令下各选项的含义 -E:仅作预处理,不进行编译、汇编和链接 -S:仅编译到汇编语言,不进行汇编和链接 -c:编译、汇编到目标代码(也就是计算机可识别的二进制) -o:执行命令后文件的命名 -g:...在此程序中中,预处理结果就是将stdio.h 文件中的内容插入到Test.c中了。...②编译: gcc的-S选项,表示在程序编译期间,将我们的代码编译成汇编语言。...③汇编: gcc的-c选项,表示由汇编器负责将刚才的.s文件编译为目标文件,即计算机所能识别的序列。...3.运行程序 这里我们就完成了从最开始的代码,到最终可执行文件的整个过程。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。
在安装完VirtualBox中的Linux以后,网络默认是NAT的 在看过帮助手册以后,发现可以使用NAT的形式登录进VirTualBox中的linux 6.4.1....connections to an ssh server on the guest requires the following three commands: VBoxManage setextradata "Linux...Guest" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP VBoxManage setextradata "Linux...Guest" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22 VBoxManage setextradata "Linux...设置完成以后,直接就可以ssh hostip -p 2222就可以登录进VirtualBox中的Linux了
在学习和使用Linux操作系统时,经常会遇到各种命令和参数,而对于初学者或者不常用的命令,很可能会遇到一些困惑和不确定。当遇到这个问题时候,若能有一个专门查询Linux命令注释的网站变得至关重要。...如果有一个这样的网站会有以下好处 提供全面的命令解释:可以提供对Linux命令的详细解释和说明。用户可以轻松地找到所需命令的相关信息,包括命令的功能、用法、参数选项以及示例等。...github地址如下:https://github.com/jaywcjlove/linux-command 目前已经接近29k star作者已经提供了在线的网站,若没有自己搭建需求,那么直接访问在线网站使用即可...接下来说一下docker部署的教程 拉取镜像,执行命令 docker pull ghcr.io/jaywcjlove/linux-command:latest 执行命令 docker run --name...linux-command -itd -p 9665:3000 ghcr.io/jaywcjlove/linux-command:latest 防火墙放开对应的9665端口,以centos命令为例子,
写公众号是今年做的最开心的事,哈哈~~ 然后,今天是填坑的一天(很久之前说过要写一期Linux文件权限管理...)...对于用户和用户组的介绍,之前也写过一期,没看过的小伙伴可以阅读一下: 【Linux】Linux用户与用户组那些事 不同的权限,对文件的影响如下: ? 权限的配置 ?...passwd文件其实是操作的shadow文件,该文件权限如下: ? 可以看到,只有root账号能对它进行操作,那么alice的写操作是怎么执行成功的?...再看看passwd命令是执行的哪个文件: ? 会发现passwd文件的执行权限为s,这就是alice成功修改密码的原因。...那么谁可以删除带sticky权限的目录中的文件呢?
大家好,又见面了,我是你们的朋友全栈君。 查看文件或目录的权限:ll 更改权限操作:chmod ①.u表示:属主。 ②.g表示:所属组用户。 ③.o表示:其他用户。 ④.a表示:所有用户。...1.每一行显示一个文件或目录的信息,这些信息包括文件的类型、文件的权限、文件的属主、文件的所属组、文件大小、创建时间和文件名。 2.读取权限:r,写入权限:w,执行权限:x。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
领取专属 10元无门槛券
手把手带您无忧上云