Skip to content

Commit

Permalink
feat: support setting kernel parameters
Browse files Browse the repository at this point in the history
Support setting kernel parameters via machine config.

Fixes: #6206

Signed-off-by: Noel Georgi <[email protected]>
  • Loading branch information
frezbo committed Sep 5, 2022
1 parent bd56621 commit 5e21cca
Show file tree
Hide file tree
Showing 15 changed files with 118 additions and 8 deletions.
1 change: 1 addition & 0 deletions api/resource/definitions/runtime/runtime.proto
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import "resource/definitions/enums/enums.proto";
// KernelModuleSpecSpec describes Linux kernel module to load.
message KernelModuleSpecSpec {
string name = 1;
repeated string parameters = 2;
}

// KernelParamSpecSpec describes status of the defined sysctls.
Expand Down
23 changes: 23 additions & 0 deletions hack/release.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,29 @@ preface = """\

[notes]

[notes.kernel_modules]
title = "Kernel Modules"
description = """\
Talos now supports settings kernel module parameters.
Eg:
```yaml
machine:
kernel:
modules:
- name: "br_netfilter"
parameters:
- nf_conntrack_max=131072
```
"""

[notes.sbc]
title = "Nano Pi R4S"
description = """\
Talos now supports the Nano Pi R4S SBC.
"""

[notes.updates]
title = "Component Updates"
description="""\
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ func (ctrl *KernelModuleConfigController) Run(ctx context.Context, r controller.

if err = r.Modify(ctx, item, func(res resource.Resource) error {
res.(*runtime.KernelModuleSpec).TypedSpec().Name = module.Name()
res.(*runtime.KernelModuleSpec).TypedSpec().Parameters = module.Parameters()

return nil
}); err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package runtime
import (
"context"
"fmt"
"strings"

"github.com/cosi-project/runtime/pkg/controller"
"github.com/cosi-project/runtime/pkg/resource"
Expand Down Expand Up @@ -68,8 +69,9 @@ func (ctrl *KernelModuleSpecController) Run(ctx context.Context, r controller.Ru
// note: this code doesn't support module unloading in any way for now
for _, res := range modules.Items {
module := res.(*runtime.KernelModuleSpec).TypedSpec()
parameters := strings.Join(module.Parameters, " ")

if err = manager.Load(module.Name, "", 0); err != nil {
if err = manager.Load(module.Name, parameters, 0); err != nil {
return fmt.Errorf("error loading module %q: %w", module.Name, err)
}
}
Expand Down
16 changes: 13 additions & 3 deletions pkg/machinery/api/resource/definitions/runtime/runtime.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pkg/machinery/config/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -599,4 +599,5 @@ type Kernel interface {
// KernelModule describes Linux module to load.
type KernelModule interface {
Name() string
Parameters() []string
}
5 changes: 5 additions & 0 deletions pkg/machinery/config/types/v1alpha1/v1alpha1_kernel.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,8 @@ func (kc *KernelConfig) Modules() []config.KernelModule {
func (kmc *KernelModuleConfig) Name() string {
return kmc.ModuleName
}

// Parameters implements config.KernelModule interface.
func (kmc *KernelModuleConfig) Parameters() []string {
return kmc.ModuleParameters
}
3 changes: 3 additions & 0 deletions pkg/machinery/config/types/v1alpha1/v1alpha1_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -2549,4 +2549,7 @@ type KernelModuleConfig struct {
// description: |
// Module name.
ModuleName string `yaml:"name"`
// description: |
// Module parameters, changes applied after reboot.
ModuleParameters []string `yaml:"parameters,omitempty"`
}
7 changes: 6 additions & 1 deletion pkg/machinery/config/types/v1alpha1/v1alpha1_types_doc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion pkg/machinery/config/types/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions pkg/machinery/resources/runtime/deep_copy.generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions pkg/machinery/resources/runtime/kernel_module_spec.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@ type KernelModuleSpec = typed.Resource[KernelModuleSpecSpec, KernelModuleSpecRD]
//
//gotagsrewrite:gen
type KernelModuleSpecSpec struct {
Name string `yaml:"string" protobuf:"1"`
// more options in the future: args, aliases, etc.
Name string `yaml:"string" protobuf:"1"`
Parameters []string `yaml:"parameters" protobuf:"2"`
// more options in the future: aliases, etc.
}

// NewKernelModuleSpec initializes a KernelModuleSpec resource.
Expand Down
1 change: 1 addition & 0 deletions website/content/v1.3/reference/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -3002,6 +3002,7 @@ KernelModuleSpecSpec describes Linux kernel module to load.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| name | [string](#string) | | |
| parameters | [string](#string) | repeated | |



Expand Down
1 change: 1 addition & 0 deletions website/content/v1.3/reference/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -2920,5 +2920,6 @@ Appears in:
| Field | Type | Description | Value(s) |
|-------|------|-------------|----------|
|`name` |string |Module name. | |
|`parameters` |[]string |Module parameters, changes applied after reboot. | |


0 comments on commit 5e21cca

Please sign in to comment.