With the uname command, and it's different options, I can get kernel version installed on a machine.
Suppose if I wanted to find out the kernel version from an ISO image, by just mounting it (without installation). How can I find the complete kernel version from ISO with out installation?
You can use the command file.
file /mnt/boot/vmlinuz-x.y.z
This will generate an output like this
/boot/vmlinuz-3.6.10-2.fc17.x86_64: Linux kernel x86 boot executable bzImage, version 3.6.10-2.fc17.x86_64 (mockbuild#) #1 SMP Tue Dec 11 18:07:34 UT, RO-rootFS, swap_dev 0x4, Normal VGA
Note: Ubuntu kernel = casper/vmlinuz
Related
I run my program perfectly on my Raspberry Pi 3 when I run 32bit Raspibian. It is a Linux 5.10.33-v7+ #1 armv7l system. The programs were compiled on this system, in C++. If I copy the executables to another card with that system, it works.
However, these same executables do not run when I use Debian 4.19.181-1 aarch64 Linux 4.19.0.16-arm64 (I copy the compiled file and paste it on the other system ).
When trying to run, it returns:
-bash: ./Myprogram: No such file or directory.
If I try to run with bash Myprogram, it returns:
Myprogram: cannot execute binary file
From what I've researched, this is an incompatible architectural error.
I've already tried changing permissions with chmod.
I think 32bit files should work on a 64bit system.
The "file" command returns:
ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux),
dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for
GNU/Linux 3.2.0,
BuildID[sha1]=ad484c860b63e0d8735c2b7aa5c69f2e49caaf29, with
debug_info, not stripped
Thank you so much
I understand the problem is the architecture. But why can the same processor (same raspbery) run an armv7l OS and also an arm64 OS? How does compatibility work?
Why does raspberry run both arm64 OS and armv7l OS but not programs?
it's not just a 32 or 64 bit problem .
you are two differents architectures, for your program to work you have no choice, you must recompile it for this architecture.
If you want to make portability you can use systems like "Make".
I'm a newcomer for linux kernel development. This is second question about loading self-compiled kernel(current stable version 4.8.6). The error messages printed during booting are as below:
linux-05e3 mount[282]: mount: unknown filesystem type 'btrfs'
linux-05e3 systemd1: Dependency failed for Initrd Boot File System
linux-05e3 systemd1: Dependency failed for Reload Configuration
Actually the file system type of my root partition is 'btrfs', and it is no problem with kernel version 4.1.12.1-default.
My partition table is :
Result of uname -a is :
Linux linux-05e3 4.1.12-1-default #1 SMP PREEMPT Thu Oct 29 06:43:42
UTC 2015 (e24bad1) x86_64 x86_64 x86_64 GNU/Linux
The .config file is just copied from the one used for 4.1.12.1-default. And I've just ran make menuconfig with nothing modified after copying that file.
Can anyone give some useful tips to me. I really need a linux kernel development expert to give more instructions to me as a beginner. Thanks a million.
I am a beginner learning linux kernel module development. I am following a tutorial that says to recompile my kernel so as to enable various debugging features like forced module unloading e.t.c. Is is okay if I do that? Does it effects my pre-built kernel. In what cases that I am forced to insert a module into a running kernel and the kernel won't allow me to do so?
It is perfectly okay to compile and install a kernel to do kernel module development. If you are in ubuntu, you can follow the following steps to make sure that you are using the same kernel sources as your booted machine.
Step 1. Find out the linux being used in your booting from /boot/grub/grub.cfg file. Look for the entry agains 'linux ' in the boot option entries that you select while booting up.
Example excerpt : linux /boot/vmlinuz-3.13.0-24-generic root=UUID=e377a464-92db-4c07-86a9-b151800630c0 ro quiet splash $vt_handoff
Step 2. Look for the name of the package with the same version using the following command.
dpkg -l | grep linux | grep 3.13.0-24-generic
Example output:
$ dpkg -l | grep linux | grep 3.13.0-24-generic
ii linux-headers-3.13.0-24-generic 3.13.0-24.46 amd64 Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
ii linux-image-3.13.0-24-generic 3.13.0-24.46 amd64 Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii linux-image-extra-3.13.0-24-generic 3.13.0-24.46 amd64 Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
Step 3. Download sources of the package "linux-headers-3.13.0-24-generic" to get the same kernel that was used in your PC.
$ apt-get source linux-headers-3.13.0-24-generic
Step 4. Use the config file that is available at /boot/ folder as the config file to compile this kernel source
Example :
$ ls /boot/config-3.13.0-24-generic (Notice the same version used in this file)
Step 5. Turn on your debugging symbols on this config to do your testing.
Recompiling kernel help us to learn how kernel work.
latest kernel patches can be applied through kernel compile and install.
We can enable debug flag through compilation.
We can remove the not needed code.
Helps to add your own kernel code and test your code.
It is easy to recompile and install the linux kernel but it takes more time if we compile using low speed computer or VM.
I have a BBB with Linux pre-installed from the vendor. Here is output from uname -a:
Linux beaglebone 3.8.13 #1 SMP Wed Sep 4 09:09:32 CEST 2013 armv7l GNU/Linux
I am trying to make a Kernel Module, for example HelloWorld.ko for it.
I cloned code from git://github.com/RobertCNelson/linux-dev.git and checkout origin/am33x-v3.8. After I built a module on it and tried to insmod it on my BBB, I got error message:
Error: could not insert module Hello.ko: Invalid module format,
I double checked version of the kernel, it is 3.8.13-bone53. Is this the root cause? Where can I get the "exactly" matched kernel source tree for it? There is no version named 3.8.13 in my cloned git commit tree.
Thanks for your help!
I am a new Archer, and when I compile wireless driver on my computer, I come across a problem:
make: *** /lib/modules/3.1.4-1-ARCH/build: No such file or directory. Stop.
My wireless firmware is Broadcom BCM4313, and I have installed linux-headers-3.1.5-1 in my computer. I do not know how to solve this problem.
Here is some information about my system:
$ uname -a
Linux myhost 3.1.4-1-ARCH #1 SMP PREEMPT Tue Nov 29 09:08:04 UTC 2011 i686 AMD Phenom(tm) II N930 Quad-Core Processor AuthenticAMD GNU/Linux
$ ls /lib/modules/3.1.4-1-ARCH
extramodules modules.dep modules.order
kernel modules.dep.bin modules.pcimap
modules.alias modules.devname modules.seriomap
modules.alias.bin modules.ieee1394map modules.softdep
modules.builtin modules.inputmap modules.symbols
modules.builtin.bin modules.isapnpmap modules.symbols.bin
modules.ccwmap modules.ofmap modules.usbmap
I recommend you use broadcom-wl package. It works for me with broadcom 4312 (I know you have 4313, but i'm taking a wild guess it should work for you too). The module name will be wl. It's the closed source driver because the open source driver sometimes takes up to 100% of my CPU for some reason.
Installing packages from AUR: https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages