Comments (13)
- It will be quicker to build the updated genesis-base locally in your environment.
- As you are building it locally, why not just add a
modprobe ice
at
instead of this wholeif
conditional - this can be maintained as part of a organization-local patch-set to apply. We've had to do this for xCAT customizations that were too specific for our environment as compared to upstream xCAT.
from xcat-core.
@samveen It is required to load other drivers also using modprobe as we have to support multiple NIC interfaces available. Thats the reason added loop for all drivers in modules.dep file for x86_64
architecture. Similar loop present for ppc64
architecture as well. The drivers which are not required is excluded by added grep -vE
option as mentioned in the script.
Can I create PR for this change and is it possible to create a new xCAT genesis base rpm file in next release and keep in the tarball?
from xcat-core.
@abhishek-sa1 what I mean is that that on x86_64 platform the command that you run the give a lot more output than just network drivers:
cat /lib/modules/$KERVER/modules.dep |grep -vE 'tunnel|ieee|ifb|bond|dummy|fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci'| awk -F: '{print \$1}'
The exception list list on x86_64 will need to be much greater than just these.
from xcat-core.
@samveen
Without adding modprobe for all drivers in x86_64, custom genesis base image ss getting stuck for other Intel and Broadcom NIC cards as mentioned below:
Initially I had same block like it is present in ppc64. For ppc64 also we are loading all drivers in module.dep file. Is there any reason we are loading all drivers in ppc64?
elif [[ ${ARCH} =~ x86_64 ]]; then
# load all network driver modules listed in /lib/modules/<kernel>/modules.dep file
KERVER=`uname -r`
for line in `cat /lib/modules/$KERVER/modules.dep | awk -F: '{print \$1}' | sed -e "s/\(.*\)\.ko.*/\1/"`; do
if [[ $line =~ "kernel/drivers/net" ]]; then
modprobe `basename $line`
fi
done
fi
Reason for adding tunnel|ieee|ifb|bond|dummy
in exception list is due to unwanted NICs which are getting loaded in genesis image as mentioned below.
Reason for adding fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci
is due to modprobe error visible on the screen while booting genesis image.
from xcat-core.
@abhishek-sa1 Filtering for kernel/drivers/net
and adding line count at the end of the grep as below:
cat /lib/modules/$KERVER/modules.dep |grep -vE 'tunnel|ieee|ifb|bond|dummy|fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci'| awk -F: '{print $1}' |grep 'kernel/drivers/net'| wc -l
I get 236 modules on a Centos 7 system: that is 236 modules getting loaded. I expect you will get a similar number too. All this is not required. (for example WiFi or USB networking drivers).
Instead of loading drivers uselessly, build a custom genesis image for your environment , after loading only those modules that your environment needs at :
Just simple modprobe ice
should be enough. If not, add the other required modules to modprobe
as well, instead of trying to load all modules as below:
for mod in "ice" "and" "other" "modules" ; do
modprobe $mod
done
from xcat-core.
@samveen in ppc64
architecture we are loading all 252 modules. We need all drivers in ppc64?
xcat-core/xCAT-genesis-builder/xcat-cmdline.sh
Lines 53 to 60 in bb7a4bb
from xcat-core.
@samveen we are using RHEL8 for building rpm. Not CentOS7.
from xcat-core.
@abhishek-sa1 did you run the test on RHEL8? what was the result of the test?
from xcat-core.
@samveen I had run buildrpm command to create genesis base rpm for x86_64 in RHEL8 and it was successful. I had removed existing genesis base rpm for x86_64 and installed new one which I created. I was able to boot genesis image in RHEL8.6. I could disover all nodes in bmc discovery method using this genesis image.
from xcat-core.
@abhishek-sa1 please run the following command on rhel8 and give me the output:
cat /lib/modules/$(uname -r)/modules.dep |grep -vE 'tunnel|ieee|ifb|bond|dummy|fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci'| awk -F: '{print $1}' |grep 'kernel/drivers/net'| wc -l
from xcat-core.
[root@springcp ~]# cat /lib/modules/$(uname -r)/modules.dep |grep -vE 'tunnel|ieee|ifb|bond|dummy|fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci'| awk -F: '{print $1}' |grep 'kernel/drivers/net'| wc -l
249
from xcat-core.
@abhishek-sa1 As you can see, loading 249 modules will be overkill, not to mention take up kernel memory needlessly.
That is why I proposed that you add just the modules you require rather than try and pick from the kernel module dependency list as below:
for mod in "ice" "and" "other" "modules" ; do modprobe $mod done
from xcat-core.
@samveen Thanks for the information.
from xcat-core.
Related Issues (20)
- Compatibility Query: xCAT Support for RHEL 7.9 HOT 1
- hardeths scripts does not update both GATEWAY information when there are 2 active NIC present on target nodes HOT 15
- xCAT status? HOT 8
- genimage fails when installed on RHEL 8.8 HOT 1
- DNS entries not getting updated using confignetwork script HOT 2
- Removing a file from a sync'ed directory in `synclist` won't remove it from the destination node HOT 1
- Unable to perform nodeset [Ubuntu 22.04.3] HOT 1
- Intermittent: [xcatprobe] DHCP service is failing on consecutive run in ubuntu [22.04.3]
- Xcat: makedns is causing to failure of named service in ubuntu 22.04.3
- Error: Can not create bootstraps for rootimage. Make sure you specified full http mirror path.
- Why does the latest documentation branch reference 2.16.6? HOT 2
- xcatprobe xcatmn fails on IP doesn't belong to any network defined in 'networks' table HOT 1
- RHEL 9 support HOT 12
- hpilo plugin fix for ILO5 HOT 1
- postscript remoteshell loops for a long time HOT 3
- diskless compute node after restart is not boot showing grub error HOT 1
- genimage command failed HOT 3
- Misprint osdistoname instead of osdistroname. Missed r
- Missed debian in OS definition
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xcat-core.