How does the same Linux version work on different hardware
My understanding is that the kernel understands how to communicate with the different hardware in a system via specific device trees.
How is it that I can download one version of Ubuntu and I am able to install this on any system where the hardware may vary?
The same goes for the BeagleBone embedded boards. There is a default Debian image which can flash to any of the different type of BeagleBone boards which have different peripherals. How does it know which device tree / device tree overlay to use when the same image works for all?
linux ubuntu disk-image device-tree beagleboneblack
add a comment |
My understanding is that the kernel understands how to communicate with the different hardware in a system via specific device trees.
How is it that I can download one version of Ubuntu and I am able to install this on any system where the hardware may vary?
The same goes for the BeagleBone embedded boards. There is a default Debian image which can flash to any of the different type of BeagleBone boards which have different peripherals. How does it know which device tree / device tree overlay to use when the same image works for all?
linux ubuntu disk-image device-tree beagleboneblack
add a comment |
My understanding is that the kernel understands how to communicate with the different hardware in a system via specific device trees.
How is it that I can download one version of Ubuntu and I am able to install this on any system where the hardware may vary?
The same goes for the BeagleBone embedded boards. There is a default Debian image which can flash to any of the different type of BeagleBone boards which have different peripherals. How does it know which device tree / device tree overlay to use when the same image works for all?
linux ubuntu disk-image device-tree beagleboneblack
My understanding is that the kernel understands how to communicate with the different hardware in a system via specific device trees.
How is it that I can download one version of Ubuntu and I am able to install this on any system where the hardware may vary?
The same goes for the BeagleBone embedded boards. There is a default Debian image which can flash to any of the different type of BeagleBone boards which have different peripherals. How does it know which device tree / device tree overlay to use when the same image works for all?
linux ubuntu disk-image device-tree beagleboneblack
linux ubuntu disk-image device-tree beagleboneblack
asked 14 hours ago
Engineer999Engineer999
1266
1266
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
The device drivers (i.e. the part of the kernel that interact directly with the hardware) can be compiled as kernel modules. These are separate files, which can be loaded or unloaded by the kernel, as necessary, depending on the hardware present in the system.
The generic kernels that are shipped with mainstream Linux distributions tend to be supplied with all of the drivers for every conceivable piece of hardware compiled as modules. So, when the kernel boots up on a given system, it probes out and detects what hardware is on the system and then directs the userspace program, udev
, to load whatever kernel modules are needed for the specific hardware.
Urgh! I forgot to mentionudev
! +1
– Fabby
14 hours ago
Thanks. I notice with Windows, when we install it, different hardware gets detected and then then the specific drivers for different hardware gets installed for use with Windows. Therefore if for example we swap the hard disk from a HP computer to a Dell computer, it probably won't work due to the wrong drivers installed. With Linux however I guess this is different?? The hardware gets detected and the device drivers get loaded on boot-up every time?
– Engineer999
14 hours ago
1
@Engineer999 yup unless you have very old or very new hardware that the kernel knows nothing about and then you might have to build a custom kernel.
– Fabby
14 hours ago
@Engineer999 I believe it should do. By default, all of the drivers/modules are provided, for as much hardware as possible. Except very new hardware, as Fabby mentioned.
– Time4Tea
14 hours ago
1
Or old obsolete hardware @Time4Tea modules do get removed too.
– Fabby
14 hours ago
|
show 4 more comments
The Linux Kernel Map shows in some detail the device control. It contains something called "drivers" and "modules" that can be extended by "Loadable Kernel Modules".
E.G.: USB devices generally have a module that gets loaded when the device gets attached whereas the USB root hub is statically linked into the kernel and an nVidia card need a driver downloaded from nVidia.
That's why most distributions run on a wide variety of hardware, but not necessarily all very new hardware, which might need a separate module or a driver.
For more information on the difference between a driver and a module have a look here
How the kernel knows which modules to load digs deeper into the hardware layer and it does it by enumerating:
- the PCI bus
- the SCSI bus
- the USB hub
- the DSPs
...
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f495169%2fhow-does-the-same-linux-version-work-on-different-hardware%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
The device drivers (i.e. the part of the kernel that interact directly with the hardware) can be compiled as kernel modules. These are separate files, which can be loaded or unloaded by the kernel, as necessary, depending on the hardware present in the system.
The generic kernels that are shipped with mainstream Linux distributions tend to be supplied with all of the drivers for every conceivable piece of hardware compiled as modules. So, when the kernel boots up on a given system, it probes out and detects what hardware is on the system and then directs the userspace program, udev
, to load whatever kernel modules are needed for the specific hardware.
Urgh! I forgot to mentionudev
! +1
– Fabby
14 hours ago
Thanks. I notice with Windows, when we install it, different hardware gets detected and then then the specific drivers for different hardware gets installed for use with Windows. Therefore if for example we swap the hard disk from a HP computer to a Dell computer, it probably won't work due to the wrong drivers installed. With Linux however I guess this is different?? The hardware gets detected and the device drivers get loaded on boot-up every time?
– Engineer999
14 hours ago
1
@Engineer999 yup unless you have very old or very new hardware that the kernel knows nothing about and then you might have to build a custom kernel.
– Fabby
14 hours ago
@Engineer999 I believe it should do. By default, all of the drivers/modules are provided, for as much hardware as possible. Except very new hardware, as Fabby mentioned.
– Time4Tea
14 hours ago
1
Or old obsolete hardware @Time4Tea modules do get removed too.
– Fabby
14 hours ago
|
show 4 more comments
The device drivers (i.e. the part of the kernel that interact directly with the hardware) can be compiled as kernel modules. These are separate files, which can be loaded or unloaded by the kernel, as necessary, depending on the hardware present in the system.
The generic kernels that are shipped with mainstream Linux distributions tend to be supplied with all of the drivers for every conceivable piece of hardware compiled as modules. So, when the kernel boots up on a given system, it probes out and detects what hardware is on the system and then directs the userspace program, udev
, to load whatever kernel modules are needed for the specific hardware.
Urgh! I forgot to mentionudev
! +1
– Fabby
14 hours ago
Thanks. I notice with Windows, when we install it, different hardware gets detected and then then the specific drivers for different hardware gets installed for use with Windows. Therefore if for example we swap the hard disk from a HP computer to a Dell computer, it probably won't work due to the wrong drivers installed. With Linux however I guess this is different?? The hardware gets detected and the device drivers get loaded on boot-up every time?
– Engineer999
14 hours ago
1
@Engineer999 yup unless you have very old or very new hardware that the kernel knows nothing about and then you might have to build a custom kernel.
– Fabby
14 hours ago
@Engineer999 I believe it should do. By default, all of the drivers/modules are provided, for as much hardware as possible. Except very new hardware, as Fabby mentioned.
– Time4Tea
14 hours ago
1
Or old obsolete hardware @Time4Tea modules do get removed too.
– Fabby
14 hours ago
|
show 4 more comments
The device drivers (i.e. the part of the kernel that interact directly with the hardware) can be compiled as kernel modules. These are separate files, which can be loaded or unloaded by the kernel, as necessary, depending on the hardware present in the system.
The generic kernels that are shipped with mainstream Linux distributions tend to be supplied with all of the drivers for every conceivable piece of hardware compiled as modules. So, when the kernel boots up on a given system, it probes out and detects what hardware is on the system and then directs the userspace program, udev
, to load whatever kernel modules are needed for the specific hardware.
The device drivers (i.e. the part of the kernel that interact directly with the hardware) can be compiled as kernel modules. These are separate files, which can be loaded or unloaded by the kernel, as necessary, depending on the hardware present in the system.
The generic kernels that are shipped with mainstream Linux distributions tend to be supplied with all of the drivers for every conceivable piece of hardware compiled as modules. So, when the kernel boots up on a given system, it probes out and detects what hardware is on the system and then directs the userspace program, udev
, to load whatever kernel modules are needed for the specific hardware.
answered 14 hours ago
Time4TeaTime4Tea
1,071321
1,071321
Urgh! I forgot to mentionudev
! +1
– Fabby
14 hours ago
Thanks. I notice with Windows, when we install it, different hardware gets detected and then then the specific drivers for different hardware gets installed for use with Windows. Therefore if for example we swap the hard disk from a HP computer to a Dell computer, it probably won't work due to the wrong drivers installed. With Linux however I guess this is different?? The hardware gets detected and the device drivers get loaded on boot-up every time?
– Engineer999
14 hours ago
1
@Engineer999 yup unless you have very old or very new hardware that the kernel knows nothing about and then you might have to build a custom kernel.
– Fabby
14 hours ago
@Engineer999 I believe it should do. By default, all of the drivers/modules are provided, for as much hardware as possible. Except very new hardware, as Fabby mentioned.
– Time4Tea
14 hours ago
1
Or old obsolete hardware @Time4Tea modules do get removed too.
– Fabby
14 hours ago
|
show 4 more comments
Urgh! I forgot to mentionudev
! +1
– Fabby
14 hours ago
Thanks. I notice with Windows, when we install it, different hardware gets detected and then then the specific drivers for different hardware gets installed for use with Windows. Therefore if for example we swap the hard disk from a HP computer to a Dell computer, it probably won't work due to the wrong drivers installed. With Linux however I guess this is different?? The hardware gets detected and the device drivers get loaded on boot-up every time?
– Engineer999
14 hours ago
1
@Engineer999 yup unless you have very old or very new hardware that the kernel knows nothing about and then you might have to build a custom kernel.
– Fabby
14 hours ago
@Engineer999 I believe it should do. By default, all of the drivers/modules are provided, for as much hardware as possible. Except very new hardware, as Fabby mentioned.
– Time4Tea
14 hours ago
1
Or old obsolete hardware @Time4Tea modules do get removed too.
– Fabby
14 hours ago
Urgh! I forgot to mention
udev
! +1– Fabby
14 hours ago
Urgh! I forgot to mention
udev
! +1– Fabby
14 hours ago
Thanks. I notice with Windows, when we install it, different hardware gets detected and then then the specific drivers for different hardware gets installed for use with Windows. Therefore if for example we swap the hard disk from a HP computer to a Dell computer, it probably won't work due to the wrong drivers installed. With Linux however I guess this is different?? The hardware gets detected and the device drivers get loaded on boot-up every time?
– Engineer999
14 hours ago
Thanks. I notice with Windows, when we install it, different hardware gets detected and then then the specific drivers for different hardware gets installed for use with Windows. Therefore if for example we swap the hard disk from a HP computer to a Dell computer, it probably won't work due to the wrong drivers installed. With Linux however I guess this is different?? The hardware gets detected and the device drivers get loaded on boot-up every time?
– Engineer999
14 hours ago
1
1
@Engineer999 yup unless you have very old or very new hardware that the kernel knows nothing about and then you might have to build a custom kernel.
– Fabby
14 hours ago
@Engineer999 yup unless you have very old or very new hardware that the kernel knows nothing about and then you might have to build a custom kernel.
– Fabby
14 hours ago
@Engineer999 I believe it should do. By default, all of the drivers/modules are provided, for as much hardware as possible. Except very new hardware, as Fabby mentioned.
– Time4Tea
14 hours ago
@Engineer999 I believe it should do. By default, all of the drivers/modules are provided, for as much hardware as possible. Except very new hardware, as Fabby mentioned.
– Time4Tea
14 hours ago
1
1
Or old obsolete hardware @Time4Tea modules do get removed too.
– Fabby
14 hours ago
Or old obsolete hardware @Time4Tea modules do get removed too.
– Fabby
14 hours ago
|
show 4 more comments
The Linux Kernel Map shows in some detail the device control. It contains something called "drivers" and "modules" that can be extended by "Loadable Kernel Modules".
E.G.: USB devices generally have a module that gets loaded when the device gets attached whereas the USB root hub is statically linked into the kernel and an nVidia card need a driver downloaded from nVidia.
That's why most distributions run on a wide variety of hardware, but not necessarily all very new hardware, which might need a separate module or a driver.
For more information on the difference between a driver and a module have a look here
How the kernel knows which modules to load digs deeper into the hardware layer and it does it by enumerating:
- the PCI bus
- the SCSI bus
- the USB hub
- the DSPs
...
add a comment |
The Linux Kernel Map shows in some detail the device control. It contains something called "drivers" and "modules" that can be extended by "Loadable Kernel Modules".
E.G.: USB devices generally have a module that gets loaded when the device gets attached whereas the USB root hub is statically linked into the kernel and an nVidia card need a driver downloaded from nVidia.
That's why most distributions run on a wide variety of hardware, but not necessarily all very new hardware, which might need a separate module or a driver.
For more information on the difference between a driver and a module have a look here
How the kernel knows which modules to load digs deeper into the hardware layer and it does it by enumerating:
- the PCI bus
- the SCSI bus
- the USB hub
- the DSPs
...
add a comment |
The Linux Kernel Map shows in some detail the device control. It contains something called "drivers" and "modules" that can be extended by "Loadable Kernel Modules".
E.G.: USB devices generally have a module that gets loaded when the device gets attached whereas the USB root hub is statically linked into the kernel and an nVidia card need a driver downloaded from nVidia.
That's why most distributions run on a wide variety of hardware, but not necessarily all very new hardware, which might need a separate module or a driver.
For more information on the difference between a driver and a module have a look here
How the kernel knows which modules to load digs deeper into the hardware layer and it does it by enumerating:
- the PCI bus
- the SCSI bus
- the USB hub
- the DSPs
...
The Linux Kernel Map shows in some detail the device control. It contains something called "drivers" and "modules" that can be extended by "Loadable Kernel Modules".
E.G.: USB devices generally have a module that gets loaded when the device gets attached whereas the USB root hub is statically linked into the kernel and an nVidia card need a driver downloaded from nVidia.
That's why most distributions run on a wide variety of hardware, but not necessarily all very new hardware, which might need a separate module or a driver.
For more information on the difference between a driver and a module have a look here
How the kernel knows which modules to load digs deeper into the hardware layer and it does it by enumerating:
- the PCI bus
- the SCSI bus
- the USB hub
- the DSPs
...
edited 14 hours ago
answered 14 hours ago
FabbyFabby
3,84811229
3,84811229
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f495169%2fhow-does-the-same-linux-version-work-on-different-hardware%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown