小编Cir*_*郝海东的帖子

为什么Linux内核源码的git clone比解压出来的tar.xz大很多?

当我直接将内核下载为 typetar.xz并解压时,大小约为 1GB。但是当我git clone这里下载它时,大小约为 7GB。它只显示主分支。为什么会有如此巨大的差异?

linux-kernel

14
推荐指数
1
解决办法
1万
查看次数

如何同时从磁盘映像挂载多个分区?

我试图安装根目录和引导分区Raspbian图像:

mount -v -o offset="70254592" -t ext4 /mnt/X/raspbian-jessie.img /tmp/raspbian
mount -v -o offset="4194304" -t vfat /mnt/X/raspbian-jessie.img /tmp/boot
Run Code Online (Sandbox Code Playgroud)

挂载引导,当 root 被挂载时会导致:

mount: /mnt/X/raspbian-jessie.img: overlapping loop device exists
Run Code Online (Sandbox Code Playgroud)

如何同时在一个磁盘映像上挂载多个分区?(对于磁盘,这显然是可能的,为什么不能用于文件?)

mount loop-device

14
推荐指数
3
解决办法
2万
查看次数

Linux 内核 Kconfig 中的“select”与“depends”有什么区别?

内核 Kconfig 文件之间selectdepends on内核中的依赖项有何不同?

config FB_CIRRUS
tristate "Cirrus Logic support"
depends on FB && (ZORRO || PCI)
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
---help---
This enables support for Cirrus Logic GD542x/543x based boards on
Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum.
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,与 和 的FB_CIRRUS关系如何不同?FB && (ZORRO || PCI)FB_CFB_FILLRECTFB_CFB_COPYAREAFB_CFB_IMAGEBLIT

更新

我注意到这depend on在编译顺序方面并没有太大作用。

例如。AppB 的成功构建取决于首先构建静态链接的 LibB。depends on LibB在 Kconfig 中为 AppB设置不会强制首先构建 LibB。设置select LibB会。

kernel configuration linux-kernel

12
推荐指数
1
解决办法
2万
查看次数

如何编写 menuconfig 脚本来自动化 Linux 内核构建配置?

我想自动化一个 Linux 构建,但最终我需要运行一个看起来非常手动的步骤:make menuconfig. 这似乎在操作系统和内核配置之间同步配置?

cp git-tracked-config .config
make defconfig 
make menuconfig # <- how to automate/script this?
make V=s
Run Code Online (Sandbox Code Playgroud)

基本上,如何删除对make menuconfig构建脚本的调用?

顺便说一句,这是对构建错误的反应,该错误似乎在我从未调用 make menuconfig 的情况下运行时发生:

make[1]: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'.  Stop.
Run Code Online (Sandbox Code Playgroud)

似乎在 makefile 中缺少规则,可能是因为 makefile 本身不存在,或者 makefile 尚未生成/变形以包含该规则,但这是一个单独的问题。

可能有一种更聪明的方法来解决这个问题。是否还有其他我没有跟踪但应该跟踪的配置(例如 oldconfig)?

bash make linux-kernel

12
推荐指数
1
解决办法
2万
查看次数

Linux 内核未正确找到 initrd

我已经编译了一个 linux 内核,我想在 QEMU 中调试它。我通过执行命令创建了一个文件来启动

$ qemu-img create -f raw disk.img 200M
$ mkfs.ext2 -F disk.img
# mkdir /mnt/rootfs
# mount -o loop disk.img /mnt/rootfs
Run Code Online (Sandbox Code Playgroud)

然后我做了qemu -kernel bzImage -initrd disk.img并得到了下面的屏幕,上面写着:

Kernel panic - not syncing: VFS: unable to mount root fs on unknown block
Run Code Online (Sandbox Code Playgroud)

我的 QEMU 屏幕

我做错了什么,我能做些什么来解决它?

initrd qemu linux-kernel

11
推荐指数
2
解决办法
2万
查看次数

如何在我自己的 Linux Buildroot 系统上安装 X11?

我已经使用buildrootbusybox开发了我自己的小型 linux 文件系统。我使用linux-2.6.38.8内核根据需要为目标系统(X86)配置和交叉编译。现在文件系统已经构建,但它只有busybox shell,不支持GUI。它没有任何包管理器也是。现在我想在它上面启用 GUI。我检查了/etc但没有任何x11目录或x11.conf文件。它也不支持startx

How can I install x11(XFree86 or Xorg) on my system Explicitly.

I also want to install a package-manager for my system.
Run Code Online (Sandbox Code Playgroud)

