mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-22 11:42:05 +00:00
add enable_kdump.rst,generate_img.rst,install_new_kernel.rst documentation
This commit is contained in:
parent
362c29a467
commit
2e43bd251e
@ -1,2 +1,170 @@
|
||||
Enable Kdump Over Ethernet
|
||||
==========================
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
kdump is an advanced crash dumping mechanism. When enabled, the system is booted from the context of another kernel. This second kernel reserves a small amount of memory, and its only purpose is to capture the core dump image in case the system crashes. Since being able to analyze the core dump helps significantly to determine the exact cause of the system failure.
|
||||
|
||||
|
||||
xCAT Interface
|
||||
--------------
|
||||
|
||||
The pkglist, exclude and postinstall files location and name can be obtained by running the following command: ::
|
||||
|
||||
lsdef -t osimage <osimage name>
|
||||
|
||||
The pkglist file
|
||||
----------------
|
||||
|
||||
For RHEL6 and RHEL7, there are two rpm packages for kdump: ::
|
||||
|
||||
kexec-tools
|
||||
crash
|
||||
|
||||
For SLES11, there are 3 rpm packages for kdump: ::
|
||||
|
||||
kdump
|
||||
kexec-tools
|
||||
makedumpfile
|
||||
|
||||
For SLES10, there are 4 rpm packages for kdump: ::
|
||||
|
||||
kernel-kdump
|
||||
kexec-tools
|
||||
kdump
|
||||
makedumpfile
|
||||
|
||||
Setup pkglist
|
||||
-------------
|
||||
|
||||
Before setting up kdump,the approprite rpms should be added to the pkglist file as found by running: ::
|
||||
|
||||
lsdef -t osimage <osimage name>
|
||||
|
||||
The exclude file
|
||||
----------------
|
||||
|
||||
The base diskless image excludes the /boot directory, but it is required for kdump. Update the exlist file and remove the entry for /boot. Then run the packimage or liteimg command to update your image with the changes.
|
||||
|
||||
The postinstall file
|
||||
--------------------
|
||||
|
||||
The kdump will create a new initrd which used in the dumping stage. The /tmp or /var/tmp directory will be used as the temporary directory. These 2 directory only are allocated 10M space by default. You need to enlarge it to 200M.
|
||||
|
||||
For RHELS6 or SLES10, modify the postinstall file to increase /tmp space: ::
|
||||
|
||||
tmpfs /var/tmp tmpfs defaults,size=200m 0 2
|
||||
|
||||
For SLES11, modify the postinstall file to increase /tmp/space: ::
|
||||
|
||||
tmpfs /tmp tmpfs defaults,size=200m 0 2
|
||||
|
||||
The dump attribute
|
||||
------------------
|
||||
|
||||
In order to support kdump, the dump attribute was added into linuximage table, which is used to define the remote path where the crash information should be dumped to. Use the chdef command to change the image's dump attribute using the URI format. ::
|
||||
|
||||
chdef -t osimage <image name> dump=nfs://<nfs_server_ip>/<kdump_path>
|
||||
|
||||
The <nfs_server_ip> can be excluded if the destination NFS server is the service or management node. ::
|
||||
|
||||
chdef -t osimage <image name> dump=nfs:///<kdump_path>
|
||||
|
||||
The crashkernelsize attribute
|
||||
-----------------------------
|
||||
|
||||
For system x machine, on sles10 set the crashkernelsize attribute like this: ::
|
||||
|
||||
chdef -t osimage <image name> crashkernelsize=<size>M@16M
|
||||
|
||||
On sles11 and rhels6 set the crashkernelsize attribute like this: ::
|
||||
|
||||
chdef -t osimage <image name> crashkernelsize=<size>M
|
||||
|
||||
Where <size> recommended value is 256. For more information about the size can refer to the following information:
|
||||
`<https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/ch-kdump.html#s2-kdump-configuration-cli>`_.
|
||||
|
||||
`<http://www.novell.com/support/kb/doc.php?id=3374462>`_.
|
||||
|
||||
`<https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-kdump-configuration-cli.html>`_.
|
||||
|
||||
`<http://www.novell.com/support/kb/doc.php?id=3374462>`_.
|
||||
|
||||
For system p machine, set the crashkernelsize attribute to this: ::
|
||||
|
||||
chdef -t osimage <image name> crashkernelsize=<size>@32M
|
||||
|
||||
Where <size> recommended value is 256, more information can refer the kdump document for the system x.
|
||||
|
||||
When your node starts, and you get a kdump start error like this: ::
|
||||
|
||||
Your running kernel is using more than 70% of the amount of space you reserved for kdump, you should consider increasing your crashkernel
|
||||
|
||||
You should modify this attribute using this chdef command: ::
|
||||
|
||||
chdef -t osimage <image name> crashkernelsize=512M@32M
|
||||
|
||||
If 512M@32M is not large enough, you should change the crashkernelsize larger like 1024M until the error message disappear.
|
||||
|
||||
The enablekdump postscript
|
||||
--------------------------
|
||||
|
||||
This postscript enablekdump is used to start the kdump service when the node is booting up. Add it to your nodes list of postscripts by running this command: ::
|
||||
|
||||
chdef -t node <node range> -p postscripts=enablekdump
|
||||
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
Currently, only NFS is supported for the setup of kdump.
|
||||
|
||||
If the dump attribute is not set, the kdump service will not be enabled.
|
||||
|
||||
Please make sure the NFS remote path(nfs://<nfs_server_ip>/<kdump_path>) is exported and it is read-writeable to the node where kdump service is enabled.
|
||||
|
||||
How to trigger kernel panic on Linux
|
||||
------------------------------------
|
||||
|
||||
Normally, kernel panic() will trigger booting into capture kernel. Once the kernel panic is triggered, the node will reboot into the capture kernel, and a kernel dump (vmcore) will be automatically saved to the directory on the specified NFS server (<nfs_server_ip>).
|
||||
|
||||
#. For RHESL6 the directory is <kdump_path>/var/crash/<node_ip>-<time>/
|
||||
|
||||
#. For SLES11 the directory is <kdump_path>/<node hostname>/<date>
|
||||
|
||||
#. For SLES10 the directory is <kdump_path>/<node hostname>
|
||||
|
||||
For RHELS6 testing purposes, you can simulate the trigger through /proc interface: ::
|
||||
|
||||
echo c > /proc/sysrq-trigger
|
||||
|
||||
For SLES11.1 testing, you can use the following commands: ::
|
||||
|
||||
echo 1 > /proc/sys/kernel/sysrq
|
||||
echo c > /proc/sysrq-trigger
|
||||
|
||||
This will force the Linux kernel to crash, and the address-YYYY-MM-DD-HH:MM:SS/vmcore file will be copied to the location you have selected on the specified NFS server directory.
|
||||
|
||||
Dump Analysis
|
||||
-------------
|
||||
|
||||
Once the system has returned from recovering the crash, you may wish to analyze the kernel dump file using the crash tool.
|
||||
|
||||
1.Locate the recent vmcore dump file.
|
||||
|
||||
2.Locate the kernel file for the crash server(the kernel is under /tftpboot/xcat/netboot/<OS name="">/<ARCH>/<profile>/kernel on management node).
|
||||
|
||||
3.One you have located a vmcore dump file and kernel file, call crash: ::
|
||||
|
||||
crash <vmcore_dump_file> <kernel_file>
|
||||
|
||||
If crash cannot find any files under /usr/lib/debug? Make sure you have the kernel-debuginfo package installed.
|
||||
|
||||
For more information about the dump analysis you can refer the following documents:
|
||||
|
||||
`<http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s1-kdump-crash.html RHEL document>`_
|
||||
|
||||
`<http://www.novell.com/support/kb/doc.php?id=3374462 SLES document>`_
|
||||
|
||||
|
||||
|
@ -1,8 +1,209 @@
|
||||
Generate Diskless Image
|
||||
=======================
|
||||
|
||||
The copycds command copies the contents of the linux distro media to /install/<os>/<arch> so that it will be available to install nodes with or create diskless images. After you execute copycds, there are several osimage definition created.You can run "tabdump osimage" to get the default osimage definition: ::
|
||||
|
||||
tabdump osimage
|
||||
|
||||
The output should be similar to the following: ::
|
||||
|
||||
"rhels7.1-ppc64le-install-compute",,"compute","linux",,"install",,"rhels7.1-ppc64le",,,"Linux","rhels7.1","ppc64le",,,,,,,,
|
||||
"rhels7.1-ppc64le-install-service",,"service","linux",,"install",,"rhels7.1-ppc64le",,,"Linux","rhels7.1","ppc64le",,,,,,,,
|
||||
"rhels7.1-ppc64le-stateful-mgmtnode",,"compute","linux",,"install",,"rhels7.1-ppc64le",,,"Linux","rhels7.1","ppc64le",,,,,,,,
|
||||
"rhels7.1-ppc64le-netboot-compute",,"compute","linux",,"netboot",,"rhels7.1-ppc64le",,,"Linux","rhels7.1","ppc64le",,,,,,,,
|
||||
|
||||
"rhels7.1-ppc64le-netboot-compute" is the default rhels7.1 ppc64le diskless osimage definition. Run genimage to generate the image based on the "rhels7.1-ppc64le-netboot-compute" definition: ::
|
||||
|
||||
genimage "rhels7.1-ppc64le-netboot-compute"
|
||||
|
||||
Before you pack the image, you have the opportunity to change any files in the image, by cd'ing to the rootimgdir (e.g./install/netboot/rhels7.1/ppc64le/compute/rootimg). Although, instead, we recommend that you make all changes to the image via your postinstall script, so that it is repeatable.Refer to :ref:`Using-Prescript-label:` for more details.
|
||||
|
||||
|
||||
Pack Diskless Image
|
||||
===================
|
||||
|
||||
After you run genimage to create the image, you can go ahead to pack the image to create the ramdisk: ::
|
||||
|
||||
packimage "rhels7.1-ppc64le-netboot-compute"
|
||||
|
||||
After you pack the image, you can go ahead to run nodeset to initialize the diskless installation. Refer to :doc:`deploy_os.rst` for details.
|
||||
|
||||
Export and Import Image
|
||||
=======================
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
Note: There is a current restriction that exported 2.7 xCAT images cannot be imported on 2.8 xCAT `<https://sourceforge.net/p/xcat/bugs/3813/>`_. This is no longer a restrictions, if you are running xCAT 2.8.3 or later.
|
||||
|
||||
We want to create a system of making xCAT images more portable so that they can be shared and prevent people from reinventing the wheel. While every install is unique there are some things that can be shared among different sites to make images more portable. In addition, creating a method like this allows us to create snap shots of images we may find useful to revert to in different situations.
|
||||
|
||||
Image exporting and importing are supported for statefull (diskfull), stateless (diskless) clusters. In the following chapters we'll show you how to use imgexport and imgimport commands to export and import images. The man pages for the commands can be found at `<http://xcat.sourceforge.net/man1/imgimport.1.html>`_ and `<http://xcat.sourceforge.net/man1/imgexport.1.html>`_
|
||||
|
||||
Exporting an image
|
||||
------------------
|
||||
|
||||
1, The user has a working image and the image is defined in the osimage table and linuximage table.
|
||||
example: ::
|
||||
|
||||
lsdef -t osimage myimage
|
||||
Object name: myimage
|
||||
exlist=/install/custom/netboot/sles/compute1.exlist
|
||||
imagetype=linux
|
||||
netdrivers=e1000
|
||||
osarch=ppc64le
|
||||
osname=Linux
|
||||
osvers=sles12
|
||||
otherpkgdir=/install/post/otherpkgs/sles12/ppc64
|
||||
otherpkglist=/install/custom/netboot/sles/compute1.otherpkgs.pkglist
|
||||
pkgdir=/install/sles11/ppc64le
|
||||
pkglist=/install/custom/netboot/sles/compute1.pkglist
|
||||
postinstall=/install/custom/netboot/sles/compute1.postinstall
|
||||
profile=compute1
|
||||
provmethod=netboot
|
||||
rootimgdir=/install/netboot/sles12/ppc64le/compute1
|
||||
synclists=/install/custom/netboot/sles/compute1.list
|
||||
2, The user runs the imgexport command.
|
||||
example: ::
|
||||
|
||||
imgexport myimage -p node1 -e /install/postscripts/myscript1 -e /install/postscripts/myscript2
|
||||
(-p and -e are optional)
|
||||
|
||||
A bundle file called myimage.tgz will be created under the current directory. The bundle file contains the ramdisk, boot kernel, the root image and all the configuration files for generating the image for a diskless cluster. For diskfull, it contains the kickstart/autoyast configuration file. (see appendix). The -p flag puts the names of the postscripts for node1 into the image bundle. The -e flags put additional files into the bundle. In this case two postscripts myscript1 and myscript2 are included.
|
||||
This image can now be used on other systems.
|
||||
|
||||
Importing an image
|
||||
------------------
|
||||
|
||||
#. User downloads a image bundle file from somewhere. (Sumavi.com will be hosting many of these).
|
||||
#. User runs the imgimport command.
|
||||
|
||||
example: ::
|
||||
|
||||
imgimport myimage.tgz -p group1
|
||||
(-p is optional)
|
||||
|
||||
This command fills out the osimage and linuximage tables, and populates file directories with appropriate files from the image bundle file such as ramdisk, boot kernel, root image, configuration files for diskless. Any additional files that come with the bundle file will also be put into the appropriate directories. If -p flag is specified, the postscript names that come with the image will be put the into the postscripts table for the given node or group.
|
||||
|
||||
Copy an image to a new image name on the MN
|
||||
-------------------------------------------
|
||||
|
||||
Very often, the user wants to make a copy of an existing image on the same xCAT mn as a start point to make modifications. In this case, you can run imgexport first as described on chapter 2, then run imgimport with -f flag to change the profile name of the image. That way the image will be copied into a different directory on the same xCAT mn.
|
||||
|
||||
example: ::
|
||||
|
||||
imgimport myimage.tgz -p group1 -f compute2
|
||||
|
||||
Modify an image (optional)
|
||||
-------------------------
|
||||
|
||||
Skip this section if you want to use the image as is.
|
||||
|
||||
1, The use can modify the image to fit his/her own need. The following can be modified.
|
||||
|
||||
* Modify .pkglist file to add or remove packges that are from the os distro
|
||||
|
||||
* Modify .otherpkgs.pkglist to add or remove packages from other sources. Please refer to ``Using_Updatenode`` for details
|
||||
|
||||
* For diskfull, modify the .tmpl file to change the kickstart/autoyast configuration
|
||||
|
||||
* Modify .synclist file to change the files that are going to be synchronized to the nodes
|
||||
|
||||
* Modify the postscripts table for the nodes to be deployed
|
||||
|
||||
* Modify the osimage and/or linuximage tables for the location of the source rpms and the rootimage location
|
||||
|
||||
2, Run genimage: ::
|
||||
|
||||
genimage image_name
|
||||
3, Run packimage: ::
|
||||
|
||||
packimage image_name
|
||||
|
||||
Deploying nodes
|
||||
---------------
|
||||
|
||||
You can change the provmethod of the node to the new image_name if different: ::
|
||||
|
||||
chdef <noderange> provmethod=<image_name>
|
||||
nodeset <noderange> osimage=<image_name>
|
||||
|
||||
and the node is ready to deploy.
|
||||
|
||||
Appendix
|
||||
--------
|
||||
|
||||
You can only export/import one image at a time. Each tarball will have the following simple structure: ::
|
||||
|
||||
manifest.xml
|
||||
<files>
|
||||
extra/ (optional)
|
||||
|
||||
manifest.xml
|
||||
~~~~~~~~~~~~
|
||||
|
||||
The manifest.xml will be analogous to an autoyast or windows unattend.xml file where it tells xCAT how to store the items. The following is an example for a diskless cluster: ::
|
||||
|
||||
manifest.xml:
|
||||
|
||||
<?xml version="1.0"?>
|
||||
<xcatimage>
|
||||
<exlist>/install/custom/netboot/sles/compute1.exlist</exlist>
|
||||
<extra>
|
||||
<dest>/install/postscripts</dest>
|
||||
<src>/install/postscripts/myscript1</src>
|
||||
</extra>
|
||||
<imagename>myimage</imagename>
|
||||
<imagetype>linux</imagetype>
|
||||
<kernel>/install/netboot/sles12/ppc64le/compute1/kernel</kernel>
|
||||
<netdrivers>e1000</netdrivers>
|
||||
<osarch>ppc64le</osarch>
|
||||
<osname>Linux</osname>
|
||||
<osvers>sles12</osvers>
|
||||
<otherpkgdir>/install/post/otherpkgs/sles12/ppc64</otherpkgdir>
|
||||
<otherpkglist>/install/custom/netboot/sles/compute1.otherpkgs.pkglist</otherpkglist>
|
||||
<pkgdir>/install/sles12/ppc64le</pkgdir>
|
||||
<pkglist>/install/custom/netboot/sles/compute1.pkglist</pkglist>
|
||||
<postbootscripts>my4,otherpkgs,my3,my4</postbootscripts>
|
||||
<postinstall>/install/custom/netboot/sles/compute1.postinstall</postinstall>
|
||||
<postscripts>syslog,remoteshell,my1,configrmcnode,syncfiles,my1,my2</postscripts>
|
||||
<profile>compute1</profile>
|
||||
<provmethod>netboot</provmethod>
|
||||
<ramdisk>/install/netboot/sles12/ppc64le/compute1/initrd-diskless.gz</ramdisk>
|
||||
<rootimg>/install/netboot/sles12/ppc64le/compute1/rootimg.gz</rootimg>
|
||||
<rootimgdir>/install/netboot/sles12/ppc64le/compute1</rootimgdir>
|
||||
<synclists>/install/custom/netboot/sles/compute1.list</synclists>
|
||||
</xcatimage>
|
||||
|
||||
In the above example, we have a directive of where the files came from and what needs to be processed.
|
||||
|
||||
|
||||
Note that even though source destination information is included, all files that are standard will be copied to the appropriate place that xCAT thinks they should go.
|
||||
|
||||
Exported files
|
||||
~~~~~~~~~~~~
|
||||
|
||||
The following files will be exported, assuming x is the profile name:
|
||||
|
||||
For diskfull: ::
|
||||
|
||||
x.pkglist
|
||||
x.otherpkgs.pkglist
|
||||
x.tmpl
|
||||
x.synclist
|
||||
|
||||
|
||||
For diskless: ::
|
||||
|
||||
kernel
|
||||
initrd.gz
|
||||
rootimg.gz
|
||||
x.pkglist
|
||||
x.otherpkgs.pkglist
|
||||
x.synclist
|
||||
x.postinstall
|
||||
x.exlist
|
||||
|
||||
|
||||
Note: Although the postscripts names can be exported by using the -p flag. The postscripts themselves are not included in the bundle file by default. The use has to use -e flag to get them included one by one if needed.
|
||||
|
||||
|
@ -0,0 +1,82 @@
|
||||
Installing a New Kernel in the Diskless Image
|
||||
=============================================
|
||||
[TODO : Verify on ppc64le]
|
||||
|
||||
Note: This procedure assumes you are using xCAT 2.6.1 or later.
|
||||
|
||||
The kerneldir attribute in linuximage table can be used to assign a directory containing kernel RPMs that can be installed into diskless images. The default for kernerdir is /install/kernels. To add a new kernel, create a directory named <kernelver> under the kerneldir, and genimage will pick them up from there.
|
||||
|
||||
The following examples assume you have the kernel RPM in /tmp and is using the default value for kerneldir (/install/kernels).
|
||||
|
||||
|
||||
The RPM names below are only examples, substitute your specific level and architecture.
|
||||
|
||||
|
||||
* **[RHEL]**
|
||||
|
||||
The RPM kernel package is usually named: kernel-<kernelver>.rpm.
|
||||
For example, kernel-3.10.0-229.ael7b.ppc64le.rpm means kernelver=3.10.0-229.ael7b.ppc64le. ::
|
||||
|
||||
mkdir -p /install/kernels/3.10.0-229.ael7b.ppc64le
|
||||
cp /tmp/kernel-3.10.0-229.ael7b.ppc64le.rpm /install/kernels/3.10.0-229.ael7b.ppc64le
|
||||
createrepo /install/kernels/3.10.0-229.ael7b.ppc64le/
|
||||
|
||||
Run genimage/packimage to update the image with the new kernel.
|
||||
Note: If downgrading the kernel, you may need to first remove the rootimg directory. ::
|
||||
|
||||
genimage <imagename> -k 3.10.0-229.ael7b.ppc64le
|
||||
packimage <imagename>
|
||||
|
||||
* **[SLES]**
|
||||
|
||||
The RPM kernel package is usually separated into two parts: kernel-<arch>-base and kernel<arch>.
|
||||
For example, /tmp contains the following two RPMs: ::
|
||||
|
||||
kernel-default-3.12.28-4.6.ppc64le.rpm
|
||||
kernel-default-base-3.12.28-4.6.ppc64le.rpm
|
||||
kernel-default-devel-3.12.28-4.6.ppc64le.rpm
|
||||
|
||||
|
||||
3.12.28-4.6.ppc64le is NOT the kernel version,3.12.28-4-ppc64le is the kernel version.
|
||||
The "4.6.ppc64le" is replaced with "4-ppc64le": ::
|
||||
|
||||
mkdir -p /install/kernels/3.12.28-4-ppc64le/
|
||||
cp /tmp/kernel-default-3.12.28-4.6.ppc64le.rpm /install/kernels/3.12.28-4-ppc64le/
|
||||
cp /tmp/kernel-default-base-3.12.28-4.6.ppc64le.rpm /install/kernels/3.12.28-4-ppc64le/
|
||||
cp /tmp/kernel-default-devel-3.12.28-4.6.ppc64le.rpm /install/kernels/3.12.28-4-ppc64le/
|
||||
|
||||
|
||||
Run genimage/packimage to update the image with the new kernel.
|
||||
Note: If downgrading the kernel, you may need to first remove the rootimg directory.
|
||||
|
||||
Since the kernel version name is different from the kernel rpm package name, the -g flag MUST to be specified on the genimage command. ::
|
||||
|
||||
genimage <imagename> -k 3.12.28-4-ppc64le 3.12.28-4.6
|
||||
packimage <imagename>
|
||||
|
||||
|
||||
Installing New Kernel Drivers to Diskless Initrd
|
||||
=================================================
|
||||
|
||||
|
||||
The kernel drivers in the diskless initrd are used for the devices during the netboot. If you are missing one or more kernel drivers for specific devices (especially for the network device), the netboot process will fail. xCAT offers two approaches to add additional drivers to the diskless initrd during the running of genimage.
|
||||
|
||||
Use the '-n' flag to add new drivers to the diskless initrd: ::
|
||||
|
||||
genimage <imagename> -n <new driver list>
|
||||
|
||||
|
||||
Generally, the genimage command has a default driver list which will be added to the initrd. But if you specify the '-n' flag, the default driver list will be replaced with your <new driver list>. That means you need to include any drivers that you need from the default driver list into your <new driver list>.
|
||||
|
||||
The default driver list: ::
|
||||
|
||||
rh-x86: tg3 bnx2 bnx2x e1000 e1000e igb mlx_en virtio_net be2net
|
||||
rh-ppc: e1000 e1000e igb ibmveth ehea
|
||||
rh-ppcle: ext3 ext4
|
||||
sles-x86: tg3 bnx2 bnx2x e1000 e1000e igb mlx_en be2net
|
||||
sels-ppc: tg3 e1000 e1000e igb ibmveth ehea be2net
|
||||
sles-ppcle: scsi_mod libata scsi_tgt jbd2 mbcache crc16 virtio virtio_ring libahci crc-t10dif scsi_transport_srp af_packet ext3 ext4 virtio_pci virtio_blk scsi_dh ahci megaraid_sas sd_mod ibmvscsi
|
||||
|
||||
Note: With this approach, xCAT will search for the drivers in the rootimage. You need to make sure the drivers have been included in the rootimage before generating the initrd. You can install the drivers manually in an existing rootimage (using chroot) and run genimage again, or you can use a postinstall script to install drivers to the rootimage during your initial genimage run.
|
||||
|
||||
Use the driver rpm package to add new drivers from rpm packages to the diskless initrd.Refer to the :doc:`cfg_second_adapter.rst` for details.
|
@ -12,4 +12,4 @@ Optional means all the subitems in this page are not necessary to finish an OS d
|
||||
additional_pkg.rst
|
||||
cfg_second_adapter.rst
|
||||
enable_kdump.rst
|
||||
|
||||
install_new_kernel.rst
|
||||
|
@ -0,0 +1 @@
|
||||
.. include:: ../../../common/deployment/install_new_kernel.rst
|
Loading…
x
Reference in New Issue
Block a user