O NetBSD usa níveis seguros de kernel para determinar quais operações podem ser executadas em um sistema em execução. Do link:
-1 Permanently insecure mode
- Don't raise the securelevel on boot
0 Insecure mode
- The
init
process (PID 1) may not be traced or accessed byptrace(2)
,systrace(4)
, orprocfs
.- Immutable and append-only file flags may be changed
- All devices may be read or written subject to their permissions
Note: You can't run X11 above this securelevel
Try
sysutils/aperture
if you really need it.1 Secure mode
- All effects of securelevel 0
/dev/mem
and/dev/kmem
may not be written to- Raw disk devices of mounted file systems are read-only
- Immutable and append-only file flags may not be removed
- Kernel modules may not be loaded or unloaded
- The net.inet.ip.sourceroute
sysctl(8)
variable may not be changed- Adding or removing
sysctl(9)
nodes is denied- The RTC offset may not be changed
- Set-id coredump settings may not be altered
- Attaching the IP-based kernel debugger,
ipkdb(4)
, is not allowed- Device pass-thru requests that may be used to perform raw disk and/or memory access are denied
iopl
andioperm
calls are denied- Access to unmanaged memory is denied
2 Highly secure mode
- All effects of securelevel 1
- Raw disk devices are always read-only whether mounted or not
- New disks may not be mounted, and existing mounts may only be downgraded from read-write to read-only
- The system clock may not be set backwards or close to overflow
- Per-process coredump name may not be changed
- Packet filtering and NAT rules may not be altered
Meu sistema estava rodando em securelevel 1, então "os módulos do Kernel não podem ser carregados ou descarregados". Além disso, a configuração de npf=YES
in rc.conf
não carrega automaticamente o módulo do kernel associado. Não é possível reduzir o nível de segurança do kernel no tempo de execução, portanto as opções são:
- Inicialize em um nível de segurança mais baixo, carregue o módulo e aumente o nível de segurança ou
- Carregue o módulo durante a inicialização
Claramente, esta é a melhor opção. Para carregar um módulo do kernel na inicialização, é preciso garantir que rc.conf
contenha:
modules=YES
Em seguida, edite (ou crie) /etc/modules.conf
para conter uma lista de módulos para carregar, um por linha. Neste caso:
# echo npf >> /etc/modules.conf