|  | @@ -33,6 +33,7 @@ import java.lang.reflect.InvocationTargetException;
 | 
	
		
			
				|  |  |  import java.lang.reflect.Method;
 | 
	
		
			
				|  |  |  import java.nio.file.Files;
 | 
	
		
			
				|  |  |  import java.nio.file.Path;
 | 
	
		
			
				|  |  | +import java.util.Collections;
 | 
	
		
			
				|  |  |  import java.util.HashMap;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  import java.util.Map;
 | 
	
	
		
			
				|  | @@ -566,22 +567,33 @@ public class OsProbe {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | -     * The lines from {@code /etc/os-release} or {@code /usr/lib/os-release} as a fallback. These file represents identification of the
 | 
	
		
			
				|  |  | -     * underlying operating system. The structure of the file is newlines of key-value pairs of shell-compatible variable assignments.
 | 
	
		
			
				|  |  | +     * The lines from {@code /etc/os-release} or {@code /usr/lib/os-release} as a fallback, with an additional fallback to
 | 
	
		
			
				|  |  | +     * {@code /etc/system-release}. These files represent identification of the underlying operating system. The structure of the file is
 | 
	
		
			
				|  |  | +     * newlines of key-value pairs of shell-compatible variable assignments.
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  | -     * @return the lines from {@code /etc/os-release} or {@code /usr/lib/os-release}
 | 
	
		
			
				|  |  | -     * @throws IOException if an I/O exception occurs reading {@code /etc/os-release} or {@code /usr/lib/os-release}
 | 
	
		
			
				|  |  | +     * @return the lines from {@code /etc/os-release} or {@code /usr/lib/os-release} or {@code /etc/system-release}
 | 
	
		
			
				|  |  | +     * @throws IOException if an I/O exception occurs reading {@code /etc/os-release} or {@code /usr/lib/os-release} or
 | 
	
		
			
				|  |  | +     *                     {@code /etc/system-release}
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    @SuppressForbidden(reason = "access /etc/os-release or /usr/lib/os-release")
 | 
	
		
			
				|  |  | +    @SuppressForbidden(reason = "access /etc/os-release or /usr/lib/os-release or /etc/system-release")
 | 
	
		
			
				|  |  |      List<String> readOsRelease() throws IOException {
 | 
	
		
			
				|  |  |          final List<String> lines;
 | 
	
		
			
				|  |  |          if (Files.exists(PathUtils.get("/etc/os-release"))) {
 | 
	
		
			
				|  |  |              lines = Files.readAllLines(PathUtils.get("/etc/os-release"));
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | +            assert lines != null && lines.isEmpty() == false;
 | 
	
		
			
				|  |  | +            return lines;
 | 
	
		
			
				|  |  | +        } else if (Files.exists(PathUtils.get("/usr/lib/os-release"))) {
 | 
	
		
			
				|  |  |              lines = Files.readAllLines(PathUtils.get("/usr/lib/os-release"));
 | 
	
		
			
				|  |  | +            assert lines != null && lines.isEmpty() == false;
 | 
	
		
			
				|  |  | +            return lines;
 | 
	
		
			
				|  |  | +        } else if (Files.exists(PathUtils.get("/etc/system-release"))) {
 | 
	
		
			
				|  |  | +            // fallback for older Red Hat-like OS
 | 
	
		
			
				|  |  | +            lines = Files.readAllLines(PathUtils.get("/etc/system-release"));
 | 
	
		
			
				|  |  | +            assert lines != null && lines.size() == 1;
 | 
	
		
			
				|  |  | +            return Collections.singletonList("PRETTY_NAME=\"" + lines.get(0) + "\"");
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            return Collections.emptyList();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        assert lines != null && lines.isEmpty() == false;
 | 
	
		
			
				|  |  | -        return lines;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public OsStats osStats() {
 |