本方法用于忘记嵌入式linux系统root密码的找回。
前提:可以打开debug口
1、进入uboot
打开板子debug,上电,按任意键打断启动,进入uboot
2、查看环境变量
DM8168# print
baudrate=115200
board=DaVinci
board_name=DaVinci_DM8168
bootargs=console=ttyS1,115200n8 mem=128M0x0 rmem=8M@0x8000000 nmem=120M@0x8800000 init=/linuxrc ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs rw mtdparts=sfc_nand:1M(uboot),3M(kernel),-(root) lpj=11968512
bootcmd=nand read 0x80600000 0x100000 0x300000;bootm 0x80600000
bootdelay=1
3、修改环境变量
在原环境变量基础上添加' init=/bin/sh',这样开机后就可以直接进入shell
setenv bootargs 'console=ttyS1,115200n8 mem=128M0x0 rmem=8M@0x8000000 nmem=120M@0x8800000 init=/linuxrc ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs rw mtdparts=sfc_nand:1M(uboot),3M(kernel),-(root) lpj=11968512 init=/bin/sh'
注意,bootargs后的空格,以及环境变量要用英文单引号 '环境变量‘
设置完成后不要用 saveenv命令,这样setenv只生效一次,如果设置的环境变量有问题导致启动失败,只需要重新上电即可。
4、进入shell
设置完成后,输入‘boot’启动,进入shell
[root@DM_8168:~]# ls
bin etc mnt proc run sys tmp var
dev lib media opt root sbin system usr
5、修改密码
进入etc目录,删除密码
/etc # passwd root -d
Password for root changed by root
提升修改成功,完工。
如果etc下无passwd文件,需要新建一个,通过vi /etc/passwd命令新建,内容为/root:x:0:0:root:/home/root:/bin/sh
保存退出,然后 执行命令passwd root设置密码即可。