缘起
我的系统Gentoo x86_64,在启动时我用/etc/fstab挂载了4个Windows7的NTFS分区。
下面是我的/etc/fstab文件内容:
/dev/sda7 / ext4 noatime 0 1
/dev/sda1 /boot/efi vfat defaults 0 0
/dev/sda8 /home ext4 defaults 0 0
/dev/sda4 /mnt/software ntfs defaults 0 0
/dev/sda5 /mnt/data ntfs defaults 0 0
/dev/sda6 /mnt/backup ntfs defaults 0 0
/dev/sda3 /mnt/system ntfs defaults 0 0
这里是我的lsblk的输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 128M 0 part
├─sda3 8:3 0 58.5G 0 part /mnt/system
├─sda4 8:4 0 195.3G 0 part /mnt/software
├─sda5 8:5 0 244.1G 0 part /mnt/data
├─sda6 8:6 0 244.1G 0 part
├─sda7 8:7 0 29.3G 0 part /
└─sda8 8:8 0 159.9G 0 part /home
sr0 11:0 1 1024M 0 rom
这里是未修正前的错误输出:
[ 11.428530] systemd[1]: Device dev-disk-by\x2dpartlabel-Basic\x5cx20data\x5cx20partition.device appeared twice with dif
ferent sysfs paths /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sda/sda3 and /sys/devices/pci
0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sda/sda4
[ 13.027629] systemd[1]: Device dev-disk-by\x2dpartlabel-Basic\x5cx20data\x5cx20partition.device appeared twice with dif
ferent sysfs paths /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sda/sda3 and /sys/devices/pci
0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sda/sda6
[ 13.085674] systemd[1]: Device dev-disk-by\x2dpartlabel-Basic\x5cx20data\x5cx20partition.device appeared twice with dif
ferent sysfs paths /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sda/sda3 and /sys/devices/pci
0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sda/sda5
由于发生错误是在我升级了219版本之后,所以我立刻google了一下,发现也有人有同样的问题,但是并没有什么解决方案,于是在像systemd-devel的邮件列表发送了邮件,很快收到了回复,并且是systemd 的作者给予我的回复,我感到很荣幸,其实就是一个小问题,而且也不容易触发的一个问题,恰巧栽到我同上。
下面是作者的修改方案:
http://cgit.freedesktop.org/systemd/systemd/commit/?id=5259bcf6a638d8d489db1ddefd55327aa15f3e51
PS:
Gentoo目前还没有对此次补丁更新ebuild,所以我只有手动更新了,涉及了一个问题:如何emerge修改后的代码:
- 其实不难,打开ebuild一看,就是几个过程,fetch,unpack,compile,install,merge
- 所以我们只需要手动执行fetch,unpack,之后再去修改下源代码,继续执行后三步,问题即可解决
感谢:
- systemd-devel社区,他们的辛勤付出和对代码的高标准严要求,不放过一个小错误
- Gentoo论坛,如果不是他们对这个emerge 修改后源代码的讨论,我也不会认识ebuild这个东西。