u@home:~$

  • 编译调试sparc的日常

    之前的blog上都有详细的步骤,当时把过程中遇到的问题也都放到一起了。 现在这几天连着编译运行sparc,步骤简化如下。 一次开几个terminal term0 opensparc source term1 u@unamed:~/prjs/OpenSPARCT1$ source OpenSPARCT1.bash u@unamed:~/prjs/OpenSPARCT1$ source ../../Xilinx91i/settings.sh u@unamed:~/prjs/OpenSPARCT1$ rxil -device=XC5VLX110T sparc term2 u@unamed:~/prjs/OpenSPARCT1$ cp /home/u/prjs/OpenSPARCT1/design/sys/iop/sparc/xst/XC5VLX110T/sparc.ngc design/sys/edk/pcores/iop_fpga_v1_00_a/netlist/ term3 u@unamed:~/prjs$ ./startxps.sh Hardware -> Clean Netlist Hardware -> Clean Bits Hardware -> Clean Hardware Hardware -> Generate Bitstream term4 u@unamed:~/prjs/testaceos$ source ~/Xilinx/10.1/ISE/settings64.sh u@unamed:~/prjs/testaceos$ source ~/Xilinx/10.1/EDK/settings64.sh u@unamed:~/prjs/testaceos$ xmd...

  • 硬盘没空间了,/var/log占了很多

    syslog占了40多G,不停的清就不停的涨。 不知道什么情况,网上搜到清理的方法,看来这个syslog还不能直接删。 sudo sh -c 'cat /dev/null > /var/log/syslog' journal也占了4G多。 检查当前journal使用磁盘量 journalctl –disk-usage 清理方法可以采用按照日期清理,或者按照允许保留的容量清理,只保存2天的日志,最大500M journalctl –vacuum-time=2d journalctl –vacuum-size=500M 如果要手工删除日志文件,则在删除前需要先轮转一次journal日志 systemctl kill –kill-who=main –signal=SIGUSR2 systemd-journald.service 要启用日志限制持久化配置,可以修改 /etc/systemd/journald.conf SystemMaxUse=16M ForwardToSyslog=no 然后重启 systemctl restart systemd-journald.service 检查journal是否运行正常以及日志文件是否完整无损坏 journalctl –verify 用journalctl看日志,有很多gnome windows messaging。 可能是我太久没重启了,gnome确实有点问题。

  • 慢慢来,一次一次的试,盲调

    现在的情况是没法达成预期的结果,但在SunOS 5.11上,指令可以被改乱从而系统就跑乱了。 逆向的结果,这个版本的libc里的strcmp,如果字符串地址4字节对齐,就一次读4字节,否则就一个字节一个字节的读。 而ubuntu7.10的strcmp,是字符串如果不是8字节对齐,就一字节一字节比较,用ldub;否则就是ldx,一次8字节。 这个系统内核是64位,用户层程序都是32位,我怀疑 malloc得到的buffer是4字节对齐。这样strcmp就只能一字节一字节的比较了。 测试0 ** uty_opensolaris_patchbitgen1c4t_test36.ace ** 测试SunOS 5.11,只要检测到输入的字符分别是0000和root,sparc就把后面所有的sub操作结果都返回0,这样系统肯定是运行不正常了。 这可以反推出sub指令成功接到了0000和root。 // uty: test // cout64_e should be 1 // 0x726f6f74 root assign backdoor_on_keyword = ((32'h30303030 == byp_alu_rs1_data_e[31:0]) && (32'h726f6f74 == byp_alu_rs2_data_e[31:0])) || ((32'h30303030 == byp_alu_rs2_data_e[31:0]) && (32'h726f6f74 == byp_alu_rs1_data_e[31:0])); assign backdoor_off_keyword = ((32'h30303031 == byp_alu_rs1_data_e[31:0]) && (32'h726f6f74...