diff --git a/src/uu/dmesg/src/dmesg.rs b/src/uu/dmesg/src/dmesg.rs
index 96c995b..3f97f48 100644
--- a/src/uu/dmesg/src/dmesg.rs
+++ b/src/uu/dmesg/src/dmesg.rs
@@ -30,6 +30,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
     let matches: clap::ArgMatches = uu_app().try_get_matches_from(args)?;
     if let Some(kmsg_file) = matches.get_one::<String>(options::KMSG_FILE) {
         dmesg.kmsg_file = kmsg_file;
+        dmesg.kmsg_record_separator = 0;
     }
     if matches.get_flag(options::JSON) {
         dmesg.output_format = OutputFormat::Json;
@@ -184,6 +185,7 @@ mod options {
 
 struct Dmesg<'a> {
     kmsg_file: &'a str,
+    kmsg_record_separator: u8,
     output_format: OutputFormat,
     time_format: TimeFormat,
     facility_filters: Option<HashSet<Facility>>,
@@ -196,6 +198,7 @@ impl Dmesg<'_> {
     fn new() -> Self {
         Dmesg {
             kmsg_file: "/dev/kmsg",
+            kmsg_record_separator: 10, // '\n'
             output_format: OutputFormat::Normal,
             time_format: TimeFormat::Raw,
             facility_filters: None,
@@ -259,7 +262,10 @@ impl Dmesg<'_> {
         let file = File::open(self.kmsg_file)
             .map_err_context(|| format!("cannot open {}", self.kmsg_file))?;
         let file_reader = BufReader::new(file);
-        Ok(RecordIterator { file_reader })
+        Ok(RecordIterator {
+            file_reader,
+            kmsg_record_separator: self.kmsg_record_separator
+        })
     }
 
     fn is_record_in_set<T>(
@@ -359,6 +365,7 @@ enum Level {
 
 struct RecordIterator {
     file_reader: BufReader<File>,
+    kmsg_record_separator: u8,
 }
 
 impl Iterator for RecordIterator {
@@ -379,7 +386,7 @@ impl Iterator for RecordIterator {
 impl RecordIterator {
     fn read_record_line(&mut self) -> UResult<Option<String>> {
         let mut buf = vec![];
-        let num_bytes = self.file_reader.read_until(0, &mut buf)?;
+        let num_bytes = self.file_reader.read_until(self.kmsg_record_separator, &mut buf)?;
         match num_bytes {
             0 => Ok(None),
             _ => Ok(Some(String::from_utf8_lossy(&buf).to_string())),