OK, after hours of work I fixed the problem.
To boot from u-disk, edit /boot/uEnv.txt and change the partition label, for example, modify #APPEND=root=LABEL=ROOT_EMMC to #APPEND=root=LABEL=ROOTFS
To reduce the image size, use resize2fs to shrink the file system, and use fdisk to change partition table, then the image file can be truncated from 5000MiB to 2.2GiB, which saves much space and time. It's very useful when you use a low-speed u-disk or less than 5000MiB.