Hot answers tagged

4

You've identified pretty much the only difference: the Debian kernel can load firmware, the Linux-libre kernel can't. Both kernels are free software, even as far as the Free Software Foundation is concerned — the FSF considers the Debian GNU/Linux distribution to be free software as long as no repositories are used beyond the main one; the issue they have ...


3

That is pretty much the main, major and only difference: linux-libre is the linux kernel with the "firmware binary blobs" removed. What the FSF calls the firmware blobs are the parts of the linux kernel that are incompatible with the philosophy of free software. Often these pieces of firmware are in binary blobs which does not even come with any kind of ...


2

TL;DR sh->sector is the number of sectors in the physical disks after the start of the data section Setup Here's a simple test setup to illustrate: /dev/raidme/rd[0-3], 2GB devices /dev/md127 created as a raid5 over these 5, init'd as xfs and filled with random data Now to get started, get a non-zero block and overwrite it # dd if=/dev/raidme/rd0 ...


2

From: http://developer.toradex.com/device-tree-customization Nodes can be referenced using the ampersand (&) character and the label. Overwriting properties To overwrite a property, the node needs to be referenced using the ampersand character and the label. Later device tree entries overwrite earlier entries (the sequence order of entries is what ...


2

According to the man page: Linux supports PTHREAD_SCOPE_SYSTEM, but not PTHREAD_SCOPE_PROCESS And if you take a look at the glibc's implementation: 0034 /* Catch invalid values. */ 0035 switch (scope) 0036 { 0037 case PTHREAD_SCOPE_SYSTEM: 0038 iattr->flags &= ~ATTR_FLAG_SCOPEPROCESS; 0039 break; 0040 0041 case ...


2

Files in /dev are mostly created by the udev process which receives events from the kernel by listening to the netlink socket for NETLINK_KOBJECT_UEVENT (see man 7 netlink). The events are sent when a new kernel object (kobject) is created. These objects are also seen in the /sys sysfs filesystem. In particular, files named dev in the /sys/devices subtree ...


2

New system calls are added pretty rarely. Most new kernel functionality can be reached through a few general mechanisms: File descriptors are a very general feature for resource management. Custom actions on file descriptors happen through ioctl. Interactions are also possible through the proc filesystem and its variant sysfs for hardware- and driver-...


2

In do_mounts.c, the variable saved_root_name is set to the value of the root= command line parameter, if present. This value is a path-like string passed by the kernel, it typically looks like /dev/something (though the /dev/ prefix is optional) but it doesn't actually correspond to any on-disk path. If the root= parameter is absent, the value of ROOT_DEV is ...


2

There is no single repository of documentation about Linux kernel threads. Some basic documentation of the Linux kernel exists in the Documentation directory, but there is no specific part about kernel threads (some threads are mentioned in passing in the documentation of the feature they participate in). Beyond this, the (excuse for a) documentation ...


2

You don't need to patch anything. You just need to configure and compile the kernel by yourself. This is advanced task so it is not for begginers. The trick is to configure the kernel to support just your hardware and compile everything inside the kernel and not as a module (at least the drivers necessary for booting: disk controller, filesystem, …). There ...


1

The easiest solution is to have two rules defining eth0 in the 70-persistent-net.rules file, one each for the relevant MAC addresses in each server. This version of the file should be the same on both servers. When booted on server1, server1's MAC address gets eth0. When booted on server2, server2's MAC address gets eth0. e.g. SUBSYSTEM=="net", ACTION=="...


1

If dtc is available on your platform (else, install the device-tree-compiler package), you can use: dtc -I fs /sys/firmware/devicetree/base


1

The device tree is exposed as a hierarchy of directories and files in /proc. You can cat the files, eg: find /proc/device-tree/ -type f -exec head {} + | less Beware, most file content ends with a null char, and some may contain other non-printing characters.


1

Linux drivers are kernel modules. This means they can be part of the big binary file that is the kernel (and therefore built-in), or loaded later after the kernel starts. The only drivers you really have to have built into the kernel are those to access the root filesystem. Even then, it's possible to have a useable system without such drivers if you ...


1

Unlike certain other operating systems such as Windows, which builds a list of the hardware with its corresponding drivers that it will follow every boot, many Linux distributions will include kernel modules to support most hardware configurations to provide the ease of use that you seem to like. Doing that obviously makes the boot process longer as the ...


1

I'm guessing you're working on an ARM kernel (MIGHT_HAVE_PCI is only used for arc and arm). As you noticed, CONFIG_PCI depends on CONFIG_MIGHT_HAVE_PCI; the latter isn't a user-selectable option, it's a setting selected by ARM platforms, via the "ARM system type" option, or specific SoCs or machines, via their own options (e.g. "AT91RM9200" in the Atmel SoCs)...


1

Those options work by passing options to the compiler, so the most straightforward way is to recompile the kernel. However for a reproducible and module-specific way kbuild allows you to set custom CFLAGs on a per-module basis. https://www.kernel.org/doc/Documentation/kbuild/makefiles.txt You particularly want to set -fno-stack-protector for the modules ...


1

The design of most modern operating systems employs flat memory model where the segments concept introduced with Intel 80286 is not in use and Linux among them. The OS kernel requires the user process memory space to be directly addressable by the kernel in favor of performance, so the 2^32 address space is split between the kernel and a user space process. ...


1

The operating system will not use more memory than it can handle in its allocation table. Since the maximum number of bytes that can be represented with 32 bits is 4 294 967 296, that limits the memory to 4GB. On 64 bit systems, the maximum would therefore be 18 446 744 073 709 551 616 bytes (16 777 216 TB) which will obviously not be an issue for ...


1

Yes, Linux could do fragmentation, but like incoming packets, the kernel try hard not to do fragmentation on first place (e.g. with path MTU discovery before to sending, receiving data). You can see e.g. https://github.com/torvalds/linux/blob/master/net/ipv4/ip_output.c function ip_do_fragment


1

You might get somewhere browsing the torvalds git tree, eg for the file time/hrtimer.c. Click on blame and for each line number you see the last patch applied. You can also browse the history for older patches.


1

By default, Linux kernel reserves lowest 64K of system memory for BIOS and repeatedly scans that part of the memory for unexpected changes. If background scanning process notices that the memory has been unexpectedly changed (corrupted) it spams the kernel log with something along the lines Corrupted low memory at <virtual address> (<address> ...



Only top voted, non community-wiki answers of a minimum length are eligible