在美国的大雪天气影响下,Linux之父Linus Torvalds的家经历了6天断电,但他还是2月底赶出了5.12-rc1内核。然而,事情不到一周却发生了转折。Linus本周给Linux内核邮件组的发去了一封警告邮件:我刚发布的5.12-rc1内核你们千万别用!你们中的某些人可能已经注意到,在我的公共git树中,“v5.12-rc1”标记已经神奇地重命名为“v5.12-rc1-dontuse”。
Linus之所以用“不要使用”(dontuse)来标记这些代码,是因为可能破坏交换文件(swapfile)的处理。具体来说,更新后的代码会丢失指向交换文件开头的适当偏移量,可能导致灾难性的后果。当发生此错误时,系统不仅会覆盖现有文件中的数据,还会覆盖大量的元数据,这些元数据的损坏可能会导致整个文件系统无法安装和使用。如果你根本不使用交换文件,那么这个问题不会造成任何伤害。
因为许多Linux发行版仍然默认交换分区,而不是交换文件。但是,应用最广的发行版Ubuntu默认使用交换文件。如果你是Ubuntu或以Ubuntu为基础的发行版(如Mint)用户,那么这个错误可能会破坏你整个根文件系统。昨天,Linus已经发布了5.12-rc2,修复了这个错误。不过,对Linux用户来说,还是不要轻易使用未经充分测试的rc版代码。
这类早期发布的内核版本可能会带来非常严重的bug,并不适合部署到生产中。