mkdir pibuildroot && cd pibuildroot wget ... tar zxvf .. cd ..看一下 board 下面很多 raspberrypiX 都 ln 到 raspberrypi。
裡面有 readme.txt。
有說 pi3 的話..
make raspberrypi3_defconfig用 make help 會列出一堆 make target。
然後用 make menuconfig 去看,就是arm 的 config 了。
而且因為是 pi3, 會用 cortex A53,不是 pi 一代的 arm11
要 enable PAM (linix-pam) 的話,在 packages/linux-pam
從 packages/Config.in 可以找到 linux-pam 的 menuconfig 位置。
Target packages -- Libraries -- Other從 linux-pam 的說明(警告),說,linux-pam 要 clibc 或是 glibc 才行。
所以menuconfig 的 toolchain 中,原來是 uclibc-ng,要改為 glibc。
這樣選完,就可以check linux-pam 了。
make 完畢,在 output/images 下的 sdcard.img,就拿來 dd 到 sdcard。
開機,console 就可以看到訊息。
沒有 check linux-pam 時,/etc 下沒有 pam.d 目錄。
check 之後,就有了。
在 /etc/pam.d/login 加一行:
auth required pam_securetty.so然後新增一個 /etc/securetty 空檔案。
為了避免沒版法login,新增一個 user。
這樣reboot 後,可以發現 在 uart 已經無法用 root login 了(login incorrect),但是用剛剛新增的 user 可以。
用新增的 user login 後, su - 成 root。
su - 成 root 後,修改 /etc/securetty,加上
console-- 因為用 w 看,login TTY 是 console,不是 tty1, ttyS0 之類,所以用 console
reboot,就發現又可以用 root login 了。
把 securetty 的console 拿掉,確認無法 login 後,再把 /etc/pam.d/login 的 auth pam_securetty.so 拿掉,是可以用 root login 的。
所以確認是 pam.d/login 的 auth pam_securetty.so 讓 /etc/securetty 生效。
有關buildroot 跟 busybox 在 PAM 上的關聯。
buildroot 的 script: package/busybox/busybox.mk: 有根據 buildroot 的 PAM 設定,自動設定 busybox 的 PAM。
# PAM support requires thread support in the toolchain ifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_TOOLCHAIN_HAS_THREADS),yy) define BUSYBOX_LINUX_PAM $(call KCONFIG_ENABLE_OPT,CONFIG_PAM,$(BUSYBOX_BUILD_CONFIG)) endef BUSYBOX_DEPENDENCIES += linux-pam else define BUSYBOX_LINUX_PAM $(call KCONFIG_DISABLE_OPT,CONFIG_PAM,$(BUSYBOX_BUILD_CONFIG)) endef endif所以會根據buildroot 的 PAM check/uncheck disable/disable busybox 的 PAM 設定。
所以要測試,enable linux-pam, disable busybox pam support 的話,就要到 output/build/busybox-1.31.1 單獨做 busybox 的 menuconfig。
的確沒有效了,root login OK
改用 util-linux 的 login。
--uncheck busybox 的 login
確認是 OK的,可以用 pam.d/login 跟 securetty 來限制 root login console
沒有留言:
張貼留言