From c968e584f0b21d9fda770bc725de3831447dfa30 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Sat, 12 Nov 2016 19:47:14 +0100 Subject: [PATCH] gh-20: add check for readable linux kernel --- lib/cangallo.rb | 1 + lib/cangallo/check.rb | 63 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 lib/cangallo/check.rb diff --git a/lib/cangallo.rb b/lib/cangallo.rb index c9d2a75..b3846a4 100644 --- a/lib/cangallo.rb +++ b/lib/cangallo.rb @@ -22,6 +22,7 @@ require 'cangallo/libguestfs' require 'cangallo/keybase' require 'cangallo/version' +require 'cangallo/check' class Cangallo def initialize diff --git a/lib/cangallo/check.rb b/lib/cangallo/check.rb new file mode 100644 index 0000000..35f57e0 --- /dev/null +++ b/lib/cangallo/check.rb @@ -0,0 +1,63 @@ + +# vim:tabstop=2:sw=2:et: + +# Copyright 2016, Javier Fontán Muiños +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +require 'rubygems' + +class Cangallo + class Check + def initialize + end + + def check + valid = true + + valid = valid_kernel = check_kernel + help_kernel if !valid_kernel + + + if !valid + text = "There is at least one one problem in your system." + + STDERR.puts + STDERR.puts text + end + + valid + end + + def check_kernel + Dir['/boot/vmlinuz*'].each do |file| + if File.readable?(file) + return true + end + end + + false + end + + def help_kernel + text = <<-EOT +libguestfs needs a kernel to boot it's qemu appliance. There is no kernel +in your /boot directory readable by your kernel. Change the permissions of +at least one kernel in that directory to be readable by the current user. + EOT + + STDERR.puts text + end + end +end +