uboot实践:uboot引导内核相关笔记
前言
? ? ? ? 其實,就是一邊工作,一邊寫的筆記。
一 將需要的文件通過scp命令發送發板子
語法如下:????????
scp file_name user_name@192.168.0.250:/home/root/????????含義:將scp文件傳送到192.168.0.25地址的/home/root/目錄。
二 普通根文件系統的啟動
從fat分區啟動的bootcmd和bootargs
setenv bootcmd 'mmc dev 1 1; fatload mmc 1:1 80800000 zimage;fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb;;bootz 80800000 - 83000000;'
bootargs的值需要強調的是,中間不需要分號“;”間隔。添加了分號可能會報錯。
setenv bootargs ' console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw;'
從ext4分區啟動的bootcmd和bootargs
setenv bootcmd 'mmc dev 1 2;ext4load mmc 1:2 80800000 /home/root/zImage;ext4load mmc 1:2 83000000 /home/root/imx6ull-14x14-emmc-7-1024x600-c.dtb;;bootz 80800000 - 83000000;'
bootargs的值不用改,
setenv bootargs ' console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw;'
遍歷/home/root/中的文件
ext4ls mmc 1:2 /home/root
=ext4ls mmc 1:2 /home/root <DIR> 4096 . <DIR> 4096 .. <DIR> 4096 test <DIR> 4096 bin28612 capture <DIR> 4096 driver110 .Xauthority <DIR> 4096 shell51 .profile3759 .bash_history <DIR> 4096 .ssh <DIR> 4096 bin_backup8192 boot_env.bin38351 imx6ull-14x14-emmc-7-1024x600-c.dtb379904 u-boot-imx6ull-14x14-ddr512-emmc.imx6497848 zImage =>在根文件系統中掛載fat分區
詳細步驟如下所示:
1 創建一個掛載點/myfat
mkdir myfat2 使用mount命令掛載,注意-t 選項的參數時vfat,不是ext2 和 ext4
mount -t vfat /dev/mmcblk1p1 /myfat/3 遍歷掛載點
ls /myfat/如果能夠成功看到里面的文件列表,說明掛載成功了。
然后就可以向其中寫入文件了。
將需要的文件復制到myfat文件夾中。
4 卸載掛載點
umount /myfat/5 將掛載命令放到一個腳本mount.sh中:
mkdir /myfat -p mount -t vfat /dev/mmcblk1p1 /myfat6 將卸載命令放到另一個腳本umount.sh中
umount /myfat三 使用ramdisk根文件系統
從fat分區啟動zImage
設置bootcmd
setenv bootcmd 'mmc dev 1 1;fatload mmc 1:1 80800000 zImage;fatload mmc 1:1 82000000 imx6ull-14x14-emmc-7-1024x600-c.dtb;mmc dev 1 2;ext4load mmc 1:2 83000000 /home/root/ramdisk.img;bootz 80800000 ?83000000:04000000 82000000;'設置bootargs
setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw'從ext4分區啟動zImage
設置bootcmd
setenv bootcmd 'mmc dev 1 2;ext4load mmc 1:2 80800000 /home/root/zImage;ext4load mmc 1:2 82000000 /home/root/imx6ull-14x14-emmc-7-1024x600-c.dtb;ext4load mmc 1:2 83000000 /home/root/ramdisk.img;;bootz 80800000 83000000:04000000 82000000;'設置bootargs
setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw'打印bootcmd
=> printenv bootcmd bootcmd=mmc dev 1 2;ext4load mmc 1:2 80800000 /home/root/zImage;ext4load mmc 1:2 82000000 /home/root/imx6ull-14x14-emmc-7-1024x600-c.dtb;ext4load mmc 1:2 83000000 /home/root/ramdisk.img;;bootz 80800000 83000000:04000000 82000000; =>打印bootargs
=> printenv bootargs bootargs=console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw =>四 nfs掛載根文件系統
進入uboot,設置ip地址
setenv ipaddr 192.168.5.25設置服務器的ip地址。
setenv serverip 192.168.5.6設置bootargs
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.5.6:/home/lkmao/nfsroot/buildrootfs,proto=tcp rw ip=192.168.5.25:192.168.5.6:192.168.5.1:255.255.255.0:::'
????????tymxc0改成自己的串口名字,這里的192.168.5.25是板子的ip地址,192.168.5.6是ubuntu主機的ip地址,/home/lkmao/nfsroot/buildrootfs是根文件系統在ubuntu主機中的目錄。照著改過來就行了,其他不用變。
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.5.6:/home/lkmao/nfsroot/buildrootfs,proto=tcp rw ip=192.168.5.25:192.168.5.6:192.168.5.1:255.255.255.0:::'另一種IP的配置,
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.11:/home/lkmao/nfsroot/buildrootfs,proto=tcp rw ip=192.168.0.3:192.168.0.11:192.168.0.1:255.255.255.0:::'設置bootcmd
setenv bootcmd 'mmc dev 1 1; fatload mmc 1:1 80800000 zimage;fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb;;bootz 80800000 - 83000000;'記得保存
saveenv從Tftp加載內核、設備樹、ramdisk.img
64M版本
setenv bootcmd 'tftp 80800000 zImage;tftp 82000000 emmc.dtb;tftp 83000000 ramdisk.img;bootz 80800000 83000000:04000000 82000000;'32M版本
setenv bootcmd 'tftp 80800000 zImage;tftp 82000000 emmc.dtb;tftp 83000000 ramdisk.img;bootz 80800000 83000000:02000000 82000000;' setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw'不使用ramdisk
setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 emmc.dtb; bootz 80800000 - 83000000;' setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.11:/home/lkmao/nfsroot/buildrootfs,proto=tcp rw ip=192.168.0.3:192.168.0.11:192.168.0.1:255.255.255.0:::'從根文件系統加載全部
因為特別需要,所以需要這么干。
setenv bootcmd 'mmc dev 1 2;ext4load mmc 1:2 80800000 /zImage;ext4load mmc 1:2 82000000 /emmc.dtb;ext4load mmc 1:2 83000000 /ramdisk.img;;bootz 80800000 83000000:04000000 82000000;' setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw'五 刪除密碼
????????直接在/etc/passwd文件和shadow文件刪密碼可以嗎?可以,但是刪除以后,ssh就登錄不上了。所以還是要老老實實的使用passwd命令來將密碼重置為空。
????????就是提示輸入密碼的時候,直接按回車鍵,這樣密碼就為空了。
# passwd root Changing password for root New password: Bad password: too short Retype password: passwd: password for root changed by root #刪除用戶
deluser lkmao刪除組
delgroup lkmao其他雜項
兩個重要的環境變量
LD_LIBRARY_PATH 和PATH
PS1的配置方式
在/etc/profile文件中:
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"if [ "$PS1" ]; thenif [ "`id -u`" -eq 0 ]; then # export PS1='# 'export PS1='\u@\h:\w# 'else # export PS1='$ 'export PS1='\u@\h:\w$ 'fi fiexport PAGER='/bin/more' export EDITOR='/bin/vi'# Source configuration files from /etc/profile.d for i in /etc/profile.d/*.sh ; doif [ -r "$i" ]; then. $ifi done unset i如果當前的用戶的id是0,就執行export PS1='\u@\h:\w# ',root用戶的id是0,普通用戶的id大于1000,普通用戶執行export PS1='\u@\h:\w# '。
umask.sh文件
其中的內容默認是
umask 022
新建一個文件a:
root@host:/etc/profile.d# touch a root@host:/etc/profile.d# ls -ls total 40 -rw-r--r-- 1 root root 0 Sep 7 2022 a新建文件的屬性是644,也就是說umask的計算方式如下
新建文件屬性+umsak = 666
就是644 + 022 = 666;
如果想新建文件屬性是664,那就將umask設置為002,實驗一下:
修改文件/etc/profile.d/umask.sh將其中的內容改為umask 002,
root@host:/etc/profile.d# touch b root@host:/etc/profile.d# ls -ls total 40 -rw-rw-r-- 1 root root 0 Sep 7 2022 b果然新建的文件屬性變為660了。
在開發板通過nfs掛載ubuntu的目錄
# mount -t nfs -o nolock 192.168.0.11:/home/lkmao/nfsroot/server /server總結
? ? ? ?一些總結。
總結
以上是生活随笔為你收集整理的uboot实践:uboot引导内核相关笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k8s的网络插件kube-flannel
- 下一篇: html5圣诞贺卡,用CorelDRAW