From 3cb0f45a06c942918fce360bfa47304d14ec067a Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Tue, 13 Jun 2023 11:14:48 +0200 Subject: [PATCH 01/10] Fixed misleadingly wrong logging --- src/lib/installation/security_settings.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/installation/security_settings.rb b/src/lib/installation/security_settings.rb index 66c4c6a89..aa1783478 100644 --- a/src/lib/installation/security_settings.rb +++ b/src/lib/installation/security_settings.rb @@ -85,7 +85,7 @@ def propose_lsm_config def enable_firewall! Yast::PackagesProposal.AddResolvables("firewall", :package, ["firewalld"]) - log.info "Enabling Firewall" + log.info "Enabling firewall" self.enable_firewall = true end @@ -93,7 +93,7 @@ def enable_firewall! # service to be disabled def disable_firewall! Yast::PackagesProposal.RemoveResolvables("firewall", :package, ["firewalld"]) - log.info "Disabling Firewall" + log.info "Disabling firewall" self.enable_firewall = false end @@ -121,19 +121,19 @@ def open_ssh! # Set the ssh port to be closed def close_ssh! - log.info "Opening SSH port" + log.info "Closing SSH port" self.open_ssh = false end # Set the vnc port to be opened def open_vnc! - log.info "Close VNC port" + log.info "Opening VNC port" self.open_vnc = true end # Set the vnc port to be closed def close_vnc! - log.info "Close VNC port" + log.info "Closing VNC port" self.open_vnc = false end From e258f0373ee66e3282343765b8814223bf4b2e49 Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Tue, 13 Jun 2023 11:19:09 +0200 Subject: [PATCH 02/10] Consistent naming --- src/lib/installation/security_settings.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/installation/security_settings.rb b/src/lib/installation/security_settings.rb index aa1783478..9592ba680 100644 --- a/src/lib/installation/security_settings.rb +++ b/src/lib/installation/security_settings.rb @@ -144,7 +144,7 @@ def close_vnc! # authentication and the system is not accesible through ssh def access_problem? # public key is not the only way - return false unless only_public_key_auth + return false unless only_public_key_auth? # without running sshd it is useless return true unless @enable_sshd @@ -181,11 +181,11 @@ def global_section end def wanted_enable_sshd? - Yast::Linuxrc.usessh || only_public_key_auth || @enable_sshd + Yast::Linuxrc.usessh || only_public_key_auth? || @enable_sshd end def wanted_open_ssh? - Yast::Linuxrc.usessh || only_public_key_auth || @open_ssh + Yast::Linuxrc.usessh || only_public_key_auth? || @open_ssh end def wanted_open_vnc? @@ -197,7 +197,7 @@ def wanted_open_vnc? # @note If the root user does not have a password, we assume that we will use a public # key in order to log into the system. In such a case, we need to enable the SSH # service (including opening the port). - def only_public_key_auth + def only_public_key_auth? return true unless root_user password = root_user.password_content || "" From 0fa599381626f2f6b3ed6f07541326cad28abde5 Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Thu, 15 Jun 2023 09:48:46 +0200 Subject: [PATCH 03/10] Prevent premature check for empty root password --- src/lib/installation/security_settings.rb | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/lib/installation/security_settings.rb b/src/lib/installation/security_settings.rb index 9592ba680..591bd045b 100644 --- a/src/lib/installation/security_settings.rb +++ b/src/lib/installation/security_settings.rb @@ -181,27 +181,32 @@ def global_section end def wanted_enable_sshd? - Yast::Linuxrc.usessh || only_public_key_auth? || @enable_sshd + Yast::Linuxrc.usessh || @enable_sshd end def wanted_open_ssh? - Yast::Linuxrc.usessh || only_public_key_auth? || @open_ssh + Yast::Linuxrc.usessh || @open_ssh end def wanted_open_vnc? Yast::Linuxrc.vnc end - # Determines whether only public key authentication is supported + # Determines whether only public key authentication is supported. + # + # Do not call this prematurely before the user was even prompted for a root password; + # in particular, do not call this from the constructor of this class. # # @note If the root user does not have a password, we assume that we will use a public # key in order to log into the system. In such a case, we need to enable the SSH # service (including opening the port). def only_public_key_auth? - return true unless root_user + if root_user.nil? + log.warn("No root user created yet; can't check root password!") + return false + end password = root_user.password_content || "" - password.empty? end From 30dce8fd3b0ea6578613a2cf66ef4069c4ba034c Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Thu, 15 Jun 2023 10:03:41 +0200 Subject: [PATCH 04/10] Adapted unit tests to changes --- test/lib/clients/security_proposal_test.rb | 18 ++++++++++++++++-- test/lib/security_settings_test.rb | 14 ++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/test/lib/clients/security_proposal_test.rb b/test/lib/clients/security_proposal_test.rb index abd5cb09d..fdddbc7e9 100755 --- a/test/lib/clients/security_proposal_test.rb +++ b/test/lib/clients/security_proposal_test.rb @@ -26,6 +26,20 @@ subject(:client) { described_class.new } let(:proposal_settings) { Installation::SecuritySettings.create_instance } + def create_target_config + root = Y2Users::User.create_root + config = Y2Users::Config.new.attach(root) + + Y2Users::ConfigManager.instance.target = config + end + + before do + create_target_config + Y2Users::ConfigManager.instance.target.users.root.password = root_password + end + + let(:root_password) { Y2Users::Password.create_plain("s3cr3t") } + describe "#initialize" do it "instantiates a new proposal settings" do expect(Installation::SecuritySettings).to receive(:instance) @@ -154,7 +168,7 @@ let(:ssh_open) { true } before do - allow(proposal_settings).to receive(:only_public_key_auth).and_return(true) + allow(proposal_settings).to receive(:only_public_key_auth?).and_return(true) proposal_settings.enable_sshd = ssh_enabled proposal_settings.open_ssh = ssh_open end @@ -166,7 +180,7 @@ expect(proposal["warning"]).to be_nil end end - context "and the SSH port is close" do + context "and the SSH port is closed" do let(:ssh_open) { false } it "returns the proposal warning about the situation" do diff --git a/test/lib/security_settings_test.rb b/test/lib/security_settings_test.rb index 352e1de85..fd7212f0c 100755 --- a/test/lib/security_settings_test.rb +++ b/test/lib/security_settings_test.rb @@ -68,6 +68,12 @@ def create_target_config described_class.create_instance end + it "does not yet check for public key auth only" do + expect_any_instance_of(described_class).not_to receive(:only_public_key_auth?) + + described_class.create_instance + end + context "when firewall has been enabled in the control file" do let(:global_section) { { "enable_firewall" => true, "enable_sshd" => false } } @@ -290,19 +296,19 @@ def create_target_config subject.enable_sshd = ssh_enabled subject.enable_firewall = firewall_enabled subject.open_ssh = ssh_open - allow(subject).to receive(:only_public_key_auth).and_return(only_ssh_key_auth) + allow(subject).to receive(:only_public_key_auth?).and_return(only_ssh_key_auth) end context "when the root user uses only SSH key based authentication" do context "when sshd is enabled" do - context "and firewall is enabled" do + context "and the firewall is enabled" do context "and the SSH port is open" do it "returns false" do expect(subject.access_problem?).to eql(false) end end - context "and the SSH port is close" do + context "and the SSH port is closed" do let(:ssh_open) { false } it "returns true" do @@ -311,7 +317,7 @@ def create_target_config end end - context "and firewall is disabled" do + context "and the firewall is disabled" do let(:firewall_enabled) { false } it "returns false" do From 0553d5e360fc71c066145d79c8bacb46d8b153ac Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Thu, 15 Jun 2023 10:51:18 +0200 Subject: [PATCH 05/10] Separated proposal for SSHD settings --- .../installation/clients/security_proposal.rb | 6 ++++++ src/lib/installation/security_settings.rb | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/lib/installation/clients/security_proposal.rb b/src/lib/installation/clients/security_proposal.rb index fe8095116..04ec46b32 100755 --- a/src/lib/installation/clients/security_proposal.rb +++ b/src/lib/installation/clients/security_proposal.rb @@ -221,6 +221,12 @@ def firewall_proposal # Returns the SSH service part of the firewall proposal description # @return [String] proposal html text def sshd_proposal + # Check if only public key auth is configured, and if yes, + # enable SSHD and open the SSH port; but only now, after we are sure + # that the user was prompted for the root password (bsc#1211764). + @settings.propose unless @sshd_proposed # Only once to allow the user to override this + + @sshd_proposed = true if @settings.enable_sshd _( "SSH service will be enabled (disable)" diff --git a/src/lib/installation/security_settings.rb b/src/lib/installation/security_settings.rb index 591bd045b..8174d8db4 100644 --- a/src/lib/installation/security_settings.rb +++ b/src/lib/installation/security_settings.rb @@ -1,3 +1,4 @@ +# coding: utf-8 # Copyright (c) [2017-2021] SUSE LLC # # All Rights Reserved. @@ -78,6 +79,22 @@ def propose_lsm_config Yast::PackagesProposal.SetResolvables("LSM", :pattern, lsm_config.needed_patterns) end + # Make a proposal for the security settings: + # + # If only public key authentication is configured, and no root password is set, + # open the SSH port and enable SSHD so at least SSH access can be used. + # + # This should be called AFTER the user was prompted for the root password, e.g. + # when the security proposal is made during installation. + def propose + log.info("Making security settings proposal") + return unless only_public_key_auth? + + log.info("Only public key auth") + open_ssh! unless @open_ssh + enable_sshd! unless @enable_sshd + end + # Services # Add the firewall package to be installed and sets the firewalld service From b02c38fd6394f703963faef844e4dd8fb581ad95 Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Thu, 15 Jun 2023 10:51:50 +0200 Subject: [PATCH 06/10] New unit tests for SSHD proposal --- test/lib/clients/security_proposal_test.rb | 16 +++++++++++- test/lib/security_settings_test.rb | 30 ++++++++++++++++++++-- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/test/lib/clients/security_proposal_test.rb b/test/lib/clients/security_proposal_test.rb index fdddbc7e9..5a9ce73fb 100755 --- a/test/lib/clients/security_proposal_test.rb +++ b/test/lib/clients/security_proposal_test.rb @@ -183,7 +183,14 @@ def create_target_config context "and the SSH port is closed" do let(:ssh_open) { false } - it "returns the proposal warning about the situation" do + it "returns no warning for the the original proposal" do + proposal = client.make_proposal({}) + expect(proposal["warning"]).to be_nil + end + + it "returns a warning after the user changed settings manually" do + client.make_proposal({}) + proposal_settings.close_ssh! proposal = client.make_proposal({}) expect(proposal["warning"]).to include("might not be allowed") end @@ -193,7 +200,14 @@ def create_target_config context "and the SSH is disabled" do let(:ssh_enabled) { false } + it "returns no warning for the the original proposal" do + proposal = client.make_proposal({}) + expect(proposal["warning"]).to be_nil + end + it "returns the proposal warning about the situation" do + client.make_proposal({}) + proposal_settings.disable_sshd! proposal = client.make_proposal({}) expect(proposal["warning"]).to include("might not be allowed") end diff --git a/test/lib/security_settings_test.rb b/test/lib/security_settings_test.rb index fd7212f0c..1eccb290a 100755 --- a/test/lib/security_settings_test.rb +++ b/test/lib/security_settings_test.rb @@ -109,7 +109,9 @@ def create_target_config described_class.create_instance end end + end + describe "#propose" do context "when no root password was set" do let(:root_password) { Y2Users::Password.create_plain("") } @@ -117,11 +119,35 @@ def create_target_config allow(Yast::Linuxrc).to receive(:usessh).and_return(false) end - it "opens SSH to allow public key authentication" do + it "without propose does not change the SSH settings" do + expect_any_instance_of(described_class).not_to receive(:enable_sshd!) + expect_any_instance_of(described_class).not_to receive(:open_ssh!) + + described_class.create_instance + end + + it "with propose opens SSH to allow public key authentication" do expect_any_instance_of(described_class).to receive(:enable_sshd!) expect_any_instance_of(described_class).to receive(:open_ssh!) - described_class.create_instance + instance = described_class.create_instance + instance.propose + end + end + + context "when a root password was set" do + let(:root_password) { Y2Users::Password.create_plain("s3cr3t") } + + before do + allow(Yast::Linuxrc).to receive(:usessh).and_return(false) + end + + it "does not change the SSH settings" do + expect_any_instance_of(described_class).not_to receive(:enable_sshd!) + expect_any_instance_of(described_class).not_to receive(:open_ssh!) + + instance = described_class.create_instance + instance.propose end end end From 8758a510d4244d6e94a611485109f1b05f4c44ab Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Thu, 15 Jun 2023 12:09:22 +0200 Subject: [PATCH 07/10] Fixed rubocop complaint --- src/lib/installation/security_settings.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/installation/security_settings.rb b/src/lib/installation/security_settings.rb index 8174d8db4..8c9a33d5a 100644 --- a/src/lib/installation/security_settings.rb +++ b/src/lib/installation/security_settings.rb @@ -1,4 +1,3 @@ -# coding: utf-8 # Copyright (c) [2017-2021] SUSE LLC # # All Rights Reserved. From 997683d2efdae829fd90802e3c4646d6445a345b Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Thu, 15 Jun 2023 17:00:23 +0200 Subject: [PATCH 08/10] Moved the one-time proposal flag to the settings class --- src/lib/installation/clients/security_proposal.rb | 4 +--- src/lib/installation/security_settings.rb | 13 ++++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lib/installation/clients/security_proposal.rb b/src/lib/installation/clients/security_proposal.rb index 04ec46b32..3020d71cf 100755 --- a/src/lib/installation/clients/security_proposal.rb +++ b/src/lib/installation/clients/security_proposal.rb @@ -224,9 +224,7 @@ def sshd_proposal # Check if only public key auth is configured, and if yes, # enable SSHD and open the SSH port; but only now, after we are sure # that the user was prompted for the root password (bsc#1211764). - @settings.propose unless @sshd_proposed # Only once to allow the user to override this - - @sshd_proposed = true + @settings.propose if @settings.enable_sshd _( "SSH service will be enabled (disable)" diff --git a/src/lib/installation/security_settings.rb b/src/lib/installation/security_settings.rb index 8c9a33d5a..6c6438b7d 100644 --- a/src/lib/installation/security_settings.rb +++ b/src/lib/installation/security_settings.rb @@ -78,14 +78,19 @@ def propose_lsm_config Yast::PackagesProposal.SetResolvables("LSM", :pattern, lsm_config.needed_patterns) end - # Make a proposal for the security settings: + # Make a one-time proposal for the security settings: # # If only public key authentication is configured, and no root password is set, # open the SSH port and enable SSHD so at least SSH access can be used. # # This should be called AFTER the user was prompted for the root password, e.g. # when the security proposal is made during installation. + # + # This is done only once. Use 'reset_proposal' to do do it again. def propose + return if @proposal_done + + @proposal_done = true log.info("Making security settings proposal") return unless only_public_key_auth? @@ -94,6 +99,12 @@ def propose enable_sshd! unless @enable_sshd end + # Reset the proposal; i.e. the next call to 'propose' will do a fresh + # proposal. + def reset_proposal + @proposal_done = false + end + # Services # Add the firewall package to be installed and sets the firewalld service From 83ac7bdd0e02179ac6ffeb5dd2d0ebfe9bf62b77 Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Thu, 15 Jun 2023 17:02:23 +0200 Subject: [PATCH 09/10] Version bump and change log --- package/yast2-installation.changes | 6 ++++++ package/yast2-installation.spec | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/package/yast2-installation.changes b/package/yast2-installation.changes index 923af2c86..a6ba7cbce 100644 --- a/package/yast2-installation.changes +++ b/package/yast2-installation.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Jun 15 15:01:13 UTC 2023 - Stefan Hundhammer + +- Don't always enable sshd and open the ssh port (bsc#1211764) +- 4.4.59 + ------------------------------------------------------------------- Mon Nov 7 16:42:03 UTC 2022 - Ancor Gonzalez Sosa diff --git a/package/yast2-installation.spec b/package/yast2-installation.spec index 10a5b43d4..b9b0d3624 100644 --- a/package/yast2-installation.spec +++ b/package/yast2-installation.spec @@ -16,7 +16,7 @@ # Name: yast2-installation -Version: 4.4.58 +Version: 4.4.59 Release: 0 Summary: YaST2 - Installation Parts License: GPL-2.0-only From eed0811d4d07d1d4a67435b93d4e467a27f8d510 Mon Sep 17 00:00:00 2001 From: Stefan Hundhammer Date: Mon, 19 Jun 2023 10:37:20 +0200 Subject: [PATCH 10/10] Removed cruft --- doc/startup/pictures/basic.fig.bak | 76 ----------------- doc/startup/pictures/run.fig.bak | 133 ----------------------------- 2 files changed, 209 deletions(-) delete mode 100644 doc/startup/pictures/basic.fig.bak delete mode 100644 doc/startup/pictures/run.fig.bak diff --git a/doc/startup/pictures/basic.fig.bak b/doc/startup/pictures/basic.fig.bak deleted file mode 100644 index 7dcfb69f2..000000000 --- a/doc/startup/pictures/basic.fig.bak +++ /dev/null @@ -1,76 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 4770 1530 9180 2700 -2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 - 4860 1620 9180 1620 9180 2700 4860 2700 4860 1620 -2 2 0 1 0 7 50 -1 18 0.000 0 0 -1 0 0 5 - 4770 1530 9090 1530 9090 2610 4770 2610 4770 1530 --6 -6 4770 6030 9180 7200 -2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 - 4860 6120 9180 6120 9180 7200 4860 7200 4860 6120 -2 2 0 1 0 7 50 -1 18 0.000 0 0 -1 0 0 5 - 4770 6030 9090 6030 9090 7110 4770 7110 4770 6030 --6 -6 7290 2970 12060 3780 -2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 - 7380 3060 12060 3060 12060 3780 7380 3780 7380 3060 -2 2 0 1 0 7 50 -1 18 0.000 0 0 -1 0 0 5 - 7290 2970 11970 2970 11970 3690 7290 3690 7290 2970 --6 -6 7290 7470 12060 8280 -2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 - 7380 7560 12060 7560 12060 8280 7380 8280 7380 7560 -2 2 0 1 0 7 50 -1 18 0.000 0 0 -1 0 0 5 - 7290 7470 11970 7470 11970 8190 7290 8190 7290 7470 --6 -2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 - 4860 630 7650 630 7650 1080 4860 1080 4860 630 -2 2 0 1 0 7 50 -1 18 0.000 0 0 -1 0 0 5 - 4770 540 7560 540 7560 990 4770 990 4770 540 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 6120 1080 6120 1530 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 - 2 1 1.00 60.00 120.00 - 6120 2700 6120 3330 7290 3330 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 - 2 1 1.00 60.00 120.00 - 6120 7200 6120 7830 7290 7830 -2 1 1 2 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 3780 4860 12510 4860 -2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 150.00 120.00 - 8010 3690 8010 6030 -2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 150.00 120.00 - 8100 8280 8100 9090 -2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 150.00 120.00 - 6120 -270 6120 540 -4 0 0 50 -1 2 20 0.0000 4 195 930 5760 810 linuxrc\001 -4 0 0 50 -1 2 20 0.0000 4 255 2385 5130 1980 YaST2.First-Stage\001 -4 0 0 50 -1 2 12 0.0000 4 180 3195 5040 6750 Prepare environment to run YaST2 again\001 -4 0 0 50 -1 2 20 0.0000 4 255 2670 5040 6480 YaST2.Second-Stage\001 -4 0 0 50 -1 2 22 0.0000 4 240 4680 4950 4680 Save Session Reboot...\001 -4 0 0 50 -1 2 12 0.0000 4 180 3750 5130 2295 Prepare environment to run YaST2 the first time\001 -4 0 0 50 -1 2 20 0.0000 4 255 2505 7560 3420 YaST2.call (Initial)\001 -4 0 0 50 -1 2 20 0.0000 4 255 2880 7470 7920 YaST2.call (Continue)\001 -4 0 0 50 -1 2 12 0.0000 4 180 3285 8370 5355 /etc/init.d/boot calls YaST2.Second-Stage if\001 -4 0 0 50 -1 2 12 0.0000 4 165 2745 8370 5580 /var/lib/YaST2/runme_at_boot exist\001 -4 0 0 50 -1 2 14 0.0000 4 180 1905 10080 2835 HOOK: preFirstCall\001 -4 0 0 50 -1 2 14 0.0000 4 180 1980 10035 4050 HOOK: postFirstCall\001 -4 0 0 50 -1 2 14 0.0000 4 180 2115 9855 7290 HOOK: preSecondCall\001 -4 0 0 50 -1 2 14 0.0000 4 180 2190 9765 8550 HOOK: postSecondCall\001 -4 0 0 50 -1 2 12 0.0000 4 180 2970 6390 1350 /sbin/yast as link to YaST2-First-Stage\001 -4 0 0 50 -1 2 14 0.0000 4 180 2100 2610 2565 HOOK: postFirstStage\001 -4 0 0 50 -1 2 14 0.0000 4 180 2025 2610 1710 HOOK: preFirstStage\001 -4 0 0 50 -1 2 14 0.0000 4 180 2310 2385 7065 HOOK: postSecondStage\001 -4 0 0 50 -1 2 14 0.0000 4 180 2235 2385 6210 HOOK: preSecondStage\001 diff --git a/doc/startup/pictures/run.fig.bak b/doc/startup/pictures/run.fig.bak deleted file mode 100644 index d7e7e404c..000000000 --- a/doc/startup/pictures/run.fig.bak +++ /dev/null @@ -1,133 +0,0 @@ -#FIG 3.2 -Landscape -Center -Metric -A4 -55.00 -Single --2 -1200 2 -6 4590 270 8280 1260 -2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 - 4680 360 8280 360 8280 1260 4680 1260 4680 360 -2 2 0 1 0 7 50 -1 18 0.000 0 0 -1 0 0 5 - 4590 270 8190 270 8190 1170 4590 1170 4590 270 --6 -6 4590 4590 8280 5580 -2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 - 4680 4680 8280 4680 8280 5580 4680 5580 4680 4680 -2 2 0 1 0 7 50 -1 18 0.000 0 0 -1 0 0 5 - 4590 4590 8190 4590 8190 5490 4590 5490 4590 4590 --6 -6 6840 6750 9000 7650 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 9000 7650 9000 6750 6840 6750 6840 7650 9000 7650 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 6840 7110 9000 7110 -4 0 0 50 -1 2 20 0.0000 4 195 795 7020 7020 SSH...\001 -4 0 0 50 -1 2 12 0.0000 4 180 1155 6930 7380 Obtain options\001 --6 -6 1260 6750 3420 8910 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 1260 7110 3420 7110 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 3420 8910 3420 6750 1260 6750 1260 8910 3420 8910 -4 0 0 50 -1 2 20 0.0000 4 255 570 1440 7020 Qt...\001 -4 0 0 50 -1 2 12 0.0000 4 135 1230 1350 7380 Obtain X driver\001 -4 0 0 50 -1 2 12 0.0000 4 135 1125 1350 8460 Start X-Server\001 -4 0 0 50 -1 2 12 0.0000 4 180 1710 1350 8190 Setup Qt environment\001 -4 0 0 50 -1 2 12 0.0000 4 180 1380 1350 7920 PatchXF86Config\001 -4 0 0 50 -1 2 12 0.0000 4 180 1605 1350 7650 Obtain X server args\001 --6 -6 4590 9585 8280 11115 -6 4590 10485 8280 11115 -2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 - 4680 10542 8280 10542 8280 11115 4680 11115 4680 10542 -2 2 0 1 0 7 50 -1 18 0.000 0 0 -1 0 0 5 - 4590 10485 8190 10485 8190 11058 4590 11058 4590 10485 --6 -6 4590 9585 8280 10215 -2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 - 4680 9642 8280 9642 8280 10215 4680 10215 4680 9642 -2 2 0 1 0 7 50 -1 18 0.000 0 0 -1 0 0 5 - 4590 9585 8190 9585 8190 10158 4590 10158 4590 9585 --6 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 6300 10215 6300 10485 -4 0 0 50 -1 2 14 0.0000 4 180 3225 4770 10845 Call YaST2 with its startup options\001 -4 0 0 50 -1 2 14 0.0000 4 135 2130 4770 9945 Check selected medium\001 --6 -6 9630 6750 11790 7830 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 9630 7110 11790 7110 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 11790 7830 11790 6750 9630 6750 9630 7830 11790 7830 -4 0 0 50 -1 2 20 0.0000 4 195 855 9810 7020 VNC...\001 -4 0 0 50 -1 2 12 0.0000 4 135 1350 9720 7380 Start Xvnc server\001 -4 0 0 50 -1 2 12 0.0000 4 180 1770 9720 7650 Start Windowmanager\001 --6 -2 4 0 1 0 0 50 -1 20 0.000 0 0 7 0 0 5 - 11160 4050 4680 4050 4680 1890 11160 1890 11160 4050 -2 4 0 1 0 7 50 -1 18 0.000 0 0 7 0 0 5 - 11070 3960 4590 3960 4590 1800 11070 1800 11070 3960 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 4590 2250 11070 2250 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 5310 7830 5310 9585 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 7470 7650 7470 9585 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 - 2 1 1.00 60.00 120.00 - 2340 8910 2340 9855 4590 9855 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 - 2 1 1.00 60.00 120.00 - 10710 7830 10710 9855 8280 9855 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 5310 6390 5310 6750 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 7470 6390 7470 6750 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 6300 5580 6300 6390 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 6300 1260 6300 1800 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 6300 4050 6300 4590 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 4 - 2 1 1.00 60.00 120.00 - 2 1 1.00 60.00 120.00 - 2340 6750 2340 6390 10710 6390 10710 6750 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 6300 -90 6300 270 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 1.00 60.00 120.00 - 6345 11115 6345 11655 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 4050 7110 6210 7110 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 6210 7830 6210 6750 4050 6750 4050 7830 6210 7830 -4 0 0 50 -1 2 13 0.0000 4 180 2355 4770 900 Configure syslog for YaST2\001 -4 0 0 50 -1 2 13 0.0000 4 180 3270 4770 630 Setup proxy variables for HTTP / FTP\001 -4 0 0 50 -1 2 20 0.0000 4 195 1395 4770 2160 Initialize...\001 -4 0 0 50 -1 2 14 0.0000 4 180 1170 4860 2520 Setup PATH\001 -4 0 0 50 -1 2 14 0.0000 4 135 4155 4860 3600 Check if a framebuffer device can be accessed\001 -4 0 0 50 -1 2 14 0.0000 4 135 2550 4860 3330 Obtain the amount of RAM\001 -4 0 0 50 -1 2 14 0.0000 4 135 1920 4860 3060 Source /etc/install.inf\001 -4 0 0 50 -1 2 14 0.0000 4 180 3375 4860 2790 Obtain architecture and library path\001 -4 0 0 50 -1 2 13 0.0000 4 135 2805 4770 4860 Check which installation medium\001 -4 0 0 50 -1 2 13 0.0000 4 135 2940 4770 5130 can be used. Possible mediums are:\001 -4 0 0 50 -1 2 13 0.0000 4 165 1995 4770 5400 Qt NCURSES SSH VNC\001 -4 0 0 50 -1 0 14 0.0000 4 180 5115 6570 6075 Handle install.inf setting to decide for a installation medium\001 -4 0 0 50 -1 2 20 0.0000 4 195 1590 4230 7020 NCURSES...\001 -4 0 0 50 -1 2 12 0.0000 4 135 1455 4185 7380 Check for FbIterm\001 -4 0 0 50 -1 2 12 0.0000 4 180 1545 4185 7650 Create braille config\001 -4 0 0 50 -1 2 12 0.0000 4 180 2340 3690 11475 postFirstCall / postSecondCall\001 -4 0 0 50 -1 2 12 0.0000 4 180 2190 3690 90 preFirstCall / preSecondCall\001