如何做到这一点?

linux x11 package-management linux-kernel buildroot

11
推荐指数
2
解决办法
1万
查看次数

如何以非 root 用户身份创建文件系统?

我想以非 root 用户的身份创建一个文件系统映像,我面临的问题是我目前的做法是,它需要挂载,而非 root 用户无法挂载。

这就是我现在正在做的:

#!/bin/sh

IMG="app.ext4"
LBL="PIHU_APP"
MNT="/mnt/PIHU_APP"
APP="/home/buildroot/board/arctura/PIHU_APP/application"

#64MB:
dd if=/dev/zero of=$IMG bs=4096 count=16384

mkfs.ext4 $IMG
e2label $IMG $LBL

mkdir -p $MNT
mount -o loop $IMG $MNT
cp -r $APP $MNT
sync
umount $MNT
Run Code Online (Sandbox Code Playgroud)

我有完全的 root 访问权限,所以我可以设置/准备任何东西,但脚本将从非 root 帐户执行。

但是,我觉得可能有更好的方法甚至不需要安装,但我不确定..

filesystems mount dd not-root-user

11
推荐指数
3
解决办法
4317
查看次数

如何在“屏幕”中进行块选择

在 vim 中,有一个CtrlVto do 块选择。

我怎样才能做到screen

bash gnu-screen

10
推荐指数
1
解决办法
1962
查看次数

如何为 Beagleboard 从头开始​​(CLFS)为跨 Linux 构建 GCC 交叉编译器?

目前,我尝试使用Cross Linux from Scratch 中的说明从头开始构建嵌入式 Linux 。

一切正常,直到我尝试编译 GCC 交叉编译器。我想为 Beagleboard-xM 构建 Linux...所以我选择了以下设置:

export CLFS_ABI="aapcs-linux"
export CLFS_HOST="x86_64-cross-linux-gnu"
export CLFS_TARGET="armv7a-unknown-linux-uclibceabi"
export CLFS_ARCH="arm"
export CLFS_ENDIAN="little"
export CLFS_ARM_ARCH="armv7"
export CLFS_ARM_MODE="arm"
export CLFS_FLOAT="hard"
export CLFS_FPU="neon"
Run Code Online (Sandbox Code Playgroud)

不,只要我尝试运行此页面上的说明,命令就会make all-gcc all-target-libgcc出错。

checking for armv7a-unknown-linux-uclibceabi-gcc...  /mnt/clfs/sources/gcc-build/./gcc/xgcc -B/mnt/clfs/sources/gcc-build/./gcc/ -B/mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/bin/ -B/mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/lib/ -isystem /mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/include -isystem /mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/sys-include   
checking for suffix of object files... configure: error: in `/mnt/clfs/sources/gcc-build/armv7a-unknown-linux-uclibceabi/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make: *** [configure-target-libgcc] Error …
Run Code Online (Sandbox Code Playgroud)

embedded arm gcc cross-compilation

10
推荐指数
1
解决办法
3308
查看次数

如何禁用处理器的 L1 和 L2 缓存?

是否可以在 Ubuntu 14.04(最好使用 Python 等高级语言)上禁用 L1 和/或 L2 缓存?如果是这样,如何?

另外,在不同的架构之间禁用缓存会不会有很大的不同?如果是这样,我对 ARM Cortex-A15 更感兴趣。

编辑

在研究如何禁用缓存时,我确实从kernel.org 文档中找到了 /proc/sys/vm/ 中的“drop_caches”文件

“写入此内容将导致内核丢弃干净的缓存,以及可回收的平板对象,如 dentries 和 inode。一旦丢弃,它们的内存就会变得空闲。”

...

“这个文件不是控制各种内核缓存(inode、dentries、pagecache 等)增长的手段。当系统其他地方需要内存时,内核会自动回收这些对象。”

这似乎不是我正在寻找的,因为这不仅看起来不会禁用缓存,而且我认为虚拟内存驻留在操作系统中而不是硬件上。我的目标是禁用缓存,因此必须在其他地方寻找所需的内存,例如在 RAM 中。

编辑

澄清一下,我了解禁用缓存会对系统产生什么影响。但是,它是空间应用中常用的一种技术,可以提高安全关键应用的可靠性。以下是一些记录这种现象的资源:

通过高速缓存减少嵌入式软件辐射引起的故障

空间辐射环境中微处理器的地面辐射测试指南

甚至还有关于这个主题的书:

电子产品中的电离辐射效应:从存储器到成像器

linux ubuntu cache arm python

10
推荐指数
1
解决办法
7352
查看次数