Class: Bootloader::SerialConsole
- Inherits:
-
Object
- Object
- Bootloader::SerialConsole
- Defined in:
- src/lib/bootloader/serial_console.rb
Overview
Represents parameters for console. Its main intention is easy parsing serial console parameters parameters for grub or kernel and generate it to keep it in sync.
Constant Summary
- PARITY_MAP =
{ "n" => "no", "o" => "odd", "e" => "even" }.freeze
- SPEED_DEFAULT =
9600
- PARITY_DEFAULT =
"no".freeze
- WORD_DEFAULT =
"".freeze
- KERNEL_PARAM_REGEXP =
REGEXP that separate usefull parts of kernel parameter for serial console matching groups are:
-
serial console device
-
console unit
-
speed of serial console ( baud rate )
-
parity of serial console ( just first letter )
-
word length for serial console
For details see en.wikipedia.org/wiki/Serial_port
-
/(ttyS|ttyAMA)([[:digit:]]*),?([[:digit:]]*)([noe]*)([[:digit:]]*)/
Class Method Summary (collapse)
-
+ (Bootloader::SerialConsole?) load_from_console_args(console_args)
Loads serial console configuration from parameters passed to grub.
-
+ (Bootloader::SerialConsole?) load_from_kernel_args(kernel_params)
Loads serial console configuration from parameters passed to kernel.
Instance Method Summary (collapse)
-
- (Object) console_args
generates serial command for grub2.
-
- (SerialConsole) initialize(unit, speed = SPEED_DEFAULT, parity = PARITY_DEFAULT, word = WORD_DEFAULT)
constructor
A new instance of SerialConsole.
-
- (Object) kernel_args
generates kernel argument usable for passing it with
console=
.
Constructor Details
- (SerialConsole) initialize(unit, speed = SPEED_DEFAULT, parity = PARITY_DEFAULT, word = WORD_DEFAULT)
Returns a new instance of SerialConsole
79 80 81 82 83 84 85 |
# File 'src/lib/bootloader/serial_console.rb', line 79 def initialize(unit, speed = SPEED_DEFAULT, parity = PARITY_DEFAULT, word = WORD_DEFAULT) @unit = unit @speed = speed @parity = parity @word = word end |
Class Method Details
+ (Bootloader::SerialConsole?) load_from_console_args(console_args)
Loads serial console configuration from parameters passed to grub
68 69 70 71 72 73 74 75 76 77 |
# File 'src/lib/bootloader/serial_console.rb', line 68 def self.load_from_console_args(console_args) unit = console_args[/--unit=(\S+)/, 1] return nil unless unit speed = console_args[/--speed=(\S+)/, 1] || SPEED_DEFAULT parity = console_args[/--parity=(\S+)/, 1] || PARITY_DEFAULT word = console_args[/--word=(\S+)/, 1] || WORD_DEFAULT new(unit, speed, parity, word) end |
+ (Bootloader::SerialConsole?) load_from_kernel_args(kernel_params)
Loads serial console configuration from parameters passed to kernel
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'src/lib/bootloader/serial_console.rb', line 39 def self.load_from_kernel_args(kernel_params) console_parameters = kernel_params.parameter("console") return nil unless console_parameters console_parameters = Array(console_parameters) # use only the last parameter (bnc#870514) serial_console = console_parameters.last return nil if serial_console !~ /ttyS/ && serial_console !~ /ttyAMA/ unit = serial_console[KERNEL_PARAM_REGEXP, 2] return nil if unit.empty? speed = serial_console[KERNEL_PARAM_REGEXP, 3] speed = SPEED_DEFAULT if speed.empty? parity = serial_console[KERNEL_PARAM_REGEXP, 4] parity = PARITY_DEFAULT[0] if parity.empty? parity = PARITY_MAP[parity] word = serial_console[KERNEL_PARAM_REGEXP, 5] new(unit, speed, parity, word) end |
Instance Method Details
- (Object) console_args
generates serial command for grub2
95 96 97 98 99 100 |
# File 'src/lib/bootloader/serial_console.rb', line 95 def console_args res = "serial --unit=#{@unit} --speed=#{@speed} --parity=#{@parity}" res << " --word=#{@word}" unless @word.empty? res end |
- (Object) kernel_args
generates kernel argument usable for passing it with
console=<result>
88 89 90 91 92 |
# File 'src/lib/bootloader/serial_console.rb', line 88 def kernel_args serial_console = Yast::Arch.aarch64 ? "ttyAMA" : "ttyS" "#{serial_console}#{@unit},#{@speed}#{@parity[0]}#{@word}" end |