rootfs根文件系统创建脚本

echo "Create initrd.img"


dd  if=/dev/zero  of=/tmp/initrd.img  bs=1k  count=32768
#dd  if=/dev/zero  of=/tmp/initrd.img  bs=1k  count=131072
/sbin/mke2fs  -F  -v  -c  -i  2048  -m  0  /tmp/initrd.img
/sbin/tune2fs -c 0 /tmp/initrd.img




######################################################
RootfsPath=/AT91SAM9X25/rootfs
ObjPath=/AT91SAM9X25/rootfs/initrd
PkgsPath=/AT91SAM9X25/pkgs
KnlPath=/AT91SAM9X25/kernel
mkdir  $ObjPath
mount  -o  loop  /tmp/initrd.img  $ObjPath


######################################################


echo "mkdir"
cd      $ObjPath
mkdir bin dev etc lib mnt proc sbin tmp usr var jnsec_conf jnsec
mkdir lib/security lib/iptables lib/modules lib/modules/2.6.39
mkdir   usr/bin usr/sbin usr/lib usr/local
mkdir   usr/prg usr/modules usr/config usr/rsakey usr/reserved usr/userapp usr/hsmprg usr/userconfig
mkdir   etc/init.d etc/pam.d etc/xinetd.d  etc/boa
mkdir   var/lib var/lock var/lock/subsys var/log var/run var/tmp var/www
mkdir   var/log/boa
mkdir   usr/local/lib  usr/local/modules
#mkdir   tftpboot-136
#mkdir   nfsroot-73


chmod 777  tmp
chmod 777  var/tmp




######################################################


cd $KnlPath/linux-at91-linux-2.6.39-at91
make modules_install INSTALL_MOD_PATH=$ObjPath


######################################################




######################################################
echo "Create /bin & /sbin & /usr"


cd $PkgsPath/busybox/


#make ARCH=arm CROSS_COMPILE=/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi-
make install


cd   $ObjPath/usr/sbin


cp   $PkgsPath/mtd/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi/flashcp            $ObjPath/usr/sbin/
cp   $PkgsPath/mtd/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi/flash_lock         $ObjPath/usr/sbin/
cp   $PkgsPath/mtd/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi/flash_otp_info     $ObjPath/usr/sbin/
cp   $PkgsPath/mtd/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi/flash_unlock       $ObjPath/usr/sbin/
cp   $PkgsPath/mtd/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi/flash_erase        $ObjPath/usr/sbin/
#cp   $PkgsPath/mtd/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi/flash_eraseall     $ObjPath/usr/sbin/
#cp   $PkgsPath/mtd/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi/nandwrite      $ObjPath/usr/sbin/


#ln -s flash_erase erase
#ln -s flash_eraseall eraseall
#ln -s flashcp fcp
#ln -s flash_lock lock
#ln -s flash_unlock unlock




cp   $PkgsPath/xinetd/xinetd/xinetd            $ObjPath/usr/sbin/xinetd
cp   $PkgsPath/rzsz/rz $ObjPath/usr/sbin/rz
cp   $PkgsPath/rzsz/sz $ObjPath/usr/sbin/sz


#cp   $PkgsPath/ethtool/ethtool $ObjPath/bin


#cp   $PkgsPath/iptables/iptables         $ObjPath/usr/sbin/
#cp   $PkgsPath/iptables/iptables-save    $ObjPath/usr/sbin/
#cp   $PkgsPath/iptables/iptables-restore $ObjPath/usr/sbin/
#cp   $PkgsPath/iptables/iptables-xml     $ObjPath/usr/sbin/
#cp   $PkgsPath/iptables/ip6tables        $ObjPath/usr/sbin/


