Tôi có một hệ thống Linux tối thiểu.
init là /bin/bash
, chỉ có tối thiểu các thư viện trong /lib/
, /dev/
được điền tĩnh, không có trình tiện ích nào đang chạy (không có udev, ..)
Khi bash bắt đầu, tôi gặp lỗi sau:
bash: cannot set terminal process group (-1) inappropriate ioctl for device
bash: no job control in this shell
Khi tôi bắt đầu bash với strace, tôi nhận được kết quả sau:
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
open("/dev/tty", O_RDWR|O_NONBLOCK) = -1 ENXIO (No such device or address)
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
....
readlink("/proc/self/fd/0", "/dev/console"..., 4095) = 12
stat("/dev/console", {st_mode=S_IFCHR|0600, st_rdev=makedev(5, 1), ...}) = 0
open("/dev/console", O_RDWR|O_NONBLOCK) = 3
Có vẻ như, bash không thể mở /dev/tty
. Nhưng /dev/tty
tồn tại trong /dev/
và có quyền chính xác:
ll /dev/tty*
crw-rw-rwT 1 root root 5, 0 2014-Sep-29 23:39:47 dev/tty
crw------T 1 root root 4, 0 2015-Dec-23 20:10:18 dev/tty0
crw------T 1 root root 4, 1 2015-Dec-23 20:10:18 dev/tty1
Tại sao không thể bash
mở /dev/tty
? Và ENXIO
lỗi này có nghĩa là gì?