/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi-strip $ObjPath/usr/bin/*
/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi-strip $ObjPath/usr/sbin/*


######################################################


echo  "Create /dev"
cd    $ObjPath/dev/
mknod $ObjPath/dev/initrd b 1 250
mknod $ObjPath/dev/root b 253 0
chmod 660 $ObjPath/dev/initrd


mknod   -m   600   $ObjPath/dev/fb0   c  29  0
ln -s fb0  fb
mknod   -m   640   $ObjPath/dev/kmem  c   1  2


mknod   -m   600   $ObjPath/dev/psaux c  10  1
mknod   -m   666   $ObjPath/dev/ptyp0 c   2  0
mknod   -m   666   $ObjPath/dev/ptyp1 c   2  1
mknod   -m   666   $ObjPath/dev/ptyp2 c   2  2
mknod   -m   666   $ObjPath/dev/ptyp3 c   2  3
mknod   -m   666   $ObjPath/dev/ptyp4 c   2  4
mknod   -m   666   $ObjPath/dev/ptyp5 c   2  5
mknod   -m   666   $ObjPath/dev/ptyp6 c   2  6
mknod   -m   666   $ObjPath/dev/ptyp7 c   2  7


mknod   -m   666   $ObjPath/dev/ttyp0 c   3  0
mknod   -m   666   $ObjPath/dev/ttyp1 c   3  1
mknod   -m   666   $ObjPath/dev/ttyp2 c   3  2
mknod   -m   666   $ObjPath/dev/ttyp3 c   3  3
mknod   -m   666   $ObjPath/dev/ttyp4 c   3  4
mknod   -m   666   $ObjPath/dev/ttyp5 c   3  5
mknod   -m   666   $ObjPath/dev/ttyp6 c   3  6
mknod   -m   666   $ObjPath/dev/ttyp7 c   3  7






cp    -dpR    /dev/console     $ObjPath/dev/console
cp    -dpR    /dev/fd          $ObjPath/dev/fd
cp    -dpR    /dev/stdin       $ObjPath/dev/stdin
cp    -dpR    /dev/stdout      $ObjPath/dev/stdout
cp    -dpR    /dev/stderr      $ObjPath/dev/stderr
cp    -dpR    /dev/full        $ObjPath/dev/full
cp    -dpR    /dev/core        $ObjPath/dev/core
cp    -dpR    /dev/mem         $ObjPath/dev/mem
cp    -dpR    /dev/null        $ObjPath/dev/null
cp    -dpR    /dev/ptmx        $ObjPath/dev/
cp    -dpR    /dev/pts         $ObjPath/dev/
cp    -dpR    /dev/initctl     $ObjPath/dev/
cp    -dpR    /dev/ram         $ObjPath/dev/
cp    -dpR    /dev/ramdisk     $ObjPath/dev/
cp    -dpR    /dev/ram[0-1]    $ObjPath/dev/
cp    -dpR    /dev/tty         $ObjPath/dev/tty
cp    -dpR    /dev/ttyS[0-3]   $ObjPath/dev/
cp    -dpR    /dev/tty[0-3]    $ObjPath/dev/
cp    -dpR    /dev/zero        $ObjPath/dev/zero
cp    -dpR    /dev/random        $ObjPath/dev/random
cp    -dpR    /dev/urandom        $ObjPath/dev/urandom


mknod   -m   644   $ObjPath/dev/rtc    c  10  135
mknod   -m   644   $ObjPath/dev/mtd0   c  90  0
mknod   -m   644   $ObjPath/dev/mtd1   c  90  2
mknod   -m   644   $ObjPath/dev/mtd2   c  90  4
mknod   -m   644   $ObjPath/dev/mtd3   c  90  6
mknod   -m   644   $ObjPath/dev/mtd4   c  90  8
mknod   -m   644   $ObjPath/dev/mtd5   c  90  10




mknod   -m   644   $ObjPath/dev/mtdblock0  b 31 0
mknod   -m   644   $ObjPath/dev/mtdblock1  b 31 1
mknod   -m   644   $ObjPath/dev/mtdblock2  b 31 2
mknod   -m   644   $ObjPath/dev/mtdblock3  b 31 3
mknod   -m   644   $ObjPath/dev/mtdblock4  b 31 4
mknod   -m   644   $ObjPath/dev/mtdblock5  b 31 5


#ln  -s  mtd0  Boot
#ln  -s  mtd1  U-Boot
#ln  -s  mtd2  Reserved
#ln  -s  mtd3  UImage
#ln  -s  mtd4  Ramdisk
#ln  -s  mtd5  Modules


#ln  -s  mtdblock0   Boot_b
#ln  -s  mtdblock1   U-Boot_b
#ln  -s  mtdblock2   Reserved_b
#ln  -s  mtdblock3   uImage_b
#ln  -s  mtdblock4   RamDisk_b
#ln  -s  mtdblock5   Modules_b


#mknod   -m   666   $ObjPath/dev/usb           c 228 0
#mknod   -m   666   $ObjPath/dev/ECC c 220 0
#mknod   -m   666   $ObjPath/dev/keylib c 223 0
#mknod   -m   666   $ObjPath/dev/gpio c 224 0
#mknod   -m   666   $ObjPath/dev/ssx30f c 227 0


######################################################
echo "Create /etc"
######################################################
cp /etc/mime.types   $ObjPath/etc/


cat > $ObjPath/etc/group <<EOF
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin
tty:x:5:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
ftp:x:50:
nobody:x:99:
nogroup:x:99:
users:x:100:
EOF


######################################################
cat > $ObjPath/readme_jnsec <<EOF
user init file: /jnsec/jnsec_sysinit.sh
get file: tftp -g -r FileName -l FileName <tftp server IP>
eraseall the mtd disk: flash_erase /dev/mtd2 0 0
EOF


######################################################
cat > $ObjPath/etc/host.conf <<EOF
order hosts,bind
EOF


######################################################
cat > $ObjPath/etc/hosts <<EOF
127.0.0.1 localhost
EOF


######################################################


cat > $ObjPath/etc/prit <<EOF
EOF
######################################################
cat > $ObjPath/etc/inittab <<EOF
#
::sysinit:/etc/init.d/rcS
::restart:/sbin/init
::shutdown:/bin/umount -a -r
#::respawn:/bin/login ttyS0
#::respawn:/bin/login root
ttyS0::respawn:/bin/sh
#::respawn:/usr/sbin/boa
EOF


cp  -dpR  /etc/localtime  $ObjPath/etc/localtime
> $ObjPath/etc/mtab
> $ObjPath/etc/hosts.deny
> $ObjPath/etc/hosts.allow


######################################################
cat > $ObjPath/etc/nsswitch.conf <<EOF
passwd:     files
shadow:     files
group:      files
hosts:      files dns
ethers:     files
netmasks:   files
networks:   files
protocols:  files
services:   files
EOF


######################################################
cat > $ObjPath/etc/passwd <<EOF
root:x:0:0:root:/:/bin/sh
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
halt:x:7:0:halt:/sbin:/sbin/halt
ftp:x:14:50:FTP User:/
nobody:x:99:99:Nobody:/:
EOF


######################################################
> $ObjPath/etc/profile


######################################################
cat > $ObjPath/etc/protocols <<EOF
ip      0       IP      # internet protocol, pseudo protocol number
icmp    1       ICMP    # internet control message protocol
igmp    2       IGMP    # internet group multicast protocol
ggp     3       GGP     # gateway-gateway protocol
tcp     6       TCP     # transmission control protocol
pup     12      PUP     # PARC universal packet protocol
udp     17      UDP     # user datagram protocol
idp     22      IDP     # WhatsThis?
raw     255     RAW     # RAW IP interface
EOF






cat > $ObjPath/etc/init.d/rcS <<EOF
#!/bin/sh
/bin/mount -t proc proc /proc
/bin/mount -t devpts devpts /dev/pts




/usr/sys_start.sh


EOF
chmod 755 $ObjPath/etc/init.d/rcS




cat > $ObjPath/usr/sys_start.sh <<EOF
#!/bin/sh


ifconfig eth0 120.4.6.201
ifconfig eth0 netmask 255.255.255.0
ifconfig lo 127.0.0.1


mount -t jffs2 /dev/mtdblock2 /jnsec_conf
mount -t jffs2 /dev/mtdblock3 /jnsec


#telnetd


#/usr/sbin/xinetd -stayalive -reuse -pidfile /tmp/xinetd.pid




#telnetd password: hsm@jn06.china
#telnetd password: 123456


#login


if [ -f /jnsec/jnsec_sysinit.sh ]
then
echo Init JNSEC System
chmod +x /jnsec/jnsec_sysinit.sh
/jnsec/jnsec_sysinit.sh
fi


#login


#date -s 080800002008


EOF


chmod 755 $ObjPath/usr/sys_start.sh


######################################################
cat > $ObjPath/etc/resolv.conf <<EOF
nameserver 192.168.126.1
EOF
######################################################


cat > $ObjPath/etc/securetty <<EOF
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
ttyS0
ttyS1
console
ttyp0
ttyp1
ttyp2
ttyp3
ttyp4
ttyp5
ttyp6
ttyp7
EOF




######################################################
cat > $ObjPath/etc/services <<EOF
#
tcpmux          1/tcp
echo            7/tcp
echo            7/udp
discard         9/tcp           sink null
discard         9/udp           sink null
systat          11/tcp          users
daytime         13/tcp
daytime         13/udp
chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source
ftp-data        20/tcp
ftp             21/tcp
telnet          23/tcp
smtp            25/tcp          mail
time            37/tcp          timserver
time            37/udp          timserver
name            42/udp          nameserver
whois           43/tcp          nicname
domain          53/tcp
domain          53/udp
bootps          67/udp
bootpc          68/udp
tftp            69/udp
http            80/tcp
www             80/tcp
hostnames       101/tcp         hostname
EOF




######################################################
cat > $ObjPath/etc/shells <<EOF
/bin/sh
/bin/ash
/bin/bash
EOF


######################################################
cat > $ObjPath/etc/xinetd.conf <<EOF
#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/


defaults
{
        instances               = 60
        log_type                = SYSLOG authpriv
        log_on_success          = HOST PID
        log_on_failure          = HOST
        cps                     = 25 30
}


includedir /etc/xinetd.d


EOF




#root passwd: hsm@jn06.china
#root passwd: 123456
######################################################
cat > $ObjPath/etc/shadow <<EOF
root:KJpI/l1Gr9RBQ:16315:0:99999:7:::
#root:\$1\$6zBgZkHS\$hCdfmrAh3xVJliAEzsNrw.:13334:0:99999:7:::
#root:\$1\$D.nfqR83\$IRUzPR5pXqm5LOP/jdEMC.:13334:0:99999:7:::


bin:*:13222:0:99999:7:::
daemon:*:13222:0:99999:7:::
adm:*:13222:0:99999:7:::
lp:*:13222:0:99999:7:::
sync:*:13222:0:99999:7:::
shutdown:*:13222:0:99999:7:::
halt:*:13222:0:99999:7:::
news:*:13222:0:99999:7:::
operator:*:13222:0:99999:7:::
ftp:*:13222:0:99999:7:::
nobody:*:13222:0:99999:7:::
EOF


######################################################
cat > $ObjPath/etc/pam.d/chfn <<EOF
#%PAM-1.0
auth       sufficient   /lib/security/pam_rootok.so
auth       required     /lib/security/pam_stack.so service=system-auth
account    required     /lib/security/pam_stack.so service=system-auth
password   required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
EOF


######################################################
cat > $ObjPath/etc/pam.d/chsh <<EOF
#%PAM-1.0
auth       sufficient   /lib/security/pam_rootok.so
auth       required     /lib/security/pam_stack.so service=system-auth
account    required     /lib/security/pam_stack.so service=system-auth
password   required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
EOF


######################################################
cat > $ObjPath/etc/pam.d/ftp <<EOF
#%PAM-1.0
auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth       required     /lib/security/pam_stack.so service=system-auth
auth       required     /lib/security/pam_shells.so
account    required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
EOF


######################################################
cat > $ObjPath/etc/pam.d/kbdrate <<EOF
#%PAM-1.0
auth       sufficient   /lib/security/pam_rootok.so
auth       required     /lib/security/pam_console.so
account    required     /lib/security/pam_permit.so
EOF


######################################################
cat > $ObjPath/etc/pam.d/login <<EOF
#%PAM-1.0
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_stack.so service=system-auth
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_stack.so service=system-auth
password   required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
session    optional     /lib/security/pam_console.so
EOF


######################################################
cat > $ObjPath/etc/pam.d/other <<EOF
#%PAM-1.0
auth     required       /lib/security/pam_deny.so
account  required       /lib/security/pam_deny.so
password required       /lib/security/pam_deny.so
session  required       /lib/security/pam_deny.so
EOF


######################################################
cat > $ObjPath/etc/pam.d/passwd <<EOF
#%PAM-1.0
auth       required     /lib/security/pam_stack.so service=system-auth
account    required     /lib/security/pam_stack.so service=system-auth
password   required     /lib/security/pam_stack.so service=system-auth
EOF


######################################################
cat > $ObjPath/etc/pam.d/rexec <<EOF
#%PAM-1.0
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_stack.so service=system-auth
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_stack.so service=system-auth
EOF


######################################################
cat > $ObjPath/etc/pam.d/rlogin <<EOF
#%PAM-1.0
auth       sufficient   /lib/security/pam_rhosts_auth.so
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_stack.so service=system-auth
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_stack.so service=system-auth
password   required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
EOF


######################################################
cat > $ObjPath/etc/pam.d/rsh <<EOF
#%PAM-1.0
auth       required     /lib/security/pam_rhosts_auth.so
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
EOF


######################################################
cat > $ObjPath/etc/pam.d/ssh <<EOF
#%PAM-1.0
auth       required     pam_nologin.so
auth       required     pam_unix.so
auth       required     pam_env.so # [1]


account    required     pam_unix.so


session    required     pam_unix.so
session    optional     pam_lastlog.so # [1]
session    optional     pam_motd.so # [1]
session    optional     pam_mail.so standard noenv # [1]
session    required     pam_limits.so


password   required     pam_unix.so


# Alternate strength checking for password. Note that this
# requires the libpam-cracklib package to be installed.
# You will need to comment out the password line above and
# uncomment the next two in order to use this.
#
# password required       pam_cracklib.so retry=3 minlen=6 difok=3
# password required       pam_unix.so use_authtok nullok md5
EOF


######################################################
cat > $ObjPath/etc/pam.d/su <<EOF
#%PAM-1.0
auth       sufficient   /lib/security/pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient   /lib/security/pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required     /lib/security/pam_wheel.so use_uid
auth       required     /lib/security/pam_stack.so service=system-auth
account    required     /lib/security/pam_stack.so service=system-auth
password   required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
session    optional     /lib/security/pam_xauth.so
EOF


######################################################
cat > $ObjPath/etc/pam.d/system-auth <<EOF
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        sufficient    /lib/security/pam_unix.so likeauth nullok md5
auth        required      /lib/security/pam_deny.so
account     sufficient    /lib/security/pam_unix.so
account     required      /lib/security/pam_deny.so
password    required      /lib/security/pam_cracklib.so retry=3
password    sufficient    /lib/security/pam_unix.so nullok use_authtok md5
password    required      /lib/security/pam_deny.so
session     required      /lib/security/pam_unix.so
EOF




######################################################
cat > $ObjPath/etc/xinetd.d/ftpd <<EOF
# description: The FTP server serves FTP connections.
# It uses normal, unencrypted usernames and passwords for authentication.
service ftp
{
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/in.ftpd
        server_args             = -l -a
        log_on_success          += DURATION USERID
        log_on_failure          += USERID
        nice                    = 10
        disable         = no
}
EOF


######################################################
cat > $ObjPath/etc/xinetd.d/ssh <<EOF
service ssh
{
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/in.ftpd
        server_args             = -l -a
        log_on_success          += DURATION USERID
        log_on_failure          += USERID
        nice                    = 10
        disable         = no
}
EOF


######################################################
cat > $ObjPath/etc/xinetd.d/telnet <<EOF
# default: on
# description: The telnet server serves telnet sessions;
# it uses unencrypted username/password pairs for authentication.
service telnet
{
        disable = no
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/telnetd
#        server_args     = -h
        log_on_failure  += USERID
}
EOF


chmod 600 $ObjPath/etc/securetty
chmod 600 $ObjPath/etc/shadow
chmod 600 $ObjPath/etc/xinetd.conf


######################################################


echo "Create /lib"


cp  -dpR    /AT91SAM9X25/arm-2010q1/arm-none-linux-gnueabi/libc/lib/* $ObjPath/lib


mkdir $ObjPath/lib/modules/




/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi-strip       $ObjPath/lib/*.so
#/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi-strip       $ObjPath/lib/security/*.so
#/AT91SAM9X25/arm-2010q1/bin/arm-none-linux-gnueabi-strip       $ObjPath/usr/local/lib/iptables/*.so


######################################################
cd /


umount  $ObjPath
rm -f /tmp/initrd.img.gz


echo "Zip initrd.img Begin...."
gzip -v9  /tmp/initrd.img


ls   -l   /tmp/initrd.img.gz


rm -rf $RootfsPath/initrd
rm $RootfsPath/ramdisk_9x25.gz


mv /tmp/initrd.img.gz $RootfsPath/ramdisk_9x25.gz
ls   -l   $RootfsPath/ramdisk_9x25.gz
echo "$RootfsPath/ramdisk_9x25.gz OK"


echo ""
echo "Ramdisk for ARM9x25 Create OK."
echo ""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李洛克07

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值